ATT&CK: T1595.003 Wordlist Scanning · Reconnaissance (TA0043)
웹 서버에 숨어있는 백오피스 경로, 백업 파일, 미공개 API 등을 찾는 작업. 핵심은 두 가지:
- 좋은 워드리스트 (SecLists가 사실상 표준)
- soft-404 캘리브레이션 — 404를 200으로 돌려주는 서버에서도 노이즈를 걸러내는 능력
1. 설치와 워드리스트
# ffuf
go install github.com/ffuf/ffuf/v2@latest
# SecLists (워드리스트 모음)
git clone --depth 1 https://github.com/danielmiessler/SecLists.git \
/usr/share/seclists
자주 쓰는 리스트:
Discovery/Web-Content/raft-medium-directories.txt(디렉터리)Discovery/Web-Content/raft-medium-files.txt(파일)Discovery/Web-Content/common.txt(가벼운 시작)
2. 기본 디렉터리 열거
ffuf -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt \
-u https://target.example.com/FUZZ \
-c -o scans/ffuf-dirs.json -of json
FUZZ: 치환 자리표시자.-c: 컬러 출력. 터미널에서만 유용.-of json: JSON으로 저장 → 후처리 편함.
3. soft-404 자동 캘리브레이션
404 대신 200으로 “페이지가 없습니다” 반환하는 서버에서 가장 흔한 삽질. ffuf의 -ac 하나로 끝:
ffuf -w wordlist.txt -u https://target.example.com/FUZZ -ac
-ac: Auto-calibrate. 랜덤 문자열로 몇 번 요청해서 “존재하지 않을 때의 응답 모양(길이·단어수)“을 학습하고, 매칭되는 결과를 자동 제외.
더 강한 필터링:
ffuf -w wordlist.txt -u https://target.example.com/FUZZ \
-ac -fs 1024 -fw 150
-fs: filter size. 응답 바이트 수가 특정 값인 결과 제외.-fw: filter words. 응답 단어 수 기반 제외.- 반대로 특정 값만 보려면
-ms,-mw.
4. 확장자 조합
디렉터리와 파일을 함께 보려면 -e:
ffuf -w wordlist.txt -u https://target.example.com/FUZZ \
-e .php,.bak,.old,.zip,.tar.gz \
-ac
이러면 admin, admin.php, admin.bak 등을 모두 시도.
5. 재귀 열거
디렉터리 하나 찾을 때마다 그 아래로 재귀:
ffuf -w wordlist.txt -u https://target.example.com/FUZZ \
-recursion -recursion-depth 2 -ac
주의: 깊이 2만 돼도 요청 수가 폭발한다. 큰 워드리스트 + 재귀는 공격 네트워크를 사실상 DoS로 만든다.
6. 파라미터 fuzzing
경로 외에 쿼리 파라미터 이름도 열거 가능:
ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt \
-u "https://target.example.com/api/user?FUZZ=test" \
-mc 200,500 -fs 42 -ac
응답 길이가 급변하는 파라미터가 “진짜 처리되는” 입력일 가능성이 높다.
7. 인증된 세션으로 fuzzing
쿠키/헤더 포함:
ffuf -w wordlist.txt -u https://target.example.com/FUZZ \
-H "Cookie: session=abc123" \
-H "User-Agent: Mozilla/5.0" \
-ac
-H를 여러 번 쓸 수 있고, body 쪽은 -d.
8. OPSEC
- 기본 UA가
Fuzz Faster U Fool— WAF가 즉시 블록.-H "User-Agent: ..."로 교체. - 속도 제어:
-rate(초당 요청),-p(요청 간 랜덤 딜레이). - 재귀 + 큰 리스트는 자제. 조직 네트워크에서 수십 kpps 트래픽은 바로 블루팀 호출.
참고
- ffuf GitHub
- SecLists
- MITRE ATT&CK — T1595.003