1. Directory and File Brute Forcing
Basic Directory Fuzzing:
ffuf -w /path/to/wordlist.txt -u https://example.com/FUZZ/- Fuzz common directory names (e.g.,
/admin/,/uploads/).
- Fuzz common directory names (e.g.,
2. Fuzzing Parameters
Basic Parameter Fuzzing:
ffuf -w wordlist.txt -u https://example.com/page.php?param=FUZZ- Replaces
FUZZwith words from the wordlist to test URL parameters.
- Replaces
Filter by Status Code:
ffuf -w wordlist.txt -u https://example.com/page.php?param=FUZZ -mc 200- Shows responses only for the
200 OKstatus code.
- Shows responses only for the
Filter by Content Size:
ffuf -w wordlist.txt -u https://example.com/page.php?param=FUZZ -fs 150- Filters results based on exact response size in bytes.
Fuzzing with JSON Payload (for APIs):
ffuf -w methods.txt -d '{"param": "value"}' -H "Content-Type: application/json" -u https://example.com/api/FUZZ- Fuzzes parameter with JSON data. This is useful for testing API endpoints.
Fuzzing with Cookies:
ffuf -w wordlist.txt -u https://example.com/page.php?param=FUZZ -H "Cookie: sessionID=abc123" # OR, ffuf -w wordlist.txt -u https://example.com/page.php?param=FUZZ -b "sessionID=abc123"- Sends authenticated requests with cookies.
Fuzzing with HTTP Headers:
ffuf -w wordlist.txt -u https://example.com/page.php?param=FUZZ -H "Authorization: Bearer <token>"- Use custom headers (e.g., for bearer tokens or other auth tokens).
3. Fuzzing HTTP Methods
Basic HTTP Method Fuzzing:
ffuf -w methods.txt -X FUZZ -u https://example.com- Fuzzes HTTP methods like
GET,POST,PUT,DELETE, etc. You can use a wordlist with common HTTP methods (methods.txt).
- Fuzzes HTTP methods like
4. Using Proxy with FFUF
HTTP Proxy:
ffuf -x http://127.0.0.1:8080 -w wordlist.txt -u https://example.com/FUZZ- Sends traffic through an HTTP proxy (e.g., Burp Suite running on
127.0.0.1:8080).
- Sends traffic through an HTTP proxy (e.g., Burp Suite running on
Socks Proxy:
ffuf -x socks5://127.0.0.1:1080 -w wordlist.txt -u https://example.com/FUZZ- Sends traffic through a SOCKS proxy, such as a proxy chain (
socks5://127.0.0.1:1080).
- Sends traffic through a SOCKS proxy, such as a proxy chain (
Replay Proxy:
ffuf -replay-proxy http://127.0.0.1:8080 -w wordlist.txt -u https://example.com/FUZZ- Uses a replay proxy to capture requests, replaying them for debugging or additional analysis.
4. Fuzzing Virtual Hosts (VHosts)
Basic Subdomain Bruteforce:
ffuf -w vhosts.txt -u http://FUZZ.example.com- Fuzzes for subdomains using entries from the wordlist.
Advanced VHost Fuzzing (Recommanded):
ffuf -w subdomains.txt -u http://example.com -H "Host: FUZZ.example.com"- Fuzzes the
Hostheader to discover hidden virtual hosts.
- Fuzzes the
5. Brute-Forcing Login Pages
Brute-Force Username & Password:
ffuf -X POST -u https://example.com/login.php -d 'username=admin&password=PASS' -w passwords.txt:PASS -H "Content-Type: application/x-www-form-urlencoded" -H "Cookie: MoodleSession=imj6f8kvqbhf07la0b6o7j1lq2" -r -fr 'Invalid Password.'-d 'username=admin&password=PASS': This is the data sent in the POST request. Here,adminis a fixed username, andPASSwill be replaced by entries from our wordlist.-r: This tellsffufto follow redirects.-fr 'Invalid Password.': This option filters out responses that contain the phrase ‘Invalid Password.’, helping to identify successful logins.
Custom Content-Type:
ffuf -w passwords.txt:PASS -u https://example.com/api/login -X POST -H "Content-Type: application/json" -d '{"username": "admin", "password": "PASS"}'- Fuzzes login requests formatted in JSON (useful for APIs).
5. Handling Rate Limiting and Delays
Delaying Between Requests:
ffuf -w wordlist.txt -u https://example.com/FUZZ -p 2- Adds a 2-second delay between each request to avoid rate-limiting.
Limiting Concurrent Requests:
ffuf -w wordlist.txt -u https://example.com/FUZZ -t 5- Limits concurrent requests to 5 for better control.
6. Using Request Files
Custom Request Replay:
ffuf -request request.txt -w wordlist.txt- Replays a custom request saved in
request.txt, fuzzing only the specified part.
- Replays a custom request saved in
7. Using Proxy with FFUF
HTTP Proxy:
ffuf -x http://127.0.0.1:8080 -w wordlist.txt -u https://example.com/FUZZ- Sends traffic through an HTTP proxy (e.g., Burp Suite running on
127.0.0.1:8080).
- Sends traffic through an HTTP proxy (e.g., Burp Suite running on
Socks Proxy:
ffuf -x socks5://127.0.0.1:1080 -w wordlist.txt -u https://example.com/FUZZ- Sends traffic through a SOCKS proxy, such as a proxy chain (
socks5://127.0.0.1:1080).
- Sends traffic through a SOCKS proxy, such as a proxy chain (
Replay Proxy:
ffuf -replay-proxy http://127.0.0.1:8080 -w wordlist.txt -u https://example.com/FUZZ- Uses a replay proxy to capture requests, replaying them for debugging or additional analysis.
Advanced Techniques and Recommendations:
Regex Filtering:
ffuf -w wordlist.txt -u https://example.com/FUZZ -fr "Unauthorized"- Filters out responses containing specific words using regex (
-fr).
- Filters out responses containing specific words using regex (
Following Redirections:
ffuf -w wordlist.txt -u https://example.com/FUZZ -r- Follows HTTP redirects in the response (
-rflag).
- Follows HTTP redirects in the response (
Multiple Wordlist Delimiters:
ffuf -w ids.txt:ID -w names.txt:NAME -u https://example.com/api/users/ID/NAME- Use multiple wordlists with different delimiters for API fuzzing.