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/wafw00f

Overview

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)

WAFCommon Evasion
ModSecurityCase variation, URL encoding, comment insertion
CloudflareSlow requests, user-agent rotation
AkamaiPayload fragmentation, character encoding
AWS WAFSize 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 (-a flag)
  • Cloudflare often returns challenge pages (503 with JS) — look for cf-ray headers
  • 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
ModSecurityVariation de casse, encodage URL, insertion de commentaires
CloudflareRequêtes lentes, rotation de User-Agent
AkamaiFragmentation de payload, encodage de caractères
AWS WAFLimites 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