Using FFUF with Burp
Guide
Using FFUF with Burp Suite for Smarter Web Fuzzing
When performing web application security assessments, FFUF (Fuzz Faster U Fool) and Burp Suite complement each other extremely well. FFUF provides fast and flexible fuzzing capabilities, while Burp Suite allows you to intercept, inspect, modify, and analyze every HTTP request and response.
Instead of treating them as separate tools, combining them creates a much more efficient workflow for discovering hidden endpoints, testing authentication, and analyzing complex applications.
Why combine FFUF and Burp Suite?
FFUF excels at sending thousands of requests quickly using wordlists, making it ideal for tasks such as:
- Directory and file discovery
- Parameter fuzzing
- Virtual host enumeration
- Header fuzzing
- Authentication testing
- API endpoint discovery
Meanwhile, Burp Suite provides visibility into every request, allowing you to:
- Inspect raw HTTP traffic
- Modify requests manually
- Replay interesting requests
- Analyze responses
- Send requests to Repeater or Intruder
- Debug authentication flows
Together, they give you both speed and visibility.
Method 1: Fuzz using a request exported from Burp Suite
One of the most useful FFUF features is the ability to fuzz an existing HTTP request instead of constructing one manually.
This is especially valuable when the application contains:
- Numerous headers
- Authentication cookies
- CSRF tokens
- Custom request formats
- Multiple POST parameters
Instead of recreating everything in FFUF, simply capture the request in Burp Suite and reuse it.
Step 1: Capture the request
Intercept the desired request in Burp Suite.
Right-click the request and choose:
Save Item
or copy the raw HTTP request into a text file.
For example:
POST /login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Cookie: session=abc123
username=FUZZUSR&password=FUZZPW
Notice that the values to fuzz have been replaced with custom keywords.
Step 2: Replace values with FFUF keywords
FFUF searches for keywords inside the request.
The default keyword is:
FUZZ
However, you can create multiple independent keywords.
Example:
username=FUZZUSR
password=FUZZPW
This allows different wordlists to be assigned to each field.
Step 3: Run FFUF
Load the request using the -request option.
ffuf -request request.txt \
-w usernames.txt:FUZZUSR \
-w passwords.txt:FUZZPW \
-request-proto http
Explanation
-requestloads the raw HTTP request.-w usernames.txt:FUZZUSRassigns the username dictionary.-w passwords.txt:FUZZPWassigns the password dictionary.-request-proto httpforces HTTP instead of HTTPS.
This approach avoids manually recreating complex requests while preserving all headers and cookies exactly as captured.
Using multiple wordlists
One of FFUF's strengths is supporting multiple fuzzing variables simultaneously.
Example request:
username=FUZZUSR
password=FUZZPW
Command:
ffuf \
-request login.txt \
-request-proto http \
-w users.txt:FUZZUSR \
-w passwords.txt:FUZZPW
Each keyword is replaced using its corresponding dictionary.
This is particularly useful for:
- Login forms
- API authentication
- Token testing
- Multi-parameter fuzzing
Method 2: Route FFUF through Burp Suite
Another powerful workflow is configuring FFUF to send every request through Burp Suite.
Instead of targeting the application directly, FFUF sends traffic to Burp's proxy listener.
Burp then forwards the request to the real target.
This gives complete visibility into every fuzzed request.
Configure the Burp proxy
Inside Burp Suite:
- Create a Proxy Listener.
- Configure the listener address and port.
- Enable Request Handling.
- Configure the destination host and destination port so Burp forwards requests to the target application.
Burp now behaves like a transparent proxy between FFUF and the target.
Configure FFUF
Instead of targeting the application directly:
ffuf \
-u http://127.0.0.1:8080/FUZZ \
-w wordlist.txt
Here:
127.0.0.1:8080is the Burp proxy listener.- Burp forwards each request to the destination configured in Request Handling.
Why use Burp as a proxy?
This technique offers several advantages.
Inspect every request
You can review all generated requests inside Burp Proxy History.
This is useful when troubleshooting fuzzing results.
Analyze responses
Interesting responses can be sent directly to:
- Repeater
- Intruder
- Comparer
- Decoder
for further investigation.
Modify requests
You can intercept a request generated by FFUF and alter:
- Headers
- Cookies
- Tokens
- Parameters
before forwarding it.
Debug authentication
Applications with login sessions often require:
- Session cookies
- JWTs
- CSRF tokens
- Custom headers
Burp makes it much easier to verify that these values are being transmitted correctly.
Typical workflow
A practical workflow during a penetration test might look like this:
- Browse the application using Burp Suite.
- Capture a request that represents the functionality you want to fuzz.
- Save the raw request to a file.
- Replace the values you want to fuzz with FFUF keywords.
- Execute FFUF using the
-requestoption. - Alternatively, send all FFUF traffic through Burp's proxy to inspect every request and response.
- Investigate interesting findings using Burp Repeater or other tools.
This approach combines FFUF's speed with Burp Suite's rich analysis capabilities.
Best practices
- Export real requests from Burp instead of rebuilding them manually.
- Use descriptive keywords such as
FUZZUSER,FUZZPASS, orFUZZTOKENwhen working with multiple wordlists. - Route traffic through Burp when debugging or analyzing unusual responses.
- Preserve cookies, authentication headers, and CSRF tokens from captured requests whenever possible.
- Use Burp Repeater to manually validate any interesting responses discovered during fuzzing.
Conclusion
FFUF and Burp Suite form a powerful combination for web application security testing. By exporting requests directly from Burp, you can fuzz complex authenticated requests without rebuilding them from scratch. Routing FFUF traffic through Burp further enhances visibility, enabling detailed inspection and debugging of every request.
Whether you're testing login forms, authenticated APIs, hidden endpoints, or parameter handling, integrating these two tools results in a faster, more accurate, and more efficient fuzzing workflow.