User-Agent 문자열의 목적 이해하기
이 단계에서는 User-Agent 문자열이 무엇인지, 그리고 웹 요청에서 왜 중요한지에 대해 배우게 됩니다.
User-Agent 문자열은 클라이언트 (웹 브라우저 또는 Gobuster 와 같은 도구) 가 웹 서버로 보내는 헤더입니다. 일반적으로 클라이언트의 애플리케이션 유형, 운영 체제, 소프트웨어 공급업체 및 소프트웨어 버전에 대한 정보를 포함합니다. 웹 서버는 이 정보를 사용하여 클라이언트에 최적화된 콘텐츠를 제공하거나 클라이언트 통계를 기록하는 데 사용합니다.
Gobuster 와 같은 보안 도구의 경우, 기본 User-Agent 문자열은 종종 도구의 신원을 노출하여 WAF 또는 침입 탐지 시스템 (IDS) 을 트리거할 수 있습니다. 예를 들어, Gobuster 의 기본 User-Agent 는 gobuster/3.1.0과 유사하게 보일 수 있습니다.
이제 사용자 지정 User-Agent 없이 기본적인 Gobuster 스캔을 수행하여 기본 동작을 살펴보겠습니다. 백그라운드에서 설정된 로컬 웹 서버를 스캔할 것입니다.
먼저 프로세스를 확인하여 웹 서버가 실행 중인지 확인합니다.
ps aux | grep "python3 -m http.server 8080" | grep -v grep
서버가 실행 중임을 나타내는 다음과 유사한 출력을 볼 수 있습니다.
labex 1234 0.0 0.1 12345 6789 ? Sl HH:MM 0:00 python3 -m http.server 8080 --directory /tmp/web_root
이제 포트 8080 의 로컬 서버를 대상으로 간단한 Gobuster 스캔을 실행합니다. 시연을 위해 작은 단어 목록 (wordlist) 을 사용하겠습니다.
gobuster dir -u http://127.0.0.1:8080 -w /usr/share/wordlists/dirb/common.txt -q -x html,txt -t 10
-u http://127.0.0.1:8080: 대상 URL 을 지정합니다.
-w /usr/share/wordlists/dirb/common.txt: 사용할 단어 목록을 지정합니다.
-q: 조용한 모드 (Quiet mode), 결과만 출력합니다.
-x html,txt: 찾을 확장자를 지정합니다.
-t 10: 동시 스레드 수를 10 으로 설정합니다.
발견된 디렉토리와 파일을 보여주는 다음과 유사한 출력을 볼 수 있습니다.
/admin (Status: 200)
/secret (Status: 200)
/backup (Status: 200)
이 스캔은 작동하지만, Gobuster 에서 사용되는 User-Agent 는 기본값이므로 WAF 에 의해 쉽게 차단될 수 있습니다.