[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
DDP(DotDotPwn)을 이용하여 Path Traversal Test하기
자 이제 ddp를 이용해서 traversal 에 대해 fuzzing 하는법을 알아볼까합니다. 솔직히 정교하게 필터링을 우회하려면 직접 필터링 규칙을 유추해서 푸는것이 제일 좋습니다. 로그도 적고 성공률도 높아요. 그러나 귀찮을 경우도 있고, 혹시나 놓치는 부분이 있을 수 있기 때문에 이러한 툴도 사용하게 되지요.
#> ddp | grep Usage
Usage: /home/noon/Noon/dotdotpwn/dotdotpwn.pl -m
#> ddp | grep Module | ||||
-mModule [http | http-url | ftp | tftp | payload | stdout] |
Usage 중 잘 알아야할 것을 봤습니다. 일단 사용 방법과 모듈 종류입니다.
간단하게 보면 모듈/호스트 등의 설정을 주고 테스팅을 진행할 수 있습니다. 그럼 Fuzzing 작업을 진행하겠습니다.
크게 옵션 몇개에 대해 더 알고가야 편합니다.
- -h 이 옵션은 타켓 호스트를 지정하는 옵션입니다.
-h 127.0.0.1
- -u 이 옵션은 URL을 지정합니다. 여기에 패턴이 들어갈 부분을 지정해줍니다. 패턴 부분은 아래와 같이 TRAVERSAL 이라는 문구로 지정할 수 있습니다.
-u http://127.0.0.1/test.php?file=TRAVERSAL
- -m 이 옵션을 모듈을 지정합니다. http 인지, ftp인지 등등 지정이 가능하죠.
-m http-url // [http | http-url | ftp | tftp | payload | stdout]
- -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를 이용해 쉽게 테스팅하는 것도 좋은 방법중에 하나죠 :)