Table of Contents

BBC Ch 25: Automated Vulnerability Discovery / Fuzzing

Source: Bug Bounty Bootcamp by Vickie Li

Top bug bounty hunters automate the majority of their workflow: continuous recon, automated scanning, and immediate verification when a potential vulnerability is flagged. Fuzzing (fuzz testing) drives a large share of new CVE discoveries and is equally applicable to web applications.

What Is Fuzzing?

Fuzzing is the process of sending a wide range of invalid and unexpected data to an application and monitoring it for exceptions. The goal is to induce unexpected behavior (crashes, errors, unexpected output) and determine whether it is exploitable.

Web application fuzzing targets common injection points to expose vulnerabilities like XSS, SQL injection, IDORs, open redirects, and authentication bypass – without requiring source code access.

How a Web Fuzzer Works

A web fuzzer replaces marked injection points in requests with strings from a wordlist, fires the requests, and tracks server responses. Wfuzz uses the keyword FUZZ as the injection point marker:

wfuzz -w wordlist.txt http://example.com/FUZZ

This generates one request per wordlist entry, substituting FUZZ with each string.

The 4-Step Fuzzing Process

Step 1: Determine Data Injection Points

Identify all locations where user input enters the application: URL path segments, query parameters, POST body parameters, HTTP headers, cookies.

Classify injection points by likely vulnerability:

# IDOR candidates -- numeric IDs
GET /email_inbox?user_id=FUZZ
POST /delete_user  (body: user_id=FUZZ)

# XSS candidates -- search/display fields
GET /search?q=FUZZ
POST /send_email  (body: title=FUZZ&body=FUZZ)

Step 2: Choose the Payload List

Match the wordlist to the vulnerability type:

Recommended resources:

Also try randomly generated payloads – extremely long strings, mixed encodings, special characters (newline, null byte, line feed) – to provoke unexpected behavior and discover new vulnerability classes.

Step 3: Fuzz

Burp Intruder (GUI, integrated with Burp proxy):

  1. Right-click any intercepted request → “Send to Intruder”
  2. Highlight injection points; click “Add”
  3. Configure payload list in the Payloads tab
  4. Note: free Burp throttles requests per minute; use Wfuzz for faster results

Wfuzz (CLI, unrestricted):

pip install wfuzz

Common Wfuzz commands:

Path enumeration (hide 404s, follow redirects):

wfuzz -w wordlist.txt -f output.txt --hc 404 --follow http://example.com/FUZZ

IDOR scanning:

wfuzz -w ids.txt http://example.com/view_inbox?user_id=FUZZ

HTTP Basic auth brute-force (single wordlist):

wfuzz -w wordlist.txt -H "Authorization: Basic FUZZ" http://example.com/admin

HTTP Basic auth brute-force (username + password lists):

wfuzz -w usernames.txt -w passwords.txt --basic FUZZ:FUZ2Z http://example.com/admin

Open redirect testing (verbose + follow to detect redirects):

wfuzz -w wordlist.txt -v --follow http://example.com?redirect=FUZZ

XSS reflection detection (filter for reflected payloads):

wfuzz -w xss.txt --filter "content~FUZZ" http://example.com/search?q=FUZZ

SQLi via POST body:

wfuzz -w sqli.txt -d "user_id=FUZZ" http://example.com/get_user

Step 4: Monitor Results

Interpret responses based on the vulnerability type being tested:

Vulnerability What to look for
Path enum 200 status = valid path; 404 = not found
IDOR 200 with content vs 403/404; response length differences
SQLi Response time spike (time-based), length increase (data extracted), status code change
XSS Payload reflected in response (use content~FUZZ filter)
Open redirect Redirect to your domain (use –follow -v)

Think of fuzzing as a metal detector – it finds suspicious spots; you inspect them manually to confirm and assess impact.

Fuzzing vs. Static Analysis

Static Analysis Fuzzing
Source code required Yes No
Tests live behavior No Yes
Finds logic errors Yes Rarely
Finds injection bugs Yes Yes
Black-box friendly No Yes

Use both: static analysis when source is available, fuzzing for black-box targets. Neither replaces manual testing for business logic errors and multi-step vulnerabilities.

Pitfalls

Building Your Toolkit

4-Step Checklist

  1. Identify all data injection points in the target; classify each by likely vulnerability.
  2. Select appropriate payload wordlists (SecLists, FuzzDB) for each injection type.
  3. Run Wfuzz against each injection point with the matching payload list; throttle if necessary to avoid disruption.
  4. Analyze results for status code, response length, and response time anomalies; manually verify each candidate before reporting.