본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 보안·개인정보 · 윈도우즈 유틸

ffuf

0

ffuf는 Go 언어로 작성된 빠른 웹 퍼징 도구로, ffuf 프로젝트에서 개발한 오픈소스 명령줄 유틸리티입니다.

웹정보보안침투 테스트퍼징

소개

ffuf는 Go 언어로 작성된 빠른 웹 퍼징 도구로, ffuf 프로젝트에서 개발한 오픈소스 명령줄 유틸리티입니다. URL, 헤더, POST 데이터 등에서 FUZZ 키워드를 자리에 넣어 다양한 입력을 자동 대입하며, 웹 애플리케이션의 숨겨진 경로나 가상 호스트, 파라미터 값을 폭넓게 탐색하는 데 사용됩니다. 침투 테스트와 정보보안 점검 과정에서 콘텐츠 디스커버리 및 파라미터 검사용으로 널리 활용됩니다.

상세정보

다양한 FUZZ 위치 지원

URL, HTTP 헤더, POST 데이터 등 요청 본문 어디든 FUZZ 키워드를 넣어 퍼징 지점을 자유롭게 지정할 수 있습니다. GET과 POST뿐 아니라 임의의 HTTP 메서드, 쿠키, 클라이언트 인증서, HTTP/2, 프록시(SOCKS5 또는 HTTP), 리플레이 프록시 등을 함께 사용할 수 있습니다.

콘텐츠 및 가상 호스트 디스커버리

워드리스트와 함께 디렉터리 탐색을 수행하고, 응답 크기·상태 코드·줄 수·단어 수·응답 시간 기준으로 매처와 필터를 조합해 원하는 결과만 추출할 수 있습니다. Host 헤더 기반 가상 호스트 탐색, 재귀 스캔, 재귀 깊이 및 전략(default, greedy) 제어, 자동 보정(-ac) 기능을 제공합니다.

파라미터 및 POST 데이터 퍼징

GET 파라미터 이름·값, POST 본문, JSON 페이로드, 원시 HTTP 요청 파일 등 다양한 입력 형태를 퍼징할 수 있습니다. 인코더(urlencode, b64encode 등)와 외부 뮤테이터를 연동해 Radamsa 같은 도구로 생성한 테스트 케이스를 입력으로 사용할 수도 있습니다.

실행 제어 및 상호작용 모드

동시 스레드 수(-t), 초당 요청 비율(-rate), 요청 간 지연(-p), 전체 또는 작업별 최대 실행 시간(-maxtime, -maxtime-job)을 지정해 작업 부하를 조절할 수 있습니다. 실행 중 Enter를 누르면 일시 중지 후 필터 재구성, 큐 관리, 현재 상태 저장, 작업 재시작 등을 수행할 수 있는 상호작용 모드로 진입합니다.

설정 파일과 출력 형식

$XDG_CONFIG_HOME/ffuf/ffufrc 기본 설정 파일을 사용하며, -config 옵션으로 별도 설정 파일을 지정할 수 있습니다. 결과는 json, ejson, html, md, csv, ecsv 등 다양한 형식으로 파일 또는 디렉터리에 저장할 수 있고, 컬러 출력과 무음 모드, 디버그 로그도 지원합니다.

설치 및 기본 사용

가장 빠르게 시작하는 방법은 GitHub 릴리스 페이지에서 운영체제에 맞는 사전 빌드 바이너리를 내려받아 압축을 풀고 실행하는 것입니다. Windows에서는 winget을 이용해 ffuf.ffuf 패키지로 설치할 수 있고, Scoop 사용자라면 scoop install ffuf, macOS 사용자라면 brew install ffuf 명령으로 설치할 수 있습니다. Go 1.20 이상이 설치된 환경에서는 go install github.com/ffuf/ffuf/v2@latest 명령으로 빌드하거나, 저장소를 클론해 go get과 go build로 직접 빌드할 수도 있습니다.

퍼징을 시작할 때는 FUZZ 키워드를 포함한 대상 URL과 워드리스트를 지정합니다. 예를 들어 ffuf -w /path/to/wordlist -u https://target/FUZZ 형태로 실행하면 사전에 담긴 경로 후보들이 순차적으로 시험됩니다. 결과는 기본적으로 컬러로 표시되며, -v로 자세한 URL과 리다이렉트 위치를 함께 확인할 수 있습니다.

활용 예시

  • 디렉터리 탐색: ffuf -w wordlist.txt -u https://example.org/FUZZ -mc all -fs 42 -c -v
  • Host 헤더 기반 가상 호스트 퍼징: ffuf -w hosts.txt -u https://example.org/ -H “Host: FUZZ” -mc 200
  • POST JSON 데이터 퍼징: ffuf -w entries.txt -u https://example.org/ -X POST -H “Content-Type: application/json” -d ‘{“name”:”FUZZ”,”anotherkey”:”anothervalue”}’ -fr “error”
  • 여러 워드리스트 동시 사용 및 반사 매칭: ffuf -w params.txt:PARAM -w values.txt:VAL -u https://example.org/?PARAM=VAL -mr “VAL” -c

제한·라이선스·확인사항

ffuf는 MIT 라이선스로 배포되며, LICENSE 파일과 라이선스 전문 링크를 통해 세부 조항을 확인할 수 있습니다. 빌드 시 Git 태그 정보가 임베드되지 않아 로컬 빌드는 공식 릴리스로 간주되지 않으므로, 배포용 바이너리는 릴리스 페이지에서 직접 내려받는 것이 권장됩니다.

시스템 요구사항

Go 1.20 이상 환경에서 빌드 및 실행이 가능하며, 사전 빌드된 바이너리 배포판은 x64 아키텍처의 zip 패키지로 제공됩니다. 퍼징 대상이 되는 대상 URL과 워드리스트 파일이 별도로 필요하며, 다양한 워드리스트 모드(clusterbomb, pitchfork, sniper)를 사용할 수 있습니다.