기본 콘텐츠로 건너뛰기

웹 퍼징 도구 DirBuster

웹 퍼징 도구 –DirBuster – By OWASP
Directory Travesal 공격
목표 웹 사이트를 공격 전 웹 사이트의 구조와 디렉터리 그리고 파일을 이해하는 것을 아주 중요하다.
이렇게 함으로써 우리는 가장 효과적인 공격 전략을 만들 수 있기 때문이다.
OWASP에서 이러한 목적으로 제작된 웹 퍼징 툴인 DirBuster의 테스트를 통해 효과적인 도구의 사용방법을 생각해 보자.

DirBuster는 OWASP 에서 제작한 웹 퍼징 도구이다. JAVA 언어로 제작되었기 때문에 OS 플랫폼에 독립적이다.
Window 플랫폼의 경우 다음 경로에서 바이너리 실행 파일 다운로드하면 된다. Kali-Linux의 경우 내장되어 있다.
용도: 디렉터리/파일 브루트 포싱

DirBuster 작동 원리
Dirbuster의 구동 원리는 아주 단순하다. 설정한 타켓 사이트의 URL에 단어 목록을 대입한 공격 Request를 만들어 전송하고
응답 값의 응답 코드를 분석하는 원리이다. 만 약 응답 코드가 200 범위에 있다면 긍정의 응답이며 디렉터리 혹은 파일이 존재한다는 것이다.
만약 응답코드가 403이라면 디렉터리 혹은 파일이 존재하나 접근이 제한되어 있다는 것을 의미한다.

도구 테스트하기
모의 진단 테스트 환경은 다음과 같다.
취약한 웹 애플리케이션 환경-bWAPP(APM 환경, Kali-Linux)
취약점 항목:A7-Directory Travesal – Files
취약 벡터: Page

Step 1) DirBuster 실행
DirBuster를 실행하면 아래 그림처럼 공격과 관련된 설정을 할 수 있는 GUI 화면이 나타난다.

Step 2) 목표 사이트 URL 설정
첫 번 째로 설정할 것은 스캔을 할 웹 사이트의 URL을 쓴다. 이때 포트도 꼭 써야 한다.
(보통 HTTP 통신 일 경우 80 포트이며, HTTPS 통신일 경우 443 포트를 사용한다.)


Step 2) 단어목록(Wordlist) 선택
다음으로 디렉터리 부루트 포싱에 사용할 단어리스트를 선택한다. GUI 화면 중간에 [ List Info ] 를 누르면 DirBuset에 포함되어 있는 단어 목록들을 보여 준다.
단어 목록들은 크기 Apache 시스템 사용자 목록과 디렉터리 목록으로 분류되어 있고, 또한 크기에 따라 분류되어 있다.
DirBuster 설치 경로에 이러한 단어목록이 txt 파일로 저장되어 있다.
[Browser ] 클릭 후 단어목록을 선택한다.
다음 [Start] 를 누르면 된다. DirBuster가 Get Request를 생성하여 전송하여 응답 값을 분석한 결과를 [List View ]와 [Tree View] 형태로 보여 준다.

시작 선택 옵션으로 Standard start point와 URL Fuzz가 있다. Standard start point의 경우 사전 목록이 URL의 PATH에 대입되는 되는 것이다.
URL Fuzz의 경우 URL의 특정 파라미터에 사전 목록이 대입되는 것이다.
URL Fuzz 보다는 Standard start point 방식이 결과를 잘 분석해 준다.
공격 시 메뉴 > Options 에서 Redirection 여부 및 디버그 모드, HTML 파싱 여부를 설정 할 수 있다. 분석의 정확도를 위해서는 다음과 같이 옵션을 설정해 주는 것이 좋다.
[List View 화면]

[Tree View 화면]
Step 3) 결과 분석
중간에 공격을 중단하고 현재까지의 결과만 분석하고자 한다면 [Pause] 혹은 [Stop] 을 눌러 Report를 생성하여 결과를 분석해 볼 수 있다.


생성된 Report를 저장할 경로를 먼저 설정하고, [Generate Report ]를 누르면 된다.

200 응답코드가 발견된 디렉터리에서 몇몇 의미 있는 결과가 보여 진다.
결과를 직접 브라우저에서 접근하여 확인해 보자.



댓글

이 블로그의 인기 게시물

보안 공부 링크

