wafw00f
Outil de détection et d'empreinte de Web Application Firewall. Identifie les WAF en analysant les réponses HTTP à des requêtes forgées à travers plus de 180 signatures de WAF. Web Application Firewall detection and fingerprinting tool. Identifies WAFs by analyzing HTTP responses to crafted requests across 180+ WAF signatures.
↗ https://github.com/EnableSecurity/wafw00fOverview
wafw00f identifies Web Application Firewalls protecting a target by sending crafted HTTP requests and analyzing responses. Knowing which WAF is in place lets you choose appropriate evasion techniques and payloads. It detects 180+ WAFs including Cloudflare, ModSecurity, Akamai, F5, and Imperva.
Basic Usage
Detect WAF on a single target
wafw00f https://target.com
HTTP target
wafw00f http://target.com
Multiple targets
wafw00f https://target1.com https://target2.com
Targets from file
wafw00f -i targets.txt
Verbose output (show test details)
wafw00f -v https://target.com
Detection Modes
Passive detection only (less aggressive)
wafw00f -p https://target.com
All tests (more aggressive)
wafw00f -a https://target.com
Verbose with all tests
wafw00f -v -a https://target.com
Output
JSON output
wafw00f https://target.com -o output.json -f json
XML output
wafw00f https://target.com -o output.xml -f xml
Text output (default)
wafw00f https://target.com -o output.txt -f text
With Proxy
Route through Burp proxy
wafw00f https://target.com --proxy http://127.0.0.1:8080
Use custom User-Agent
wafw00f https://target.com -H "User-Agent: Mozilla/5.0"
List Supported WAFs
Show all detectable WAFs
wafw00f -l
Interpreting Results
[+] The site https://target.com is behind Cloudflare (Cloudflare Inc.) WAF.
[~] Generic Detection results: 200 OK
[*] Number of requests: 5
[+]— WAF identified with high confidence[~]— Some protection detected, WAF type unknown[-]— No WAF detected (or very good at hiding)
WAF Evasion Strategies (after detection)
| WAF | Common Evasion |
|---|---|
| ModSecurity | Case variation, URL encoding, comment insertion |
| Cloudflare | Slow requests, user-agent rotation |
| Akamai | Payload fragmentation, character encoding |
| AWS WAF | Size limits, chunked encoding |
SQLmap with WAF evasion tampers
sqlmap -u "https://target.com/item?id=1" \
--tamper=space2comment,between,randomcase,charencode
ffuf with random User-Agent
ffuf -u https://target.com/FUZZ -w wordlist.txt -H "User-Agent: $(cat /usr/share/seclists/Fuzzing/User-Agents/top-20-user-agents.txt | shuf -n1)"
Tips
- Always run wafw00f before active scanning — knowing the WAF shapes your payload choices
- A WAF that’s “hiding” may still reveal itself under aggressive testing (
-aflag) - Cloudflare often returns challenge pages (503 with JS) — look for
cf-rayheaders - ModSecurity is the most common WAF — errors return 403 with “Forbidden” or custom pages
Help / Man page
wafw00f [options] <url>
-h, --help Show help
-v, --verbose Verbose output
-a, --findall Find all WAFs (don't stop at first match)
-p, --test Perform passive tests only
-r, --noredirect Don't follow redirects
-l, --list List all WAFs wafw00f can detect
-t, --timeout N Timeout (default: 10)
--proxy URL HTTP proxy
-H header Extra header
-f format Output format: text, json, xml
-o file Output file
-i file Input file of URLs
Vue d’ensemble
wafw00f identifie les Web Application Firewalls protégeant une cible en envoyant des requêtes HTTP forgées et en analysant les réponses. Savoir quel WAF est en place permet de choisir les techniques d’évasion et les payloads appropriés. Il détecte plus de 180 WAF, dont Cloudflare, ModSecurity, Akamai, F5 et Imperva.
Utilisation de base
# Détecter le WAF sur une seule cible
wafw00f https://target.com
# Cible HTTP
wafw00f http://target.com
# Plusieurs cibles
wafw00f https://target1.com https://target2.com
# Cibles depuis un fichier
wafw00f -i targets.txt
# Sortie verbeuse (affiche le détail des tests)
wafw00f -v https://target.com
Modes de détection
# Détection passive uniquement (moins agressif)
wafw00f -p https://target.com
# Tous les tests (plus agressif)
wafw00f -a https://target.com
# Verbeux avec tous les tests
wafw00f -v -a https://target.com
Sortie
# Sortie JSON
wafw00f https://target.com -o output.json -f json
# Sortie XML
wafw00f https://target.com -o output.xml -f xml
# Sortie texte (par défaut)
wafw00f https://target.com -o output.txt -f text
Avec proxy
# Router via un proxy Burp
wafw00f https://target.com --proxy http://127.0.0.1:8080
# Utiliser un User-Agent personnalisé
wafw00f https://target.com -H "User-Agent: Mozilla/5.0"
Lister les WAF pris en charge
Afficher tous les WAF détectables
wafw00f -l
Interpréter les résultats
[+] The site https://target.com is behind Cloudflare (Cloudflare Inc.) WAF.
[~] Generic Detection results: 200 OK
[*] Number of requests: 5
[+]: WAF identifié avec un haut niveau de confiance[~]: Une protection est détectée, mais le type de WAF est inconnu[-]: Aucun WAF détecté (ou très doué pour se cacher)
Stratégies d’évasion de WAF (après détection)
| WAF | Évasion courante |
|---|---|
| ModSecurity | Variation de casse, encodage URL, insertion de commentaires |
| Cloudflare | Requêtes lentes, rotation de User-Agent |
| Akamai | Fragmentation de payload, encodage de caractères |
| AWS WAF | Limites de taille, encodage chunked |
# SQLmap avec des tampers d'évasion de WAF
sqlmap -u "https://target.com/item?id=1" \
--tamper=space2comment,between,randomcase,charencode
# ffuf avec User-Agent aléatoire
ffuf -u https://target.com/FUZZ -w wordlist.txt -H "User-Agent: $(cat /usr/share/seclists/Fuzzing/User-Agents/top-20-user-agents.txt | shuf -n1)"
Conseils
- Toujours lancer wafw00f avant un scan actif : connaître le WAF oriente le choix des payloads
- Un WAF qui « se cache » peut quand même se révéler sous des tests agressifs (flag
-a) - Cloudflare renvoie souvent des pages de challenge (503 avec JS) : rechercher les en-têtes
cf-ray - ModSecurity est le WAF le plus courant : les erreurs renvoient un 403 avec « Forbidden » ou des pages personnalisées
Aide / Page de manuel
wafw00f [options] <url>
-h, --help Show help
-v, --verbose Verbose output
-a, --findall Find all WAFs (don't stop at first match)
-p, --test Perform passive tests only
-r, --noredirect Don't follow redirects
-l, --list List all WAFs wafw00f can detect
-t, --timeout N Timeout (default: 10)
--proxy URL HTTP proxy
-H header Extra header
-f format Output format: text, json, xml
-o file Output file
-i file Input file of URLs