Lightning-fast web fuzzing tool written in Go for content discovery and testing
ffuf (Fuzz Faster U Fool) is a fast web fuzzer designed for discovering hidden content, testing parameters, and fuzzing various parts of web applications. Written in Go, itβs incredibly fast and supports multiple fuzzing modes including directory brute-forcing, parameter fuzzing, and virtual host discovery.
Key Features:
sudo apt update
sudo apt install ffuf -y
go install github.com/ffuf/ffuf@latest
git clone https://github.com/ffuf/ffuf
cd ffuf
go build
sudo mv ffuf /usr/local/bin/
ffuf -V
# Basic directory fuzzing
ffuf -u http://target.com/FUZZ -w /usr/share/wordlists/dirb/common.txt
# With file extensions
ffuf -u http://target.com/FUZZ -w wordlist.txt -e .php,.html,.txt,.bak
# Recursive fuzzing
ffuf -u http://target.com/FUZZ -w wordlist.txt -recursion -recursion-depth 2
# GET parameter fuzzing
ffuf -u http://target.com/page.php?FUZZ=value -w params.txt
# POST parameter fuzzing
ffuf -u http://target.com/login -w params.txt -X POST -d "FUZZ=test"
# Multiple parameters
ffuf -u http://target.com/api?param1=FUZZ1¶m2=FUZZ2 -w wordlist.txt:FUZZ1,FUZZ2
# Subdomain/vhost fuzzing
ffuf -u http://target.com -H "Host: FUZZ.target.com" -w subdomains.txt
# Filter by size
ffuf -u http://target.com -H "Host: FUZZ.target.com" -w subdomains.txt -fs 1234
# Filter by status code
ffuf -u http://target.com/FUZZ -w wordlist.txt -fc 404,403
# Filter by response size
ffuf -u http://target.com/FUZZ -w wordlist.txt -fs 1234
# Filter by word count
ffuf -u http://target.com/FUZZ -w wordlist.txt -fw 100
# Filter by line count
ffuf -u http://target.com/FUZZ -w wordlist.txt -fl 50
# Filter by regex
ffuf -u http://target.com/FUZZ -w wordlist.txt -fr "error"
# Match specific status codes
ffuf -u http://target.com/FUZZ -w wordlist.txt -mc 200,301
# Match by size
ffuf -u http://target.com/FUZZ -w wordlist.txt -ms 1234
# Match by words
ffuf -u http://target.com/FUZZ -w wordlist.txt -mw 100
# Increase threads (default 40)
ffuf -u http://target.com/FUZZ -w wordlist.txt -t 100
# Add delay between requests
ffuf -u http://target.com/FUZZ -w wordlist.txt -p 0.5
# Rate limiting (requests per second)
ffuf -u http://target.com/FUZZ -w wordlist.txt -rate 100
# Basic authentication
ffuf -u http://target.com/FUZZ -w wordlist.txt -H "Authorization: Basic dXNlcjpwYXNz"
# Cookie-based auth
ffuf -u http://target.com/FUZZ -w wordlist.txt -b "session=abc123"
# Custom headers
ffuf -u http://target.com/FUZZ -w wordlist.txt -H "X-Custom-Header: value"
# Search for admin interfaces
ffuf -u http://target.com/FUZZ -w /usr/share/seclists/Discovery/Web-Content/admin-panels.txt \
-mc 200,301,302 -fc 404 -c
# Find API endpoints
ffuf -u http://target.com/api/FUZZ -w api-endpoints.txt \
-H "Authorization: Bearer token" \
-mc 200,201 -c
# Find backup files
ffuf -u http://target.com/FUZZ -w wordlist.txt \
-e .bak,.old,.backup,.zip,.tar.gz \
-fc 404 -c
# Fuzz parameters looking for SQL injection
ffuf -u http://target.com/page.php?id=FUZZ -w /usr/share/seclists/Fuzzing/SQLi/quick-SQLi.txt \
-mr "error|sql|mysql|syntax" -c
# Use multiple wordlists
ffuf -u http://target.com/FUZZ1/FUZZ2 \
-w dirs.txt:FUZZ1 \
-w files.txt:FUZZ2 \
-mc 200 -c
# JSON output
ffuf -u http://target.com/FUZZ -w wordlist.txt -o results.json -of json
# CSV output
ffuf -u http://target.com/FUZZ -w wordlist.txt -o results.csv -of csv
# HTML report
ffuf -u http://target.com/FUZZ -w wordlist.txt -o results.html -of html
# All formats
ffuf -u http://target.com/FUZZ -w wordlist.txt -o results -of all
# Silent mode (only show results)
ffuf -u http://target.com/FUZZ -w wordlist.txt -s
# Verbose mode (show all details)
ffuf -u http://target.com/FUZZ -w wordlist.txt -v
Create a config file ~/.ffufrc:
[http]
headers = ["User-Agent: ffuf"]
[general]
colors = true
delay = 0
maxtime = 0
maxtime-job = 0
quiet = false
rate = 0
stopon403 = false
stopon429 = false
stoponerrors = false
threads = 40
verbose = false
[output]
debuglog = ""
outputdirectory = ""
outputformat = "json"
# Fast scan with auto-calibration
ffuf -u http://target.com/FUZZ -w wordlist.txt -ac -t 100
# Smart filtering (auto-detect false positives)
ffuf -u http://target.com/FUZZ -w wordlist.txt -ac
# SecLists (must have)
git clone https://github.com/danielmiessler/SecLists.git
# Common wordlists locations
/usr/share/wordlists/dirb/common.txt
/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
/usr/share/seclists/Discovery/Web-Content/
# Pipe to other tools
ffuf -u http://target.com/FUZZ -w wordlist.txt -mc 200 -s | \
awk '{print $1}' | \
httpx -silent
# Use with Burp Suite
ffuf -u http://target.com/FUZZ -w wordlist.txt -x http://127.0.0.1:8080
-rate flag-ac or manual filtering-timeout to handle slow responsesffuf is a powerful tool for security testing. Always ensure you have:
Fast fuzzing for faster findings. Use responsibly and ethically.