1. 추가된 속성 및 태그를 이용한 XSS(Cross-Site Scripting) 공격
XSS(Cross-Site Scripting)는 게시판이나 웹 메일 등에 JavaScript와 같은 스크립트 코드를 삽입 해 개발자가 고려하지 않는 기능이 작동하게 하는 공격이다.
가. 사용자가 특정 사이트를 신뢰한다는 점을 이용해 공격한다.
나. 악성코드가 클라이언트에서 발생한다.
다. XSS 공격의 유형
1) Reflected XSS
가) XSS 공격을 위한 스크립트를 포함 한 URL을 사용자에게 노출시킨다.
나) 사용자가 해당 URL을 클릭 할 경우, 스크립트가 포함된 URL을 통해 Request를 서버로 전송한다.
다) 웹 서버에서는 해당 스크립트에 대한 Response를 전송하게 된다.
2) Stored XSS
가) 웹 사이트의 게시판에 스크립트를 삽입하여 공격하는 방식이다.
나) 게시판에 스크립트를 삽입한 후 사용자가 해당 게시글을 클릭하도록 유도한다.
다) 사용자가 게시글을 확인함으로써 URL에 대한 요청을 서버에 전송하게 된다.
라) 서버에서 스크립트를 포함한 Response를 전송하며 공격이 수행된다.
라. XSS 위험성
1) 사용자의 쿠키 정보 및 세션 ID 획득을 할 수 있다.
2) 시스템 관리자의 권한을 획득할 수 있다.
3) 사용자게에 악성 스크립트가 있는 URL을 클릭하도록 유도해 학성 프로그램을 다운받는 사이트로 유도할 수 있다.
4) 거짓 페이지를 노출해 개인 정보를 유출 할 수 있다.
마. XSS 방지 방법
1) script 문자 필터링
가) XSS 공격은 입력값에 대한 검증이 제대로 이루어지지 않아 발생하는 문제점인데, 사용자의 모든 입력값에 대하여 클라이언트, 서버 측에서 필터링을 해주어야 한다.
나) innerHTML 속성이 아닌 textContent 속성을 이용하여 마크업이 아닌 이스케이프로 처리된 텍스트로 코드를 처리해야 한다.
*이스케이프로 처리된 텍스트
& => &
' => '
" => "
< => <
> => >
/ => /
2. CSRF(Cross-site Request Forgery)
가. 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 하여 특정 웹페이지를 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격방법을 의미한다.
나. 특정 사이트가 사용자의 브라우저를 신뢰한다는 점을 이용해 공격하는 방법이다.
다. 악성코드가 서버에서 발생한다.
라. CSRF를 이용해 공격하는 과정은 다음과 같다. (2008년 옥션 해킹 사고를 예로 기록하겠습니다.)
1) 관리자 중 한명이 관리 권한을 가지고 회사내에서 작업을 하던 중 메일을 조회한다.
2) 이때 로그인이 이미 되어있고, 관리자로서의 유효한 쿠키를 갖고 있다고 가정한다.
3) 공격자는 아래와 같은 태그가 들어간 코드가 담긴 이메일을 보낸다.
4) 관리자가 이메일을 열어볼 때, 이미지 파일을 받아오기 위해 URL이 열린다.
5) 공격자가 원하는 대로 관리자의 계정이 id와 pw 모두 admin인 계정으로 변경된다.
마. CSRF 방지 방법
1) Referrer 검증
가) request 헤더에 있는 요청을 한 페이지의 정보가 담긴 referrer 속성을 검증하여 차단한다.
나) 같은 도메인 상에서 요청이 들어오지 않는다면 차단하도록 한다.
2) CSRF Token 사용
가) 랜덤한 수를 사용자의 세션에 저장하여 사용자의 모든 요청에 대하여 서버단에서 검증하는 방법이다.
3) CAPTCHA 사용
가) 캡차이미지상의 숫자 or 문자가 아니라면 해당 요청을 거부하는 것이다.
'기타' 카테고리의 다른 글
대칭키 & 공개키 & SSL (0) | 2020.01.04 |
---|---|
TCP - 3way handshake & 4way handshake (0) | 2020.01.04 |
CORS(Cross-origin resource sharing) (0) | 2020.01.03 |
데브옵스(DevOps) (0) | 2020.01.02 |
TDD(Test Driven Development) (0) | 2020.01.02 |