소개
이 랩에서는 Gobuster 를 사용하여 디렉토리 스캔의 기본 사항을 배우게 됩니다. Gobuster 는 웹 서버에서 숨겨진 디렉토리와 파일을 찾는 데 사용되는 침투 테스트 및 윤리적 해킹 도구입니다. 대상 URL 에 대해 일반적인 디렉토리 이름을 무차별 대입 (brute-forcing) 함으로써 Gobuster 는 민감한 정보나 간과된 진입점을 드러낼 수 있습니다. 이 랩에서는 대상 선택, 적절한 단어 목록 (wordlist) 선택, Gobuster 명령 구성, 스캔 실행 및 결과 해석에 대한 과정을 안내합니다.
스캔 대상 URL 선택
이 단계에서는 Gobuster 스캔을 위한 대상 URL 을 선택합니다. 이 랩에서는 로컬에 호스팅된 의도적으로 취약한 웹 애플리케이션을 사용합니다. 이를 통해 외부 시스템에 영향을 주지 않고 스캔을 수행하고 일반적인 결과를 관찰할 수 있습니다.
먼저 대상 웹 서버가 실행 중인지 확인합니다. curl을 사용하여 웹 서버에 접근 가능한지 확인합니다.
터미널에서 ~/project 디렉토리로 이동합니다.
curl http://localhost:8080
HTML 출력이 표시되어 웹 서버가 활성 상태임을 나타내야 합니다. 스캔 대상 URL 은 http://localhost:8080입니다.
<!DOCTYPE html>
<html>
<head>
<title>Welcome to Nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to Nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
기본 단어 목록 (Wordlist) 선택
이 단계에서는 Gobuster 스캔을 위한 기본 단어 목록을 선택합니다. 단어 목록은 Gobuster 가 대상 서버에서 찾으려는 일반적인 디렉토리 및 파일 이름 목록을 포함하는 파일입니다. 단어 목록의 품질과 포괄성은 스캔의 효과에 직접적인 영향을 미칩니다.
이 랩에서는 시연 목적으로 적합한 작고 미리 설치된 단어 목록을 사용합니다. 이 단어 목록은 /usr/share/wordlists/dirb/common.txt에 있습니다.
head 명령을 사용하여 이 단어 목록의 처음 몇 줄을 검사하여 내용을 이해할 수 있습니다.
head /usr/share/wordlists/dirb/common.txt
이 명령은 단어 목록의 시작 부분을 표시하여 Gobuster 가 테스트할 디렉토리 이름의 예를 보여줍니다.
admin/
backup/
bin/
cgi-bin/
conf/
css/
data/
db/
dev/
doc/
이 단어 목록에는 웹 서버에서 흔히 발견되는 일반적인 디렉토리 이름이 포함되어 있습니다. 이와 같이 더 작은 단어 목록을 사용하면 이 랩의 목적을 위해 스캔을 빠르게 완료하는 데 도움이 됩니다.
기본 gobuster dir 명령어 구성
이 단계에서는 기본 gobuster dir 명령어를 구성합니다. gobuster dir 명령어는 디렉토리 및 파일 무차별 대입 (brute-forcing) 에 사용됩니다. 최소한 두 개의 주요 플래그가 필요합니다. 대상 URL 을 위한 -u와 단어 목록을 위한 -w입니다.
명령어의 기본 구문은 다음과 같습니다.
gobuster dir -u <target_url> -w <wordlist_path>
이전 단계에 따르면:
- 대상 URL 은
http://localhost:8080입니다. - 단어 목록 경로는
/usr/share/wordlists/dirb/common.txt입니다.
따라서 구성할 명령어는 다음과 같습니다.
gobuster dir -u http://localhost:8080 -w /usr/share/wordlists/dirb/common.txt
이 명령어는 Gobuster 에게 common.txt의 항목들을 잠재적인 디렉토리 이름으로 사용하여 http://localhost:8080에서 디렉토리 스캔을 수행하도록 지시합니다. 다음 단계에서 이 명령어를 실행하게 됩니다.
-u 및 -w 플래그를 사용하여 스캔 실행
이 단계에서는 이전 단계에서 구성한 gobuster dir 명령어를 실행합니다. 이를 통해 지정된 단어 목록을 사용하여 대상 URL 에 대한 디렉토리 스캔이 시작됩니다.
터미널에서 다음 명령어를 실행합니다.
gobuster dir -u http://localhost:8080 -w /usr/share/wordlists/dirb/common.txt
스캔이 실행되는 동안 Gobuster 는 진행 상황과 발견된 디렉토리 또는 파일을 표시합니다. 출력에는 각 발견된 항목에 대한 상태 코드 (예: OK 의 경우 200, Moved Permanently 의 경우 301) 와 응답 크기가 표시됩니다.
===============================================================
Gobuster vX.X.X-XXXXXX Linux/amd64
===============================================================
[+] Url: http://localhost:8080
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirb/common.txt
[+] Status codes: 200,204,301,302,307,401,403
[+] User Agent: gobuster/X.X.X
[+] Timeout: 10s
===============================================================
XXXX/XX/XX XX:XX:XX Starting gobuster in directory enumeration mode
===============================================================
/css (Status: 301)
/js (Status: 301)
/images (Status: 301)
/admin (Status: 301)
/icons (Status: 301)
/server-status (Status: 403)
===============================================================
XXXX/XX/XX XX:XX:XX Finished
===============================================================
위의 출력은 여러 디렉토리가 발견되었으며 해당 HTTP 상태 코드와 함께 표시됩니다. 예를 들어, /css는 영구 리디렉션을 나타내는 301 상태를 반환했습니다.
발견된 디렉토리에 대한 출력 분석
이 단계에서는 Gobuster 스캔의 출력을 분석하여 결과를 이해합니다. 출력은 대상 웹 서버에서 발견된 디렉토리 및 파일에 대한 귀중한 정보를 제공합니다.
이전 단계의 출력을 검토합니다. 다음과 유사한 줄이 표시되어야 합니다.
/css (Status: 301)
/js (Status: 301)
/images (Status: 301)
/admin (Status: 301)
/icons (Status: 301)
/server-status (Status: 403)
각 줄은 Gobuster 가 발견한 잠재적인 디렉토리 또는 파일을 나타냅니다.
- 첫 번째 부분, 예:
/css는 Gobuster 가 성공적으로 식별한 경로입니다. (Status: XXX)는 해당 경로에 대해 서버가 반환한 HTTP 상태 코드를 나타냅니다.200 OK: 요청이 성공했으며 콘텐츠가 반환되었습니다. 이는 종종 유효한 디렉토리 또는 파일임을 의미합니다.301 Moved Permanently: 리소스가 새 URL 로 영구적으로 이동되었습니다. 이는 여전히 디렉토리의 존재를 나타냅니다.403 Forbidden: 서버가 요청을 이해했지만 권한 부여를 거부합니다. 이는 디렉토리가 존재하지만 직접 액세스할 권한이 없음을 의미합니다.401 Unauthorized: 403 과 유사하지만 일반적으로 인증이 필요합니다.
예시에서 /css, /js, /images, /admin, /icons는 모두 301 상태 코드를 반환했으며, 이는 이러한 디렉토리가 존재하고 서버가 해당 디렉토리로 요청을 리디렉션하고 있음을 의미합니다. /server-status 경로는 301 상태를 반환했으며, 이는 존재하지만 액세스가 금지되었음을 나타냅니다.
이 분석은 관리자 패널 (/admin) 또는 취약할 수 있는 구성 파일과 같이 추가 조사가 필요한 잠재적인 영역을 식별하는 데 도움이 됩니다.
요약
이 실습에서는 Gobuster 를 사용하여 기본적인 디렉토리 스캔을 성공적으로 수행했습니다. 대상 URL 을 선택하고, 적절한 단어 목록을 선택하고, -u 및 -w 플래그를 사용하여 gobuster dir 명령을 구성하고, 스캔을 실행하고, 출력을 분석하여 존재하는 디렉토리와 해당 HTTP 상태 코드를 식별하는 방법을 배웠습니다. 이 기본적인 기술은 사이버 보안 정찰에 매우 중요하며, 민감한 정보나 취약점을 포함할 수 있는 숨겨진 웹 자산을 발견하는 데 도움이 됩니다. 이제 다른 단어 목록과 대상을 사용하여 이러한 기술을 적용하여 웹 서버 구조에 대한 이해를 넓힐 수 있습니다.
