This post is part of an ongoing practical bug bounty series.
If you haven't read them yet, start here:
- Part 1 โ A Real-World Recon Workflow (One Command) ๐ https://medium.com/bug-bounty-hunting-a-comprehensive-guide-in/a-real-world-recon-workflow-one-command-clean-results-0043c6d9b552
- Part 2 โ From Automation to Clean Results ๐ https://medium.com/bug-bounty-hunting-a-comprehensive-guide-in/part-2-a-real-world-recon-workflow-one-command-clean-results-989d73ffe14a
- https://medium.com/bug-bounty-hunting-a-comprehensive-guide-in/part-3-from-recon-to-critical-impact-chaining-bugs-the-right-way-6a1818f08cb0
This article focuses on one tool โ not theory, not buzzwords โ but how ffuf actually leads to real bugs when used correctly.
๐ง What ffuf Really Is (and What It Isn't)
Most people describe ffuf as:
"A fast web fuzzer"
That's true โ but incomplete.
ffuf is an attack surface discovery engine. Used correctly, it helps you find:
- Hidden endpoints
- Forgotten APIs
- Admin panels
- IDOR candidates
- 403-protected paths
- Logic flaws, not just directories
Used incorrectly, it gives you:
- Thousands of useless results
- False positives
- Burnout
Let's avoid that.
๐ ๏ธ Installation (Kali / Parrot)
ffuf is preinstalled on Kali. If not:
sudo apt update && sudo apt install ffuf -yCheck:
ffuf -h๐ฏ Step 1: Smart Target Selection (Critical)
Do not run ffuf blindly.
Bad target:
https://target.com/Good targets:
- Discovered subdomains
- API hosts
- Admin or app-specific paths
- Endpoints found via:
- Burp
- waymore
- katana
- historical URLs
Example:
https://api.target.com/FUZZ๐ Step 2: Wordlists That Actually Matter
Avoid huge lists at first.
Recommended:
raft-small-words.txtapi-endpoints.txt- Custom lists built from:
- JavaScript files
- Historical URLs
- Burp proxy history
Example:
ffuf -u https://api.target.com/FUZZ \
-w raft-small-words.txt \
-mc 200,204,301,302,401,403๐ Step 3: Filtering Noise (This Is Where Pros Win)
Most beginners stop here. Don't.
Use filters aggressively:
-fs 0
-fl 10
-fw 50Example:
ffuf -u https://target.com/FUZZ \
-w common.txt \
-fs 4242You're not looking for many results. You're looking for different results.
๐ช Step 4: ffuf โ 403 Bypass Discovery
403 responses are gold, not dead ends.
ffuf -u https://target.com/FUZZ \
-w common.txt \
-mc 403Now test bypass techniques manually or scripted:
/admin/./admin;/admin/%2e- Header tricks:
X-Forwarded-For: 127.0.0.1X-Original-URL
This is where real findings start.
๐ Step 5: ffuf โ Burp Suite (Clean Handoff)
Anything interesting goes into Burp, not automation.
Workflow:
- Send endpoint to Repeater
- Change:
- HTTP methods
- User IDs
- Object references
- Observe:
- Access control issues
- IDOR patterns
- Role-based failures
ffuf finds the door. Burp tells you what's behind it.
๐งช Real-World Bugs Found With ffuf
Things I've personally seen (and reported):
/api/admin/usersโ IDOR/internal/exportโ data leakage/v2/backupโ full database download/admin/healthโ internal metadata- 403 โ bypass โ privilege escalation
None of these came from "spray and pray".
โ Common ffuf Mistakes (Avoid These)
- Running massive wordlists immediately
- Ignoring response size
- Treating ffuf results as findings
- Not chaining into Burp
- Not understanding the application logic
ffuf is discovery, not exploitation.
๐ง Where ffuf Fits in a Real Workflow
Recon โ httpx โ ffuf โ Burp โ IDOR / Access Control โ ImpactIt's a bridge, not a destination.
๐ Final Thoughts
If you learn one tool deeply, ffuf is a perfect choice.
Not because it's fast โ but because it forces you to think about:
- Application structure
- Logic
- Access control
- Impact
That's what bug bounty rewards.
๐ If this helped you, please clap โ it really helps the post reach more readers.
โ Support my work: ๐ https://buymeacoffee.com/ghostyjoe