728x90
웹 10대 취약점
- 크로스사이트 스크립팅(XSS)
- 설명 : 키가 되는 쿠키를 탈튀(사이트가 이동되면 자동으로 들어온다)해서 동일 사이트에 탈튀한 쿠키로 접속
- 검사방법 : 게시판 내용물에 <script> 태그로 alert() 명령어를 입력해 본다.
- 조치사항 : 서버에서 클라이언트로 전송되는 모든 데이터는 프레임워크에 의해 이스케이핑된다.
- 입력시 보정 : AOP등을 사용해서 아예 입력시 이스케이핑을 한 후 DB에 입력한다.
- 출력시 보정(추천) : 사용자 입력값을 HTML로 보여줄 떄는 프레임워크에서 지원 해주는 이스케이핑 되는 태그를 사용, 만약 안해준다면 Ajax등 공용 라이브러리에서 이스케이핑
- 인젝션 취약점
- 설명 : SQL변수를 조작해서 SQL 실행구문 변경
- 프레임웍이 발달한 요즘 거의 없는 현상 like문 사용시 _나 %는 막아야 할 수 있음
- Hibernate를 쓰면 원천적으로 봉쇄된다.(native를 사용하지 않는 한..)
- 악성파일 실행(디렉토리 리스팅 취약점)
- 설명 : 공격용 jsp등을 업로드해서 서버에서 이것을 실행하는것
- 조치사항 :
- WEB-INF로만 or NAS로만 or AWS S3로만 제한한다.
- 업/다운로드시 파일명 체크를 실시한다.
- 웝루트 이후로 어떠한 jsp파일도 오지 못하게 한다.(주기적인 자동체크 실행)
- 조치사항 : 모든요청사항을 필터링하며 서버측 실행코드는 모두 WEB-INF이상에 놓인다.
- 불안전한 직접객체 참조
- 설명 : DB의 PK등을 클라이언트 또는 URL로 접근 가능하게 저장 (의도되지 않은 접근 수행)
- 해결 :
- 모든 요청은 화이트 리스트에 의해 인증 절차를 거치는 전수검사를 수행한다.
- 모든 최종벨리데이션은 서버에서 한다.
- DB업데이트시 select/update를 사용하여 권한을 검사 후 필요한것만 업데이트한다.
- 크로스사이트 요청 변죠
- 설명 : 요청을 취약한 웹사이트로 보내게 하여 브라우저가 악의적인 수행을 하도록 함
- XSS와 동일 A가 악의적인 게시물@를 올리면 B가 이것을 읽을때 @에 있던 스크립트가 작동하여 B권한으로 게시물이 등록 된다.
- 하지만 요즘 크롬,웹웨일 등 브라우져들이 버전 업 되면서 기본 보안규칙이 수정됨에 따라 잘 발생하지 않음
- 해결 :
- XSS와 동일하게 해결
- 세션값 이외에 고유한 랜덤 쿠키값을 추가 생성해서 항상 히든폼에 들고 다님
- 세션과 히든폼의 값을 동시에 확인하여 인증을 함
- 공격자는 히든폼 값을 알지 못함으로 서버에 명령을 내릴 스크립트 작성하지 못함
- 설명 : 요청을 취약한 웹사이트로 보내게 하여 브라우저가 악의적인 수행을 하도록 함
- 정보 유출 및 부적절한 오류
- 설명 : 코딩시 내부 문제 또는 의도하지 않게 내부작업/개인정보 유출
- 해결 : 이건 개발자가 코딩을 개념있게 하는 수 밖에 없음
- 취약한 인증 및 세션관리
- 해결 :
- 간단한 or 연속된 비밀번호는 입력 불가능하도록 조치
- 자동 로그인 기능, 연계 로그인 기능 구현시 주의
- 쿠키에 민감한 자료를 저장하지 말거나 혹은 암호화 해서 저장한다.(서버 사이드에서만 쿠키를 사용할 경우에 해당)
- 일반적으로 세션관리가 엉터리로 될리는 거의 없기도 함
- 해결 :
- 불안전한 암호화 저장
- 일반적으로 사용자의 id/비번/메일/주민번호/카드번호 등이 해킹의 가장 큰 수확물임
- 암호/주민번호 등의 해시화/암호화 저장
- 불안전한 통신
- 설명 : 사용자의 입력정보가 패킷에 그대로 노출
- 해결 : 로그인/계좌번호 입력 등 노출되면 안되는곳에는 반드시 SSL로 통신
- URL 접속 제한 실패
- 해결 : 기본 보안 프레임워크 사용
웹 공격에 대한 기본
- 네트워크 공격
- Snppfing : 정상인척 하는것, 포괄적인 의미로서, 다른공격들의 최종 목표는 이것
- Sniffing : 패킷을 가로 채는것
- Hijecking : 정보를 가로챈 후 변조해서 보내는것
- SSL을 사용한 경우 내용을 복호화 하지는 못하지만, 그대로 복사해서 전송은 가능하다
- IP와 인증정보를 함계 암호화 하는 방식으로 해경 가능
- 쿠키가 없는 딥링크를 연속적으로 전송 후 응답을 기다리지 않고 소켓 연결을 종료
- 상태 서버는 매 연결마다 세션을 만드느라 많은 비용을 소모함
- 그리고 이는 web.xml에 기록된 시간 동안 누적된다.
- 특히 봇이 들어오는 경우에도 동일하게 세션을 생성하는것 역시 문제
- 봇 관리
- 공인된 봇 정책을 먼저 사용한다 robots.txt등
- 공인된 대부분의 봇은 역방향 DNS항목을 지닌 합법적인 IP주소에서 온다. 이 IP를 차단한다.
- 이용약관에 개인/비상업용 목적에 의해서만 사용할 수 있다고 적은 뒤 법적인 조치를 가한다.
- 악질적인 봇은 쿠키를 들고다니지 않는다.
- 초당 세션 10개를 만드는 검색 엔진이 있을 정도
- DDos 방버
- 대부분 하나의 소스 IP에서 일분당 15개의 연결로 제한 한다. Ajax남발 금지
- Email 딥링크
- 동시 다발적으로 발송한 E-mail이 특정 서버의 참조 url을 가질때 동시에 수백만명이 메일을 열어본다면 한방에 훅간다.
- ex) Xbox360의 선주문 메일은 원본서버로의 막대한 이미지/자바스크립트 다운로드 요청을 하게 되어 순식간에 다운 된다.
- 용어
- 스크립트 카디 : 스스로 공격수단을 만들지는 못하지만 진짜 크래커가 만든 도구를 내려받아서 사용한다
- 메모리 덤프 ㅣ 메모리를 덤프 뜨면 메모리상에 들어가 있는 비밀번호가 노출 된다(근데 그럴일은 별로 없을것)
관련 글 |
|
저의 글을 읽어 주셔서 감사합니다. 오늘도 즐거운 하루 보내세요.
저의 글이 조금이나마 도움이 되셨다면 로그인이 필요 없는 공감♥ 한번 꾸욱 눌러주세요 하하~
728x90
'인프라' 카테고리의 다른 글
[ 인프라 ] linux, CentOS의 TimeZone 변경 (0) | 2020.11.28 |
---|---|
[ Tomcat ] linux 로그 설정 (0) | 2020.11.27 |