
Ffuf (Fuzz Faster U Fool) is a high-performance web fuzzer written in Go, specifically designed for directory discovery, virtual host enumeration, and fuzzing of HTTP parameters. Known for its speed and flexibility, it allows security researchers to quickly identify hidden resources and potential vulnerabilities by testing large wordlists against web applications using highly customizable filters and matchers.
Installation
sudo apt install ffufsudo apt install ffufgo install github.com/ffuf/ffuf/v2@latestbrew install ffufsudo snap install ffufwget https://github.com/ffuf/ffuf/releases/latest/download/ffuf_Linux_amd64.tar.gztar -xvf ffuf_Linux_amd64.tar.gzchmod +x ffufsudo mv ffuf /usr/local/bin/wget https://github.com/ffuf/ffuf/releases/latest/download/ffuf_Windows_amd64.zipgit clone https://github.com/ffuf/ffuf.gitcd ffufgo buildffuf -hffuf -VBasic Usage
ffuf -u https://target.com/FUZZ -w wordlist.txt #Basic directory fuzzingffuf -u https://target.com/FUZZ -w wordlist.txt -mc 200 #Show only successful resultsffuf -u https://target.com/FUZZ -w wordlist.txt -mc 200,301,302 #Show successful results and 30x redirectsffuf -u https://target.com/FUZZ -w wordlist.txt -s #Silent modeffuf -u https://target.com/FUZZ -w wordlist.txt -v #Verbose outputffuf -u https://target.com/FUZZ -w wordlist.txt -o results.json #Save resultsDirectory & File Discovery
ffuf -u https://target.com/FUZZ -w directories.txt #Directory brute forceffuf -u https://target.com/FUZZ -w directories.txt -mc 200,301,302,403 #Directory scan with common status codesffuf -u https://target.com/FUZZ.bak -w wordlist.txt #Scan for backup filesffuf -u https://target.com/FUZZ.conf -w wordlist.txt #Scan for config filesffuf -u https://target.com/.FUZZ -w wordlist.txt #Find hidden filesRecursive Directory Discovery
ffuf -u https://target.com/FUZZ -w directories.txt -recursion #Enable recursionffuf -u https://target.com/FUZZ -w directories.txt -recursion -recursion-depth 3 #Recursive scan with depthffuf -u https://target.com/FUZZ -w directories.txt -recursion -mc 200,301,302 #Recursive scan with filteringVirtual Host Discovery
ffuf -u https://target.com -H "Host: FUZZ.target.com" -w subdomains.txt #Vhost fuzzingffuf -u https://target.com -H "Host: FUZZ.target.com" -w subdomains.txt -mc 200 #Vhost discovery with filteringffuf -u https://target.com -H "Host: FUZZ.target.com" -w subdomains.txt -fs 4242 #Vhost fuzzing with size filterSubdomain Fuzzing
ffuf -u https://FUZZ.target.com -w subdomains.txt #Subdomain brute forceffuf -u https://FUZZ.target.com -w subdomains.txt -mc 200 #Subdomain scan with status filterffuf -u https://FUZZ.target.com -w subdomains.txt -fs 1234 #Subdomain scan ignoring page sizeGET Parameter Fuzzing
ffuf -u "https://target.com/page.php?id=FUZZ" -w payloads.txt #Fuzz GET parameter valuesffuf -u "https://target.com/page.php?id=FUZZ&cat=test" -w payloads.txt #Fuzz multiple parametersffuf -u "https://target.com/page.php?FUZZ=test" -w params.txt #Fuzz parameter namesPOST Parameter Fuzzing
ffuf -u https://target.com/login -X POST -d "username=admin&password=FUZZ" -w passwords.txt #Basic POST fuzzingffuf -u https://target.com/login -X POST -d "username=admin&password=FUZZ" -H "Content-Type: application/x-www-form-urlencoded" -w passwords.txt #POST fuzzing with headersffuf -u https://target.com/login -X POST -d "username=FUZZ&password=test" -w users.txt #Multiple parameter fuzzingJSON API Fuzzing
ffuf -u https://target.com/api/login -X POST -d '{"username":"admin","password":"FUZZ"}' -H "Content-Type: application/json" -w passwords.txt #JSON key value fuzzingffuf -u https://target.com/api/auth -X POST -d '{"token":"FUZZ"}' -H "Content-Type: application/json" -w tokens.txt #JSON token fuzzingHTTP Header Fuzzing
ffuf -u https://target.com -H "User-Agent: FUZZ" -w useragents.txt #User agent Header fuzzingffuf -u https://target.com -H "Authorization: Bearer FUZZ" -w tokens.txt #Authorization header fuzzingffuf -u https://target.com -H "Cookie: session=FUZZ" -w sessions.txt #Cookie fuzzingFiltering Results
ffuf -u https://target.com/FUZZ -w wordlist.txt -mc 200 #Match status codesffuf -u https://target.com/FUZZ -w wordlist.txt -mc 200,301,302 #Match multiple status codesffuf -u https://target.com/FUZZ -w wordlist.txt -fs 4242 #Filter by response sizeffuf -u https://target.com/FUZZ -w wordlist.txt -ms 1024 #Match by response sizeffuf -u https://target.com/FUZZ -w wordlist.txt -fw 50 #Filter by word countffuf -u https://target.com/FUZZ -w wordlist.txt -fl 20 #Filter by line countRate Limiting & Performance
ffuf -u https://target.com/FUZZ -w wordlist.txt -rate 100 #Limit request rate per secondffuf -u https://target.com/FUZZ -w wordlist.txt -t 50 #Set thread countffuf -u https://target.com/FUZZ -w wordlist.txt -p 0.1 #Delay between requests in secondsffuf -u https://target.com/FUZZ -w wordlist.txt -timeout 10 #Timeout setting in secondsOutput Options
ffuf -u https://target.com/FUZZ -w wordlist.txt -o results.json #Save results to json fileffuf -u https://target.com/FUZZ -w wordlist.txt -od /home -o results.json #Save results to json file in custom directoryffuf -u https://target.com/FUZZ -w wordlist.txt -o results.csv -of csv #Save results in CSVffuf -u https://target.com/FUZZ -w wordlist.txt -o report.html -of html #Save results in HTMLffuf -u https://target.com/FUZZ -w wordlist.txt -o results.json -or #Creates a file only if there are resultsProxy Usage (Burp/ZAP)
ffuf -u https://target.com/FUZZ -w wordlist.txt -x http://127.0.0.1:8080 #Send traffic through Burpffuf -u https://target.com/FUZZ -w wordlist.txt -x socks5://127.0.0.1:9050 #Use SOCKS proxyRecursive Web Content Discovery
ffuf -u https://target.com/FUZZ -w directories.txt -recursion #Recursive directory brute forceffuf -u https://target.com/FUZZ -w directories.txt -recursion -recursion-depth 2 #Recursive with depth limitMultiple Wordlists
ffuf -u https://target.com/FUZZ1/FUZZ2 -w directory.txt:FUZZ1 -w file.txt:FUZZ2 -mode clusterbomb #Clusterbomb attackffuf -u https://target.com/FUZZ1/FUZZ2 -w directory.txt:FUZZ1 -w file.txt:FUZZ2 -mode pitchfork #Pitchfork attack



