P

Precision FFUF Web Fuzzing Workshop

A comprehensive skill that enables web application fuzzing for vulnerability analysis. Built for Claude Code with best practices and real-world patterns.

SkillCommunitysecurityv1.0.0MIT
0 views0 copies

FFUF Web Fuzzing Workshop

Comprehensive web application fuzzing framework using FFUF (Fuzz Faster U Fool) for directory discovery, parameter fuzzing, virtual host enumeration, and API endpoint brute-forcing in authorized security testing engagements.

When to Use This Skill

Choose FFUF Web Fuzzing when:

  • Performing authorized directory and file discovery on web targets
  • Fuzzing API endpoints for hidden parameters and paths
  • Enumerating virtual hosts and subdomains
  • Testing authentication mechanisms for bypass vulnerabilities
  • Discovering backup files, configuration files, and admin panels

Consider alternatives when:

  • Need full vulnerability scanning — use Burp Suite or OWASP ZAP
  • Performing network-level scanning — use Nmap
  • Need authenticated crawling — use specialized crawlers

Quick Start

# Activate FFUF fuzzing toolkit claude skill activate precision-ffuf-web-fuzzing-workshop # Basic directory fuzzing claude "Run FFUF directory discovery against https://target.example.com" # API endpoint fuzzing claude "Fuzz API endpoints on the target with common REST path patterns"

Example FFUF Commands

# Basic directory brute-force ffuf -u https://target.example.com/FUZZ -w /usr/share/wordlists/dirb/common.txt # Filter by response size to reduce noise ffuf -u https://target.example.com/FUZZ -w wordlist.txt -fs 4242 # Filter by status code ffuf -u https://target.example.com/FUZZ -w wordlist.txt -fc 404,403 # Multiple fuzzing points ffuf -u https://target.example.com/FUZZ1/FUZZ2 \ -w endpoints.txt:FUZZ1 \ -w params.txt:FUZZ2 # POST parameter fuzzing ffuf -u https://target.example.com/login \ -X POST \ -d "username=admin&password=FUZZ" \ -w passwords.txt \ -fc 401 # Virtual host enumeration ffuf -u https://target.example.com \ -H "Host: FUZZ.target.example.com" \ -w subdomains.txt \ -fs 0 # API endpoint discovery with JSON ffuf -u https://api.target.example.com/v1/FUZZ \ -w api-endpoints.txt \ -mc 200,201,301,302,401,403 \ -H "Content-Type: application/json" # Recursive discovery ffuf -u https://target.example.com/FUZZ \ -w wordlist.txt \ -recursion \ -recursion-depth 2 \ -e .php,.html,.js,.bak

Core Concepts

Fuzzing Modes

ModeDescriptionUse Case
Directory DiscoveryReplace path segments with wordlist entriesFind hidden directories and files
Parameter FuzzingFuzz GET/POST parametersDiscover hidden API parameters
Header FuzzingReplace header valuesVirtual host enumeration, auth bypass
Subdomain EnumFuzz Host headerFind hidden subdomains
Method FuzzingTry different HTTP methodsFind method-based access controls
Extension BruteAppend file extensionsDiscover backup and config files

Filtering and Matching

FilterFlagDescription
Status Code-mc / -fcMatch/filter by HTTP status
Response Size-ms / -fsMatch/filter by response size in bytes
Word Count-mw / -fwMatch/filter by word count
Line Count-ml / -flMatch/filter by line count
Regex-mr / -frMatch/filter by regex pattern
Response Time-mt / -ftMatch/filter by response time
# Advanced filtering examples # Auto-calibrate filters (recommended first step) ffuf -u https://target.example.com/FUZZ -w wordlist.txt -ac # Match only specific sizes ffuf -u https://target.example.com/FUZZ -w wordlist.txt -ms 1234,5678 # Combine multiple filters ffuf -u https://target.example.com/FUZZ -w wordlist.txt \ -fc 404 -fs 0 -fw 12 # Output results to file ffuf -u https://target.example.com/FUZZ -w wordlist.txt \ -o results.json -of json

Configuration

ParameterDescriptionDefault
threadsConcurrent request threads40
rateRequests per second limit0 (unlimited)
timeoutHTTP request timeout10s
follow_redirectsFollow HTTP redirectsfalse
recursion_depthDepth for recursive fuzzing0 (disabled)
extensionsFile extensions to append[]
auto_calibrateAuto-calibrate filteringtrue
output_formatOutput: json, csv, html, mdjson

Best Practices

  1. Always start with auto-calibration (-ac) — FFUF's auto-calibrate mode sends baseline requests to determine typical 404 response characteristics, then automatically filters similar responses. This dramatically reduces false positives without manual filter tuning.

  2. Rate limit to avoid disrupting target systems — Use -rate to cap requests per second. Start with 50-100 RPS for web applications and lower for APIs with rate limiting. Unthrottled fuzzing can trigger WAF blocks, crash unstable applications, or be mistaken for a denial-of-service attack.

  3. Use targeted wordlists rather than massive generic ones — Match wordlists to the technology stack. Use PHP-specific lists for PHP apps, API-specific lists for REST endpoints, and technology-aware lists (WordPress, Django, Spring) for framework-specific discovery.

  4. Layer your fuzzing approach — Start with common directories, then recursive discovery on interesting paths, then extension brute-forcing on discovered paths, then parameter fuzzing on discovered endpoints. Each layer narrows the target and increases finding quality.

  5. Save and version your results — Output results to JSON (-o results.json -of json) for programmatic analysis. Compare results across scans to identify new endpoints or removed content that may indicate changes in the attack surface.

Common Issues

All requests return the same status code and response size. The application uses a custom error handler that returns 200 OK for all paths with a generic error page. Use auto-calibrate (-ac) or manually filter by response size (-fs), word count (-fw), or regex (-fr) to distinguish real pages from the custom 404.

FFUF gets blocked by WAF or rate limiting after a few hundred requests. Reduce thread count (-t 5), add rate limiting (-rate 10), randomize request intervals, and rotate User-Agent headers. For WAF bypass during authorized testing, consider using a custom -H "X-Forwarded-For: 127.0.0.1" header if the WAF trusts proxy headers.

Results contain hundreds of false positives with slight size variations. Custom error pages often include dynamic content (timestamps, request paths, session tokens) causing size variation. Use word count filtering (-fw) instead of size filtering, as word count is more stable. Alternatively, use regex filtering (-fr "Page not found") to match the error page text pattern.

Community

Reviews

Write a review

No reviews yet. Be the first to review this template!

Similar Templates