웹 퍼징 (Web Fuzzing) 도구 소개 및 활용 방법

 

실무에서의 침투 테스트는 대부분은 제한적인 정보하에 진행되는 경우가 많다.
물론 프로젝트의 성격에 따라 침투 팀에게 주어지는 정보의 양과 범위는 제각각이긴 하지만,
시스템의 안정성을 적극적으로 점검하고 싶어하는 고객의 경우 IP 리스트만 제공하는 경우도 많다.

내부 시스템의 경우는 비교적 침투하기에 수월한(?) 편이긴 하나,
외부에 공개되어 있는 시스템들은 고객측에서 일정 수준 이상의 보안 조치를 마친 상태에서
침투팀을 기다리기 때문에, 그리 만만하지 않은 것이 사실이다.

Screenshot from 2015-01-19 22:32:42

[ IP 리스트조차 주어지지 않는다면, 직접 공격 대상을 찾아야 한다 ]

그러나 작은 취약점 하나가 결국 전체 시스템을  무너트릴 수 있다는 것을 경험하고 나면,
그러한 두려움을 조금씩 이겨나갈 수 있을 것이다.

 

웹 퍼징 도구에 대하여

 

오늘 소개할 내용은 웹 퍼징(Web Fuzzing) 도구를  활용하는  방법이다.

웹 퍼징 도구는 웹사이트에서 직접적으로 알아낼 수 없는
즉, 추측을 통해서만 알아낼 수 있는 페이지들을 자동으로 찾아주는 역할을 한다.
사실 Metasploit 과 같은 도구와 비교했을 때 사용방법이 매우 쉽지만,
실제 이 도구들로 인해 얻을 수 있는 효과는 생각외로 크다.
위에서 언급했듯이, “단 하나의 작은 구멍”을 찾는데 있어 큰 도움을 주기 때문이다.

그럼 본격적으로 웹 퍼징 도구 몇가지를 비교해보고 활용 방법에 대해 살펴보도록 하자.

 

1. DirBuster – by OWASP

OWASP 에서 제작한 가장 대중적인(?) 웹 퍼징 도구 중 하나이다.
Java 언어 기반으로 제작되었기 때문에 OS 플랫폼에 구애받지 않고 사용할 수 있다.
관련 URL 정보는 다음과 같다.

* 다운로드 : http://sourceforge.net/projects/dirbuster/
* 설명페이지 : https://www.owasp.org/index.php/Category:OWASP_DirBuster_Project

 

칼리(Kali) 리눅스에서는 별도의 다운로드 없이, “dirbuster” 명령어를 입력하면 바로 실행된다.

스크린샷 2015-01-20 오전 1.21.12[ Dirbuster 실행 화면 ]

 

찾는 방식으로는 사전(Dictionary) 대입 방식과 BruteForcing 방식을 지원하나,
개인적으로는 사전 대입 방식에서 좀 더 강점을 보이는 도구라고 생각된다.

그 이유는 다음 그림과 같이 다양한 사전 파일이 제공되며,
아파치(Apache)와 같은 웹 서비스에서 주로 사용되는 단어리스트(관리자, config등)를 갖고 있어
취약점을 찾는데 많은 도움을 주기 때문이다.

스크린샷 2015-01-20 오전 1.21.39[ Dirbuster – Dictionary 선택화면 ]

사용방법은 간단하다. Target URL 주소를 상단에 입력한 후, 딕셔너리 파일을 지정해준다.
쓰레드의 경우 기본값이 10이나, Go Faster 옵션을 키면 200개까지 증가시킬 수 있다.
(단, 대상 시스템에 무리를 줄 수 있으므로, 적절한 스레드를 유지하는 것이 좋다)

만약 Proxy 네트워크 환경에서 테스트를 해야한다면, 상단의 옵션 메뉴에서
Proxy 서버 주소와 포트를 지정할 수 있다.

마지막으로 탐색 대상 시스템에서 사용되는 웹페이지의 언어에 따라
File extension(php, jsp, html등) 을 지정해주면 대부분의 설정이 완료되며,
우측 하단의 Start 버튼을 누르면 퍼징을 시작하게 된다.

스크린샷 2015-01-20 오전 1.30.33[ Dirbuster – 모든 옵션이 설정된 상태 ]

 

2. Dirb – by Dark Raver

커맨드 기반의 웹 디렉토리, 히든 파일 검색 도구이다.
Dirbuster 에 비해 프로그램이 가벼우며, 검색 속도 역시 빠른 편이다.
현재 2.2버전까지 발표되어 있으며, 정보 및 다운로드 경로는 다음과 같다.

* 다운로드 : http://sourceforge.net/projects/dirb/files/
* 설명페이지 : http://dirb.sourceforge.net/

칼리 리눅스에서는 별도의 설치 없이 “dirb” 명령을 통해 바로 실행이 가능하다.

스크린샷 2015-01-21 오전 12.51.39[ Dirb – 실행 및 도움말 화면 ]

dirb 명령어 뒤에 URL을 덧붙여서 실행하면 바로 간단한 퍼징을 시작하게 된다.
좀 더 심도있게 탐색을 해보고 싶다면, URL뒤에 딕셔너리 파일 경로를 지정해주거나,
찾고자 하는 파일 확장자 (php, jsp, html 등)를 -X 옵션과 함께 사용하면 된다.

다음은 간단하게 아파치 서버를 대상으로 퍼징을 해 본 화면이다.
별다른 옵션을 주지 않았음에도 불구하고 아파치 관련 페이지를 자동으로 찾아준다.

