인터넷 서핑 중 괜찮은 XSS 관련 플래시 영상이 있어 소개 해 드립니다.


해외 플래시이긴 하지만 처음 입문하시는 분들도 아~~주 쉽게 이해 될 만큼 재미있게 만들었네요.

웹 패킷 흐름이나 request/response 등 세세한 부분까지 신경 썼다는게 보입니다.


간단하게나마 공격 방법에 대하여 쉽게 말씀드리면,

- XSS : 악성스크립트가 삽입 된 게시글 클릭을 유도하여 사용자의 정보(쿠키)를 탈취하는 방법이구요,


- CSRF : XSS와 비슷하지만 악성스크립트가 삽입 된 게시글을 클릭하게 되면 사용자가 의도하지 않은 행위,

즉, 글쓰기가 된다던지 혹은 물품구매가 되도록 하는 공격 방법입니다.



[XSS 보러가기]


[CSRF 보러가기]









10월 21일 오픈한 워게임 사이트입니다.
홈페이지도 심플하네요..

여러가지 다양한 모의해킹을 시도해 보실 수 있습니다.

관심 있으신 분들은 즐 겜 하세요~






 소개

최근 Qualys Security Labs 보안전문가 Sergey Shekya 이 발표한 Slow HTTP DoS 공격은 정상적인 요청을 웹 서버가 요청을 느리게 읽도록 해서 서버가 반응할 수 없도록 만들어 버리는 공격이라고 소개하고 있습니다. 다시 말해, 웹 서버를 다운 시키기 위해 다수의 좀비 PC를 만들지 않아도 된다는 말이죠..

소개는 대충 이정도로 하고, 어떻게 동작하는지 테스트를 해보았습니다.



 준비물

 - Slow HTTP DoS 공격을 하기 위한 준비물
1. Apache 웹 서버
2. SlowHTTPTest tool (작성중인 시점에 최신버전은 1.3 버전입니다.)
3. 공격 시도할 리눅스 서버



 인스톨

# wget http://slowhttptest.googlecode.com/files/slowhttptest-1.3.tar.gz
# tar zxvf slowhttptest-1.3.tar.gz
# cd slowhttptest-1.3
# ./configure
# make;make install



 테스트

# slowhttptest -c 1000 -B -i 100 -r 300 -s 10240 -u hxxp://192.168.xx.xx -x 20



Detailed options :

-a start start value of ranges-specifier for range header test
-b bytes limit of range-specifier for range header test
-c number of connections limited to 1024
-H, B, or R specify to slow down in headers section or in message body.
            -R enables range test
-g generate statistics in CSV and HTML formats, pattern is slow_xxx.csv/html,
   where xxx is the time and date
-i seconds interval between follow up data in seconds, per connection
-l seconds test duration in seconds
-o file custom output file path and/or name, effective if -g is specified
-r connections per second connection rate
-s bytes value of Content-Length header, if -B specified
-t verb custom verb to use
-u URL target URL, the same format you type in browser, e.g https://host:port
-v level verbosity level of log 0-4
-x bytes max length of follow up data






위 명령어를 실행 하면 어떤 옵션을 사용하고 있는지 정보가 나오며 설정된 옵션 값으로 서버에 공격을 시도하고 있습니다. 대략적인 옵션 값을 보면, 공격 타입은 Slow Body 타입이고 최대연결 수를 1000, 헤더길이는 10240으로 초당 연결을 300, 240초 동안 5초 간격으로 수행하도록 되어 있습니다.








위의 이미지에서 정상호출과 비정상호출의 차이점을 확인 할 수 있으며, 공격 시 웹 페이지에 접속 시도하면 응답시간이 느려 페이지 로딩 시간이 길어지며, 결국 페이지가 응답하지 않는 것을 볼 수 있습니다.

 
 

 
실제 테스트하는 영상을 보시면 이해가 더 빠르실 거 같아 관련 영상 링크 합니다.
 














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

웹 해킹을 하기위해서 반드시 알아야 할 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;



네로아에서 운영하는 문제풀이 형식의 사이트 이며, 회원가입 후 이용하실 수가 있습니다.

http://www.neroa.com


Web Application의 보안을 일깨워 주고 각종 취약점을 문제풀이 형식으로 익힐 수 있도록 되어 있으며

더이상 우리나라가 해킹 경유지로 이용되지 않도록 한다는 좋은 목적을 가지고 제작되어진 만큼

열씨미 풀어 봅시다~






IBM에서 만든 온라인 뱅킹 데모 사이트 이며

여기서 SQL Injection이나 XSS 등을 연습하기에 좋은 사이트 입니다.

http://demo.testfire.net



초보자 입장에서 간단하게 SQL Injection을 테스트 하는 방법을 알려드리면..

상단의 Sign In을 클릭하여 로긴 Form에 ' or 'a'='a' 을 입력 해봅니다.

 



기본적인 SQL Injection은 에러정보를 통하여 이루어지므로

어떤 에러가 출력 되는지 확인하여 우회가 가능하도록 수정해보시면 자기도 모르게 로긴이 되어 있을 겁니다..ㅋ



약간(?)의 힌트를 드리면 username와 password의 값들이 ' 로 쌓여 있네요..