wafw00f
Web Application Firewall (WAF) detection tool.
Quickstart
wafw00f https://target.com
wafw00f -l
wafw00f -v https://target.com
wafw00f -i urls.txt
Core Concepts
| Concept |
Description |
| Fingerprinting |
Identify WAF by response patterns |
| Detection |
Check for WAF presence |
| Bypass |
Know what you're up against |
Syntax
wafw00f <url> [options]
wafw00f -i <file> [options]
Options
| Option |
Description |
<url> |
Target URL |
-i <file> |
Input file with URLs |
Detection
| Option |
Description |
-a |
Test all WAFs (not just first match) |
-t <waf> |
Test for specific WAF |
-l |
List all detectable WAFs |
Output
| Option |
Description |
-v |
Verbose |
-o <file> |
Output file |
-f <format> |
Format (csv, json, txt) |
Request
| Option |
Description |
-p <proxy> |
Proxy |
-H <headers> |
Custom headers (file) |
Recipes
Basic Detection
wafw00f https://target.com
wafw00f -v https://target.com
wafw00f -vv https://target.com
Test All WAFs
wafw00f -a https://target.com
wafw00f -t Cloudflare https://target.com
List WAFs
wafw00f -l
Multiple Targets
wafw00f -i urls.txt
cat urls.txt | xargs -I {} wafw00f {}
wafw00f -i urls.txt -o results.txt
wafw00f https://target.com -f json -o results.json
wafw00f https://target.com -f csv -o results.csv
wafw00f https://target.com -f txt -o results.txt
Through Proxy
wafw00f -p http://127.0.0.1:8080 https://target.com
wafw00f -p socks5://127.0.0.1:1080 https://target.com
Pipeline Integration
subfinder -d target.com -silent | httpx -silent | \
while read url; do wafw00f "$url"; done
cat urls.txt | while read url; do
echo "=== $url ===" >> waf_results.txt
wafw00f "$url" >> waf_results.txt 2>&1
done
Script for JSON Output
#!/bin/bash
while read url; do
result=$(wafw00f "$url" 2>/dev/null | grep -E "is behind|No WAF")
echo "{\"url\":\"$url\",\"result\":\"$result\"}"
done < urls.txt | jq -s '.'
Common WAFs
| WAF |
Notes |
| Cloudflare |
Very common, ray-id header |
| AWS WAF |
Amazon hosted sites |
| Akamai |
CDN + WAF |
| Imperva/Incapsula |
Enterprise |
| ModSecurity |
Open source |
| Sucuri |
WordPress common |
| F5 BIG-IP |
Enterprise |
| Barracuda |
Enterprise |
| Fortinet |
Enterprise |
Output & Parsing
wafw00f https://target.com -f json | jq '.'
wafw00f https://target.com 2>&1 | grep -oP 'is behind \K[^)]+'
wafw00f https://target.com 2>&1 | grep -q "is behind" && echo "WAF detected"
Troubleshooting
| Issue |
Solution |
| No WAF detected |
Try -a for all checks |
| Connection error |
Check URL, use proxy |
| False positive |
Verify manually |
| Timeout |
Check network, increase timeout |
References