Skip to main content

FFUF

Basic Usage

Fuzz File Paths

ffuf -w wordlist.txt -u https://example.com:PORT/FUZZ

Fuzz File Extensions

ffuf -w wordlist.txt -u https://example.com/index.FUZZ

File names

ffuf -w wordlist.txt -u https://example.com/blog/FUZZ.php

Use command output as a word list, for example fuzz user IDs with seq command

ffuf -c -w <(seq 1 1000) -u https://example.com/api/users/FUZZ

Generate wordlists of numbers with leading zeros

ffuf -c -w <(seq -f "%04g" 1 1000) -u https://example.com/api/users/FUZZ

Note: %04g generates numbers with 4 digits with leading zeros.

Recursive Fuzzing

ffuf -recursion -recursion-depth 3 -w wordlist.txt -u https://example.com/FUZZ

Set Cookies

ffuf -b "NAME1=VALUE1; NAME2=VALUE2" -w wordlist.txt -u https://example.com/FUZZ

Multiple Wordlists

Try different usernames and passwords (Clusterbomb)

ffuf -w users.txt:USER -w passwords.txt:PASS -u https://example.com/login?username=USERFUZZ&password=PASSFUZZ --mode clusterbomb

Try different usernames and passwords (Pitchfork)

ffuf -w users.txt:USER -w passwords.txt:PASS -u https://example.com/login?username=USERFUZZ&password=PASSFUZZ --mode pitchfork

Fuzz multiple parts of the JSON request

ffuf -w usernames.txt:U -w passwords.txt:P -X POST -d '{"username":"USERFUZZ","password":"PASSFUZZ"}' -H 'Content-Type: application/json' -u https://example.com/api/login

Fuzz both directory and filenames

ffuf -w dirs.txt:DIR -w files.txt:FILE -u https://example.com/DIR/FILE

Fuzz with request file

ffuf -request request.txt -request-proto http -mode clusterbomb -w usernames.txt:USERFUZZ -w passwords.txt:PASSFUZZ -mc 200

Subdomains and Vhosts

Subdomains

ffuf -w wordlist.txt -u https://FUZZ.example.com/

VHosts

ffuf -w wordlist.txt -u http://example.com/ -H 'Host: FUZZ.example.com'

HTTP Parameters

Parameter names - GET

ffuf -w wordlist.txt -u http://example.com/index.php?FUZZ=key

Parameter names - POST

ffuf -w wordlist.txt -u https://example.com/index.php -X POST -d 'FUZZ=key' -H 'Content-Type: application/x-www-form-urlencoded' 

Parameter value - POST

ffuf -w ids.txt -u https://example.com/index.php -X POST -d 'id=FUZZ' -H 'Content-Type: application/x-www-form-urlencoded'

Fuzzing JSON Post data

ffuf -X POST -H "Content-Type: application/json" -d '{"username": "admin", "password": "FUZZ"}' -w /path/to/wordlist.txt -u http://example.com/api/login

Headers

Change the user agents

ffuf -w wordlist.txt -u https://example.com/FUZZ -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0"

Set Content-type header

ffuf -w wordlist.txt -u https://example.com/FUZZ -H "Content-Type: application/json" -X POST

Setting Authorization header

ffuf -w /path/to/wordlist.txt -u https://example.com/FUZZ -H "Authorization: Bearer mytoken"

Bearer token value

ffuf -w tokens.txt -H "Authorization: Bearer FUZZ" -u https://example.com/api/resource

Header value

ffuf -w /path/to/wordlist.txt -u http://example.com -H "X-Forwarded-For: FUZZ"

Rate limits

Rate limit to 50 rq/s

ffuf -rate 50 -w wordlist.txt -u https://example.com/FUZZ

Set Number of threads

ffuf -t 5 -w wordlist.txt -u https://example.com/FUZZ

Delays

ffuf -w wordlist.txt -u https://example.com/FUZZ -t 2 -p 1

Filters

Filter 301 and 302 HTTP codes

ffuf -fc 301,302 -w wordlist.txt -u https://example.com/FUZZ

Filter 403 HTTP codes with Regex

ffuf -u https://example.com/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-files-lowercase.txt -fr '/\..*'

Filter by response size of 2003 bytes

ffuf -fs 2003 -w wordlist.txt -u https://example.com/FUZZ

Filter by response size in range between 2000 and 3000 bytes

ffuf -fs 2000-3000 -w wordlist.txt -u https://example.com/FUZZ

Filter by lines

ffuf -fl 5 -w wordlist.txt -u https://example.com/FUZZ

Filter by word count

ffuf -fw 10 -w wordlist.txt -u https://example.com/FUZZ

Automatically calibrate filtering options

ffuf -ac -w wordlist.txt -u https://example.com/FUZZ

Matchers

Matching Status Code

ffuf -u https://example.com/FUZZ -w wordlist.txt -mc 200

Matching Response Size

ffuf -u https://example.com/FUZZ -w wordlist.txt -ms 1000

You can also match a range of response sizes:

ffuf -u https://example.com/FUZZ -w wordlist.txt -ms 900-1100

Matching on Word Count

ffuf -u https://example.com/FUZZ -w wordlist.txt -mw 50

Matching by Response Lines

ffuf -u https://example.com/FUZZ -w wordlist.txt -ml 10

Regex Matching

ffuf -w /path/to/wordlist.txt -u https://example.com/F

Output Options

Save results in JSON

ffuf -w /path/to/wordlist.txt -u https://example.com/FUZZ -o results.json -of json

Save results in CSV

ffuf -w wordlist.txt -u https://example.com/FUZZ -o results.csv -of csv

Save output in all supported formats:

ffuf -w wordlist.txt -u https://example.com/FUZZ -o results -of all