FUZZ.를 넣는 방식은 작동하지 않습니다. (대부분의 경우)왜냐하면:
IP이지만,웹서버는 Host 헤더로 어떤 가상사이트를 요청했는지를 판단하기 때문입니다.
ffuf -u http://FUZZ.10.10.178.114/ -w wordlist.txt
이 경우:
FUZZ.10.10.178.114로 DNS 질의를 시도합니다.즉, DNS 이름을 찾을 수 없는 상황에서는 작동하지 않음.
Host: FUZZ.10.10.178.114를 넣는 방식:ffuf -u http://10.10.178.114/ -H "Host: FUZZ.10.10.178.114" -w wordlist.txt
이 경우:
10.10.178.114)Host 헤더에 다양한 값 (admin.10.10.178.114, test.10.10.178.114 등)을 넣어 보냄| 방식 | 작동 여부 | 이유 |
|---|---|---|
http://FUZZ.10.10.178.114 | ❌ 실패함 | OS에서 DNS 해석이 필요하지만, 대부분 그런 서브도메인 없음 |
http://10.10.178.114 + Host: FUZZ.10.10.178.114 | ✅ 작동함 | DNS 없이도 요청 가능하고, 웹서버는 Host 헤더 기준으로 판단 |
서버 IP로 직접 요청을 보내면서
Host헤더만 바꾸는 방식은, DNS 레코드 없이도 가상 호스트(서브도메인)를 찾을 수 있게 해주는 기법입니다.
그래서 **헤더를 사용하는 게 ‘굳이’가 아니라, 오히려 '필수적인 기법’**인 셈입니다.
ffuf에서 헤더 사용: 언제, 왜 중요한가?ffuf -u http://www.smol.thm/FUZZ -w /usr/share/seclists/Discovery/DNS/namelist.txt
| 상황 | 설명 | 예시 |
|---|---|---|
| 🔐 인증 필요 | 세션 유지 또는 토큰 인증 필요 시 | Authorization, Cookie |
| 🕵️♀️ User-Agent 필터링 | 웹서버가 브라우저만 허용하거나 봇 차단 시 | User-Agent: Mozilla/5.0 |
| 🎭 WAF 우회 | 웹 방화벽(Web Application Firewall)이 자동화 도구 탐지 시 우회 시도 | X-Forwarded-For, Referer 등 |
| 🧪 헤더 내부 FUZZ | URL이 아닌 헤더 안에 FUZZ가 들어갈 때 | -H "X-Api-Version: FUZZ" |
| 🔁 세션 유지 | 로그인 후 쿠키 기반 탐색 등 | Cookie: sessionid=... |
| 🌐 가상 호스트 탐지 (Host 헤더) | DNS 없이 서브도메인 탐지할 때. Host 헤더 조작이 유일한 방법 | -H "Host: FUZZ.10.10.178.114" |
Host 헤더가 왜 중요한가?
http://FUZZ.10.10.178.114와 같은 방식은 DNS 해석이 필요해서 실패 가능성이 높습니다.
반면ffuf -u http://10.10.178.114 -H "Host: FUZZ.10.10.178.114"는
IP로 직접 요청하면서Host헤더를 조작해 DNS 없이 가상 호스트를 탐지할 수 있습니다.
✅ CTF나 TryHackMe 실습 환경에서 자주 사용되는 기법입니다.
ffuf -u http://target/FUZZ -w wordlist.txt \
-H "User-Agent: Mozilla/5.0" \
-H "Cookie: sessionid=abc123" \
-H "Authorization: Bearer <token>"
헤더 안에서 FUZZ:
ffuf -u http://target/api -H "X-Version: FUZZ" -w versions.txt
가상 호스트 탐지:
ffuf -u http://10.10.178.114 -H "Host: FUZZ.10.10.178.114" -w namelist.txt -fs 178
ffuf에서 헤더는 선택이 아닌 전략입니다.
특히 가상 호스트 탐지는Host헤더를 Fuzzing하는 유일한 방법이며,
DNS 해석이 안 되는 환경에서 매우 강력한 무기가 됩니다.
헤더는 상황에 맞춰 반드시 적절히 활용해야 하는 실전 핵심 요소입니다.