웹해킹 공부를 하던 도중 소스코드가 제공되지 않는 블랙 박스 문제를 마주쳤습니다. (https://dreamhack.io/wargame/challenges/2726)
이런 유형의 문제를 처음 풀어보다보니 도대체 뭘 하라는 건지 막막했습니다. 이 문제는 /robots.txt 를 확인하여 해결하긴 했지만, 이걸로 해결할 수 없는 문제는 정말 감으로 맞춰야 하나? 라는 궁금증이 들어 이를 자동으로 브루트 포싱 해주는 도구를 찾아보기로 했습니다. 그렇게 찾은 도구가 Gobuster 라는 도구입니다.
Gobuster는 Go 언어로 개발되어서 속도가 엄청나게 빠릅니다. 드림핵(Dreamhack)이나 웹해킹.kr 같은 워게임이나 CTF 대회를 풀 때 터미널 환경에서 가장 널리 쓰이는 핵심 툴으로 알려져 있습니다.
기본적으로 Kali Linux에 설치되어 있기 때문에 저는 Kali Linux를 사용하였지만, .exe 파일로도 제공하고 있습니다.
기본 명령어를 살펴보겠습니다.
gobuster dir -u http://host8.dreamhack.games:8413/ -w /usr/share/wordlists/dirb/common.txt
dir: 디렉터리와 파일을 찾는 모드로 실행하겠다는 뜻입니다.
u (url): 스캔할 타겟 웹 사이트의 주소입니다.
w (wordlist): 대입해 볼 경로 이름들이 적힌 사전 파일의 위치입니다. /usr/share/wordlists/dirb/common.txt는 칼리 리눅스에 기본 제공되는 가장 표준적이고 가벼운 웹 경로 사전 파일입니다.
common.txt 파일 외에도 다양한 사전 파일이 존재합니다.

small.txt: 가장 빈도수가 높은 핵심 단어들만 모아둔 초경량 사전입니다. 서버에 무리를 주지 않고 순식간에 기본적인 구조만 파악하고 싶을 때 사용합니다.
common.txt: 가장 표준적인 사전입니다. 워게임이나 일반적인 모의해킹에서 첫 번째 타격으로 가장 많이 쓰입니다. (방금 전 Gobuster 명령어 예시에 사용했던 파일입니다.)
big.txt: 엄청나게 방대한 양의 단어장입니다. common.txt로 웬만한 경로를 찔러봤는데도 단서가 나오지 않을 때, 시간을 넉넉히 두고 심층 탐색(Deep Scan)을 할 때 꺼내는 숨겨진 카드입니다.
mutations_common.txt: 흔한 디렉터리 이름의 변형 패턴을 모아둔 파일입니다. 예를 들어 개발자들이 임시로 만들어둔 admin_bak, test1, old_api 같은 얄미운(?) 변형 경로들을 기가 막히게 찾아냅니다.
extensions_common.txt: 폴더 이름이 아니라 .bak, .zip, .old, .swp 등 관리자들이 서버에 실수로 남겨두기 쉬운 백업 파일이나 소스코드 찌꺼기 확장자 위주로 구성된 리스트입니다.
indexes.txt: 웹 서버 환경별로 다르게 설정되는 기본 메인 페이지 이름들(index.php, index.html, default.asp 등)만 쏙쏙 골라 모아둔 리스트입니다.
vulns/ (폴더): 특정 시스템(Apache Tomcat, WebLogic, IIS 등)에서 널리 알려진 고질적인 취약점 경로나 디폴트 관리자 페이지 경로들만 따로 모아둔 아주 유용한 폴더입니다. 타겟 서버의 종류를 알고 있을 때 정밀 타격용으로 씁니다.
언어별 사전 (spanish.txt, catala.txt, euskera.txt): 스페인어, 카탈로냐어, 바스크어 등 특정 언어권 사이트를 타겟으로 할 때 쓰는 사전입니다. 국내 워게임이나 CTF에서는 사실상 쓸 일이 거의 없습니다.
stress / others: 서버에 부하를 주는 스트레스 테스트용 파일이나 기타 분류되지 않은 단어장들이 들어있는 폴더입니다.
만약 특정 확장자를 가진 파일을 집중적으로 찾고 싶다면 -x 옵션을 사용하여 찾을 수 있습니다.
gobuster dir -u http://host8.dreamhack.games:8413/ -w /usr/share/wordlists/dirb/common.txt -x php,txt,html,zip
위 명령어처럼 -x 이후에 찾으려는 확장자를 나열하여 찾을 수도 있습니다.
이제 실제로 명령어를 한 번 실행해 보겠습니다.

사진과 같이 쭉 4613가지 항목을 탐색을 한 뒤 실제 존재하는 admin과 robots.txt 페이지를 찾아줍니다.
wireshark도 그렇고 기본적인 도구지만 이런 도구들이 데스크탑에 점점 더 늘어나니 괜히 뿌듯한 기분이 드는 것 같습니다 ㅎㅎ