SSLsplit - SSL/TLS기반의 네트워크 포렌식 및 침투테스트(중간자공격) 도구 http://www.roe.ch/SSLsplit 가상화 서버운영 및 구축을 위한 Xenserver가 오픈소스로 공개 http://www.xenserver.org/ Python과 Fabric를 사용한 SSH 봇넷 C&C 구축 예제 http://raidersec.blogspot.kr/2013/07/building-ssh-botnet-c-using-python-and.html 파워쉘을 이용한 비밀번호 정보 획득 http://www.obscuresecurity.blogspot.kr/2013/07/get-gpppassword.html niktoHelper - Nmap의 Grepable형식을 Nikito와 연동하기 위한 파이썬 스크립트 http://milo2012.wordpress.com/2013/07/07/niktohelper-bridge-between-nmap-grepable-output-and-nikto/ 루비를 통한 심도있는 XSS 방어 방법 http://homakov.blogspot.com.es/2013/07/xss-defense-in-depth-with-rackrails-demo.html IT관련 E-Book 모음 http://www.cyberhades.com/2013/07/04/unos-libritos-tecnicos-para-el-veranito JJEncode 스크립트 분석 http://www.kahusecurity.com/2013/jjencode-script-leads-to-drive-by/ 웹브라우저 호환성 검증 및 분석결과 제공 http://www.modern.ie/ko-kr/ http://browsershots.org/ html 색상 선택 도구 https://kuler.adobe.com/create/color-wheel/ Windows 메모리 보호 메커니즘 http://resources.infosecinstitute.com/window...

dns2proxy 해킹툴

dns2proxy Offensive DNS server This tools offer a different features for post-explotation once you change the DNS server to a Victim. <Referer to help (-h) to new params options> Feature 1 Traditional DNS Spoof adding to the response the original IP address. Using spoof.cfg file: hostname ip.ip.ip.ip root@kali:~/dns2proxy# echo " www.s21sec.com  1.1.1.1" > spoof.cfg // launch in another terminal dns2proxy.py root@kali:~/dns2proxy# nslookup  www.s21sec.com  127.0.0.1 Server: 127.0.0.1 Address: 127.0.0.1#53 Name:  www.s21sec.com Address: 1.1.1.1 Name:  www.s21sec.com Address: 88.84.64.30 or you can use domains.cfg file to spoof all host of a same domain: root@kali:~/demoBH/dns2proxy# cat dominios.cfg .domain.com 192.168.1.1 root@kali:~/demoBH/dns2proxy# nslookup aaaa.domain.com 127.0.0.1 Server: 127.0.0.1 Address: 127.0.0.1#53 Name: aaaa.domain.com Address: 192.168.1.1 Hostnames at nospoof.cfg will no be spoofed. Featu...

어셈블리어(Assembly) 기초

0x01.  어셈블리 언어란 ? &  배우는 목적 CPU  에는 해당 프로세서에 명령을 내리기 위해 고유의 명령어 세트가 마련되어 있는데 이  명령어 세트를 기계어라고 한다 .  이 기계어는 숫자들의 규칙조합임으로 프로그래밍에 상당 히 난해하다 .  그래서 이 기계 명령어를 좀더 이해하기 쉬운 기호 코드로 나타낸것 ( 기계어와  1:1 로 대응된 명령을 기술하는 언어 ) 이 어셈블리어이다 .  어셈블리 언어는 그 코드가 어떤  일을 할지를 추상적이 아닌 ,  직접적으로 보여준다 .  논리상의 오류나 ,  수행 속도 ,  수행 과정 에 대해 명확히 해준다는 점에서 직관적인 언어이다 .  어셈블리 언어를 사용하면 메모리에 대한 이해도도 높아진다 .  어셈블리를 익히고 ,  배우는데 있어서는 여러 가지 목적이 있을 수 있다 .  컴퓨터 시스템 & 구조를 좀 더 깊게 이해하고 ,  메모리상의 데이터나  I/O 기기를 직접 액 세스 하는등의 고급언어에서는 할 수 없는 조작을위해서이다 .  프로그램의 최적화 및 리버 스 엔지니어링을 위해서도 필요하다 . + 2 줄 요약  + -  어셈블리 언어는 기계어와  1:1  대응을 하는 언어이다 . -  어셈블리 언어를 배우면 시스템을 이해하는데 도움이 된다 . 0x02.  어셈블리를 위한 기본 지식 (1)  기본적인 하드웨어 1) CPU -  메모리에 있는 내용을 읽고 ,  쓰고 데이터를 메모리와 각 레지스터로 보낸다 . 프로그램의 명령을 해석하고 실행한다 . 하나의 프로세서는  12~14 개의 레지스터를 가 지고 있으며 , CPU 의 연산 ,  논리 장치는 숫자와 기호에 관한 연산자를...