What is Fuzzing?
퍼징은 다양한 유형의 사용자 입력을 특정 인터페이스에 전송해 어떻게 반응하는지 연구하는 테스트 기법이다.
- SQLi 퍼징: 임의의 특수 문자를 전송해 서버 반응 확인
- BOF 퍼징: 긴 문자열을 전송하고 길이를 증가시켜 바이너리 손상 여부 확인
웹 퍼징 테스트는 일반적으로 사용되는 용어를 딕셔너리 파일로 활용해 웹 서버가 해당 용어를 허용하는지 확인한다. 웹 서버는 사용 가능한 모든 링크와 디렉터리를 제공하지 않기 때문에 다양한 요청을 서버가 확인하고 어떤 요청이 페이지를 반환하는지 확인해야 한다.
Wordlists
https://github.com/danielmiessler/SecLists
# HTB Pwnbox 경로
/opt/useful/SecLists/Discovery/Web-Content/directory-list-2.3-small.txt
도구별 용도
| 도구 | 주요 용도 |
|---|---|
| ffuf | 디렉토리/파일 열거, 숨겨진 파라미터 테스트, 브루트포스 |
| gobuster | 디렉토리/파일/가상호스트 열거, 서브도메인 열거, WordPress 정보 수집 |
| katana | 엔드포인트 분석 |
| Subsurfer | 웹 서버 정보 수집, 서브도메인 열거, 포트 수집 |
| wfuzz/wenum | 디렉토리/파일 열거, 파라미터 테스트, 브루트포스 |
| feroxbuster | 연결되지 않은 콘텐츠 강제 탐색 |
wenum은 wfuzz의 포크 오픈소스로, wfuzz에 에러가 많아 wenum을 추천한다.
FFUF 사용법
디렉토리 퍼징
# 기본 디렉토리 퍼징
ffuf -w [워드리스트]:FUZZ -u https://url/FUZZ
# 응답 코드 필터링 (404 제외, 전체 응답 코드 확인)
ffuf -w [워드리스트]:FUZZ -u http://url/FUZZ -mc all -fc 404 -t 50파라미터 퍼징
# GET 파라미터 퍼징
ffuf -w [워드리스트]:FUZZ -u https://url/page.php?FUZZ=value
# POST 데이터 퍼징
ffuf -w [워드리스트]:FUZZ -u https://url/page.php -X POST -d "param=FUZZ"서브도메인 퍼징
ffuf -w [워드리스트]:FUZZ -u http://FUZZ.target.com -H "Host: FUZZ.target.com"확장자 퍼징
ffuf -w [워드리스트]:FUZZ -u https://url/indexFUZZ주요 옵션
| 옵션 | 설명 |
|---|---|
-w | 워드리스트 경로 |
-u | 대상 URL |
-mc | 매칭할 HTTP 상태 코드 |
-fc | 필터링할 HTTP 상태 코드 |
-t | 스레드 수 |
-o | 결과 파일 저장 |
-of | 출력 형식 (json, csv 등) |
-H | 헤더 설정 |
-b | 쿠키 설정 |
-X | HTTP 메소드 |
-d | POST 데이터 |