오랜만에 웹 해킹 관련 글을 포스팅합니다..ㅋ
그동안 악성코드 분석에 심취해 있어서 잠시 손을 놓고 있었네요..
각설하고 본론으로 넘어가겠습니다.

웹 해킹을 하기위해서 반드시 알아야 할 XSS 에 대하여 알아보도록 하겠습니다.

:: XSS ::
XSS는 크게 Reflected XSS Stored XSS 두 가지로 분류할 수가 있습니다.

Reflected XSS 는 공격 스크립트가 삽입 된 URL을 사용자가 쉽게 확인할 수 없도록 변형시킨 후
이메일이나 다른 웹 사이트 등에 클릭을 유도하도록 하는 방법이며,

Stored XSS 는 스크립트를 웹 서버에 저장하여 -일반 게시판 등에 공격자가 게시글에 스크립트를 삽입
사용자가 해당 페이지를 클릭하는 순간 스크립트가 실행되도록 하는 방법입니다.


그럼, 간단하게 테스트를 해보도록 하겠습니다.

:: Reflected XSS

우선 간단하게 값을 입력 받아서 출력해주는 페이지를 작성해보겠습니다.










위의 그림을 보시면 입력값을 그대로 출력해주는 단순한 페이지이며 공격자는 해당폼에
스크립트를 삽입하여 실행여부를 확인합니다.






스트립트를 삽입 시 필터링이 되지 않고 실행이 되는 것을 확인할 수 있습니다.

이제, 공격자는 위의 주소를 사용자에게 전달해서 클릭을 유도하도록 해야되는데
위의 주소는 사용자가 쉽게 파악이 가능하기 때문에 클릭을 유도하기가 쉽지 않습니다.
그래서 사용자가 눈치채지 못하도록 아래와 같이 인코딩을 하여 클릭을 유도하게 되죠..

- 인코딩 전
hxxp://192.168.1.2/xss.php?word=<script>alert('XSS TEST');</script>

- 인코딩 후
hxxp://192.168.1.2/xss.php?word=%3C%73%63%72%69%70%74%3E%61%6C%65%72
%74%28%27%58%53%53%25%32%30%54%45%53%54%27%29%3B%3C%2F%73%63%72%69%70%74%3E







:: Stored XSS

웹 사이트의 게시판에 스크립트를 삽입하여 사용자가 해당 글을 클릭하면 스크립트가 실행되도록 합니다.









:: 보안 ::

XSS 공격은 입력값에 대한 검증이 제대로 이루어지지 않아 발생하는 취약점이기 때문에
사용자의 모든 입력값에 대하여 서버측에서 필터링 처리를 해주어야 합니다.

         From           To 
           <          &lt; 
            >          &gt;
            (         &#40;
            )         &#41;
            #         &#35;
            &         &#38;