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쿠키 설정
-XHTTP 메소드
-dPOST 데이터

fuzzing ffuf web-hacking recon