5/02/2016

[WEB HACKING] DotDotPwn - The Path Traversal Fuzzer(DDP를 이용한 Path Traversal)


Path Traversal , Directory Traversal을 좀 더 쉽게 테스팅할 수 있는 Traversal 전용 Fuzzer - DotDotPwn에 대한 내용으로 진행할까 합니다. 이 툴은 현재 Kali Project에도 속해있을 정도로 유명하고 잘 사용되는 툴 입니다. 잘 익혀두면 정말 필요할 때 알맞게 사용하실 수 있죠.

Install DDP(DotDotPwn) 

일단 git을 통해 설치해줍니다.
#> git clone https://github.com/wireghoul/dotdotpwn.git

DotDotPwn은 perl로 만들어진 툴이며 여러가지 모듈이 필요합니다. 하나하나 모자라는 모듈에 대해 apt 같은 패키지 매니저로 설치할수도 있지만 cpan을 이용하면 쉽게 설치가 가능합니다.

#> cpan
 + install Net:FTP
 + install TFTP
 + install Time:HiRes
 + install Socket
 + install IO:Socket
 + install Getopt:Std
 + install Switch

일단 명령행에서 cpan을 치면 대화형 콘솔로 진입합니다. 여기서 install 명령을 써서 패키지를 설치할 수 있는데 위에 해당 툴에서 필요한 패키지를 하나한 설치해줍니다.
(아래 이미지 처럼 cpan 내부에서 install 을 이용해서 설치해야합니다.)



또 다른 방법으로는 아래와 같이 apt-get 을 이용한 설치가 있습니다.
다만 정확한 설치를 위해서는 cpan을 통해 설치하는 것이 좋을것 같네요.

#> apt-get install libswitch-perl
#> apt-get install libnet-tftp-perl

#> perl dotdotpwn.pl
#################################################################################
#                                                                               #
#  CubilFelino                                                       Chatsubo   #
#  Security Research Lab              and            [(in)Security Dark] Labs   #
#  chr1x.sectester.net                             chatsubo-labs.blogspot.com   #
#                                                                               #
#                               pr0udly present:                                #
#                                                                               #
#  ________            __  ________            __  __________                   #
#  \______ \    ____ _/  |_\______ \    ____ _/  |_\______   \__  _  __ ____    #
#   |    |  \  /  _ \\   __\|    |  \  /  _ \\   __\|     ___/\ \/ \/ //    \   #
#   |    `   \(  <_> )|  |  |    `   \(  <_> )|  |  |    |     \     /|   |  \  #
#  /_______  / \____/ |__| /_______  / \____/ |__|  |____|      \/\_/ |___|  /  #
#          \/                      \/                                      \/   #
#                               - DotDotPwn v3.0 -                              #
#                         The Directory Traversal Fuzzer                        #
#                         http://dotdotpwn.sectester.net                        #
#                            dotdotpwn@sectester.net                            #
#                                                                               #
#                               by chr1x & nitr0us                              #
#################################################################################

Usage: /home/noon/Noon/dotdotpwn/dotdotpwn.pl -m <module> -h <host> [OPTIONS]
Available options:
-m Module [http | http-url | ftp | tftp | payload | stdout]


DDP(DotDotPwn)을 이용하여 Path Traversal Test하기

자 이제 ddp를 이용해서 traversal 에 대해 fuzzing 하는법을 알아볼까합니다.
솔직히 정교하게 필터링을 우회하려면 직접 필터링 규칙을 유추해서 푸는것이 제일 좋습니다.
로그도 적고 성공률도 높아요. 그러나 귀찮을 경우도 있고, 혹시나 놓치는 부분이 있을 수 있기 때문에 이러한 툴도 사용하게 되지요.

#> ddp | grep Usage
Usage: /home/noon/Noon/dotdotpwn/dotdotpwn.pl -m <module> -h <host> [OPTIONS]

#> ddp | grep Module
-m Module [http | http-url | ftp | tftp | payload | stdout]


Usage 중 잘 알아야할 것을 봤습니다. 일단 사용 방법과 모듈 종류입니다.

간단하게 보면 모듈/호스트 등의 설정을 주고 테스팅을 진행할 수 있습니다.
그럼 Fuzzing 작업을 진행하겠습니다.

크게 옵션 몇개에 대해 더 알고가야 편합니다.

1. -h 
 이 옵션은 타켓 호스트를 지정하는 옵션입니다.
-h 127.0.0.1

2. -u 
 이 옵션은 URL을 지정합니다. 여기에 패턴이 들어갈 부분을 지정해줍니다.
 패턴 부분은 아래와 같이 TRAVERSAL 이라는 문구로 지정할 수 있습니다.
-u http://127.0.0.1/test.php?file=TRAVERSAL

3. -m 
 이 옵션을 모듈을 지정합니다. http 인지, ftp인지 등등 지정이 가능하죠.
-m http-url  // [http | http-url | ftp | tftp | payload | stdout] 

4. -k 
 이 옵션은 탐지할 문자열을 의미합니다. /etc/passwd 파일을 목표로 한다면 아래와 같이 지정이 가능하죠.
-k "root:"

옵션을 살펴봤으니 직접 돌려봅니다.

#> ddp -m http-url -h 127.0.0.1 -u http://127.0.0.1/lib/file_download.asp?FilePath=TRAVERSAL -k HOSTS

위를 보면 http-url 모듈을 이용하고 호스트는 localhost, url은 해당 url
k 옵션을 이용해 문자열 탐지를 사용하였습니다. hosts 파일을 로드했을 때 주석을 읽어오면 정탐으로 보도록 했죠.

Output 은 굉장히 심플합니다.
로그중에서는 취약한 코드로 탐지된 데이터에 대해 VULNABLE이라고 명시해주고, 마지막에 간략하게 Report 형태로 제공합니다.

일반적으로 Traversal 는 필터링 패턴을 파악하고 우회구문을 만드는 것이 매력 포인트이자 좋은 방법이지만 때때로 우리는 귀찮을때가 있습니다. DDP 같은 Fuzzer를 이용해 쉽게 테스팅하는 것도 좋은 방법중에 하나죠 :)


HAHWUL

Security engineer, Gopher and H4cker!

Share: | Coffee Me:

0 개의 댓글:

Post a Comment