스크린샷 2015-01-21 오전 1.09.03[ Dirb – 아파치 서버를 대상으로 테스트한 화면 ]

 

3. wfuzz – by Edge Security Group

Web Bruteforcer 라고 소개하고 있는 wfuzz는 다양한 옵션들과 딕셔너리 파일들을 제공하고 있다.
퍼징 속도가 매우 빠르며, 퍼징해야 하는 부분을 세밀하게 조절할 수 있는 것이 특징이다.

* 다운로드 : https://github.com/xmendez/wfuzz
* 소개페이지 : http://www.edge-security.com/wfuzz.php

칼리 리눅스에서는 기본적으로 제공되고 있으며  명령 옵션은 다음 화면과 같다.

스크린샷 2015-01-21 오전 1.37.47[ wfuzz – 실행 및 도움말 화면 ]

기본적으로 Hidden 파일 뿐만 아니라, 서버 Config 경로등을 찾는데도 유용하게 사용할 수 있ㄷ.
또한, 특정 파라미터에 입력될 Value값의 범위를 지정할 수 있는 것도 큰 장점이다.
다음은 wfuzz 를 이용한 퍼징 예시 이다.

아래 그림은 wfuzz를 통해 아파치 기본 서비스가 동작중인 서버를 검색해 본 결과이다.
apache.txt 딕셔너리를 사용하였으며, 외부로 노출되어서는 안되는 몇몇 페이지들을 찾아낼 수 있었다.
wfuzz 는 많은 옵션들을 제공하고 있기 때문에, 좀 더 advanced한 퍼징을 원하는 이들에게 권하고 싶다.

스크린샷 2015-01-21 오전 1.37.01[ wfuzz – 아파치 서버 대상 테스트 화면 결과 ]

 

4. dotdotpwn – by Christian Navarrete and Alejandro Hernandez H.

dotdotpwn은 도구 이름에서 알 수 있듯이 Directory Traversal 취약점을 찾는데 특화된 도구이다.
많이 알려져 있지는 않지만 벌써 버전이 4.0까지 나와있을 정도로 꾸준히 리비전을 해왔다.

* 다운로드 : https://github.com/wireghoul/dotdotpwn
* 소개페이지 : http://dotdotpwn.sectester.net/

.pl코드로 작성되어 있기 때문에 Perl이 설치되어 있어야 하며, 칼리 리눅스의 경우
/usr/share/dotdotpwn/ 경로로 이동한 후 실행할 수 있다. (기본 Path 설정에서 제외되어 있음)

dotdotpwn[ dotdotpwn – 실행 및 도움말 화면 ]

Directory Traversal 취약점을 찾을 때 중요한 점은 대상 시스템의 OS맞게 퍼징 코드를 입력하는 것이다.
예를 들어 리눅스 시스템의 경우 “../../../etc/host” 형태로, 윈도우 시스템의 경우 “..\..\..\..\” 형태로
입력 내용을 바꿔줘야 한다.

dotdotpwn 도구는 운영체제를 지정해줄 수 있으며, 대상 시스템의 종류를 모를 경우 자동으로 OS를 탐색하여
그에 맞는 공격 코드를 전송할 수 있게 해준다.

https://github.com/wireghoul/dotdotpwn/blob/master/EXAMPLES.txt 를 읽어보면,
기본적인 사용법을 익힐 수 있을 것이다.

 

공격 시나리오 및 활용 사례

웹 퍼징 테스트는 취약점을 찾기 위한 목적도 있지만 Finger Printing의 성격이 좀 더 강하다.
표준 보안 정책이 적용되어 있는 시스템의 경우 사실상 웹  퍼징을 통해 Critical한 취약점을 찾기는 어렵다.
그러나, 단 하나의 테스트 페이지 혹은 관리자 페이지라도 발견된다면 이를 토대로
최종 시스템 장악까지 시도해볼 수 있다.

* 활용 사례 1 : Dirbuster 를 이용한 Tomcat 관리 페이지 발견 후 웹쉘 설치 및 실행

Nmap 스캔 결과 80 (HTTP) 포트만 오픈되어 있는 상황에서 Dirbuster로 Tomcat 관리 페이지를 발견했다.
운 좋게도 Tomcat 디폴트 계정으로 설정되어 있어 관리 페이지로 접근할 수 있었으며,
JSP 쉘코드 삽입 후, DB 서버 정보 및 접속 계정을 획득하였다.

* 활용 사례 2 : wfuzz + Customized Dictionary 사용

국내에서 자주 사용되는 제로보드, 워드 프레스, 레포팅 솔루션 등의 관리자 페이지 정보를 딕셔너리로 제작 후,
wfuzz로 웹 퍼징을 수행한 결과 레포팅 솔루션의 테스트 페이지가 발견되었다.

해당 페이지의 소스 코드에는 DB Connection 정보가 노출되어 있었으며,
테스트 쿼리 요청 부분에 SQL Injection 취약점이 발견되어, 전체 DB 내용을 가져올 수 있었다.

 

마무리하며

웹 퍼징 기법은 웹 취약점 진단을 함에 있어서 가장 효율적인 도구라 할 수 있다.
위에서 소개한 여러가지 도구들은 각각의 특성과 장,단점을 갖고 있으므로,
가상환경에서 충분한 실습을 통해 사용해 본 후 필드에서 적절하게 활용하는 것이 중요하다고 하겠다.

P.S 위에 기재된 도구 외에 더 좋은 것이 있다면 소개 부탁드립니다 🙂

 

Site Footer

Sliding Sidebar

About Me

About Me

June Park