#Découverte de contenu
# Répertoires et fichiers
ffuf -u https://target.test/FUZZ -w /wordlists/dirb/common.txt -mc 200,204,301,302,307,401,403
# Filtrer par taille de réponse (élimine les pages par défaut)
ffuf -u https://target.test/FUZZ -w raft-medium-directories.txt -fs 4242
# Extensions multiples
ffuf -u https://target.test/FUZZ -w common.txt -e .php,.bak,.old,.txt,.zip
# Récursion sur les répertoires trouvés
ffuf -u https://target.test/FUZZ -w common.txt -recursion -recursion-depth 2 -fc 404
| Option | Effet |
|---|---|
-mc |
Codes à garder (all pour tout) |
-fc |
Codes à exclure |
-fs |
Taille de réponse à exclure |
-fw / -fl |
Nombre de mots / lignes à exclure |
-mr / -fr |
Regex à garder / exclure |
-ac |
Auto-calibration des filtres |
-rate |
Requêtes par seconde |
-p |
Pause entre requêtes (ex. 0.1) |
#Sous-domaines et vhosts
# Virtual hosts : le domaine reste constant, le Host change
ffuf -u https://target.test -H "Host: FUZZ.target.test" \
-w subdomains.txt -fs 0 -mc all
# Sous-domaines DNS (si résolution sauvage)
ffuf -u https://FUZZ.target.test -w subdomains.txt -mc 200 -fs 1234
# Filtrer la réponse par défaut du vhost
curl -s -H "Host: random.target.test" https://target.test | wc -c
#Paramètres et valeurs
# Découvrir des paramètres GET
ffuf -u "https://target.test/api?FUZZ=test" -w params.txt -fs 120
# Fuzzer une valeur (IDOR, injection, enum)
ffuf -u "https://target.test/api/user?id=FUZZ" -w ids.txt -mr "admin|root" -mc all
# POST JSON
ffuf -u https://target.test/api/login -X POST \
-H "Content-Type: application/json" \
-d '{"username":"FUZZ","password":"test"}' \
-w users.txt -fc 401 -fr "invalid"
# Headers et méthodes
ffuf -u https://target.test/ -X FUZZ -w methods.txt -mc all -fc 405
#Sortie et reprise
# JSON pour post-traitement
ffuf -u https://target.test/FUZZ -w common.txt -of json -o ffuf.json
# CSV et HTML
ffuf -u https://target.test/FUZZ -w common.txt -of csv -o ffuf.csv
# Extraire les URLs trouvées
jq -r '.results[].url' ffuf.json | sort -u