← retour aux outils back to tools

# 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)

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 (`-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
--- | ---
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