[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 -h [OPTIONS] Available options: -mModule [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 -h [OPTIONS]

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

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

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

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

  1. -h 이 옵션은 타켓 호스트를 지정하는 옵션입니다.
-h 127.0.0.1
  1. -u 이 옵션은 URL을 지정합니다. 여기에 패턴이 들어갈 부분을 지정해줍니다. 패턴 부분은 아래와 같이 TRAVERSAL 이라는 문구로 지정할 수 있습니다.
-u http://127.0.0.1/test.php?file=TRAVERSAL
  1. -m 이 옵션을 모듈을 지정합니다. http 인지, ftp인지 등등 지정이 가능하죠.
-m http-url  // [http | http-url | ftp | tftp | payload | stdout] 
  1. -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를 이용해 쉽게 테스팅하는 것도 좋은 방법중에 하나죠 :)