Web Fuzzing Tools (ffuf, Wfuzz)

Web fuzzing tools such as ffuf and Wfuzz automate the discovery of hidden directories, parameters, virtual hosts, API endpoints, files, and injection points by sending大量s of requests with substituted payloads. These tools reveal attack surfaces that developers do not intentionally expose. Web fuzzing is essential for mapping the real footprint of an application before deeper testing.

Understanding Web Fuzzing

Web fuzzing brute-forces web application surfaces using wordlists. It replaces placeholders inside URLs, headers, POST bodies, or cookies to identify:

• hidden directories
• hidden files
• backup files
• misconfigured endpoints
• admin panels
• SSRF endpoints
• unused parameters
• vulnerable parameters
• brute-forcible GET/POST inputs

Fuzzing shows entry points that scanners and crawlers often miss.

Why Web Fuzzing Tools Matter

Web fuzzers detect:

• endpoint exposure
• forgotten dev routes
• backup files such as .old or .bak
• hidden API versions
• misconfigurations in routing
• file disclosure vectors
• unlinked admin pages
• potential injection parameters

They reveal the true structure of the application.

ffuf and Wfuzz are the two most widely used command-line fuzzers for modern web testing.

ffuf Overview

ffuf (Fast Web Fuzzer):

• extremely fast
• supports recursion
• fuzzing in URL, headers, cookies, POST bodies
• flexible match/ignore filters
• used for web enumeration, API discovery, parameter mining

Example placeholders:

FUZZ
FUZ2Z

Wfuzz Overview

Wfuzz:

• advanced filtering
• multiple wordlist injection points
• complex payload structures
• supports authentication
• flexible encoders
• fuzzing multiple parameters simultaneously

Wfuzz is ideal for scenarios where multiple inputs need fuzzing at once.


ffuf Features

• directory fuzzing
• vhost fuzzing
• parameter discovery
• POST body fuzzing
• recursion
• filtering by status code, size, words
• proxy support
• raw request fuzzing

ffuf is optimized for speed and large-scale fuzzing.


Wfuzz Features

• multiple payload injection
• fuzzing via POST, GET, headers, cookies
• authentication support
• encoded payloads
• recursive fuzzing
• JSON and XML injection support

Wfuzz is more flexible, especially for heavy customization.


Practical Section (Full-Length)

Extensive hands-on tasks using ffuf and Wfuzz.


Practical 1: Directory Fuzzing With ffuf

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

Discover hidden directories and files.


Practical 2: Filter by Status Code

ffuf -u https://target.com/FUZZ -w wordlist.txt -fc 404

Hide 404 responses.


Practical 3: Filter by Response Size

ffuf -u https://target.com/FUZZ -w wordlist.txt -fs 0

Exclude zero-length responses.


Practical 4: Recursion in ffuf

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

Automatically fuzz discovered directories.


Practical 5: Parameter Discovery With ffuf

ffuf -u "https://target.com/page.php?FUZZ=test" -w params.txt

Find hidden GET parameters.


Practical 6: POST Parameter Fuzzing

ffuf -u https://target.com/login -w params.txt -X POST -d "FUZZ=test"

Detect valid POST parameter names.


Practical 7: Header Fuzzing

ffuf -u https://target.com/ -w headers.txt -H "FUZZ: test"

Find sensitive or internal headers.


Practical 8: Cookie Fuzzing

ffuf -u https://target.com/profile -w cookies.txt -b "FUZZ=1"

Find cookie-based injection points.


Practical 9: API Version Discovery

ffuf -u https://api.target.com/vFUZZ/ -w versions.txt

Identify hidden API versions.


Practical 10: Virtual Host Discovery

ffuf -u http://target.com -H "Host: FUZZ.target.com" -w subdomains.txt -fc 404

Find vhosts.


Practical 11: File Extension Fuzzing

ffuf -u https://target.com/admin/FUZZ -w extensions.txt

Test for .php, .old, .bak, .zip.


Practical 12: Using Raw Request Files

Save request to file:

ffuf -request raw.txt -w wordlist.txt -request-proto http

Useful when fuzzing complex applications.


Wfuzz Practical Section


Practical 13: Basic Directory Fuzzing With Wfuzz

wfuzz -c -w wordlist.txt https://target.com/FUZZ

Practical 14: Filter by Status Code

wfuzz -w wordlist.txt -c --hc 404 https://target.com/FUZZ

Practical 15: Multiple Injection Points

wfuzz -w users.txt -w passwords.txt \
  "https://target.com/login?user=FUZZ&pass=FUZ2Z"

Performs double-fuzzing.


Practical 16: Header-Based Fuzzing (Wfuzz)

wfuzz -w headers.txt -H "FUZZ: test" https://target.com

Practical 17: POST Body Fuzzing (JSON)

wfuzz -w data.txt -d '{"user":"FUZZ"}' https://target.com/api/login

Practical 18: Authenticated Fuzzing

wfuzz -w wordlist.txt -b "sessionid=abcd" https://target.com/FUZZ

Practical 19: GraphQL Fuzzing

wfuzz -w graphql.txt -d '{"query":"FUZZ"}' https://target.com/graphql

Tests GraphQL query structures.


Practical 20: Full Fuzzing Architecture

Build a complete fuzzing workflow:

• ffuf for directory scans
• ffuf for parameter discovery
• ffuf for vhost enumeration
• Wfuzz for multi-parameter fuzzing
• fuzz JSON, XML, and GraphQL
• use raw request files
• run ffuf nightly in CI
• export fuzz results to DevSecOps dashboards
• use findings to feed DAST and API fuzzers
• recursively fuzz API responses
• monitor server logs for unusual behavior

This creates a complete web fuzzing capability inside your DevSecOps pipeline.


Intel Dump

• ffuf and Wfuzz enumerate hidden directories, parameters, APIs, vhosts, and injection points
• ffuf is optimized for speed
• Wfuzz is optimized for complex payload injection
• Fuzzing reveals real attack surfaces missed by crawlers
• Practicals include directory fuzzing, parameter fuzzing, header fuzzing, vhost fuzzing, JSON fuzzing, recursion, raw request fuzzing, and multi-parameter fuzzing
• A full fuzzing architecture uses both tools for complete coverage

HOME COMMUNITY LEARN DASHBOARD