CyberCheatsheets

ffuf quand la wordlist est mauvaise

Filtres, récursion et confusion vhost sur les tests web qui font perdre des heures.

Publié le 2 min de lecture

Vous avez lancé ffuf avec directory-list-2.3-medium.txt, obtenu quatorze mille réponses 200, et passé l'après-midi sur des fausses pages CDN.

La cheat sheet ffuf documente les flags. Elle ne sait pas que l'appli renvoie du HTTP 200 avec 8 412 octets sur chaque 404 custom.

Filtrer par taille avant le code HTTP

La plupart des tutos s'arrêtent à -fc 404. En prod, les erreurs custom reviennent en 200 ou 302 avec une taille stable.

Baseline :

curl -s -o /dev/null -w "%{http_code} %{size_download}\n" https://target.example/missing-path-xyz

Puis fuzz avec exclusion de taille :

ffuf -u https://target.example/FUZZ -w /usr/share/wordlists/dirb/common.txt \
  -fs 8412 -mc 200,301,302 -t 40 -o ffuf-dirs.json

-fs et -fw séparent un run utile d'un JSON que vous n'ouvrirez jamais.

La récursion a un coût

-recursion avec une grosse wordlist derrière un WAF qui rate-limit, c'est le ban avant /admin. Je récurse après un hit intéressant validé à la main, avec une liste réduite :

ffuf -u https://target.example/FUZZ -w small-api-list.txt -recursion -recursion-depth 2 \
  -fs 8412 -rate 30

Vhost vs répertoires

Le mode vhost utilise le header Host :

ffuf -u https://10.0.0.5/ -H "Host: FUZZ.target.example" -w vhosts.txt -fs 0

Comparez avec gobuster pour un workflow dir-only plus simple. Je garde les deux ; ffuf gagne quand les réponses sont bizarres.

Extensions et faux positifs

-e .php,.asp,.bak peut exploser sur des serveurs qui renvoient index.html pour tout. Refiltrez. -ac aide parfois, parfois il masque de vrais hits.

Extensions et faux positifs

-e .php,.asp,.bak peut gonfler les hits sur des serveurs qui renvoient index.html pour toute extension inconnue. Refiltrez. -ac (autocalibration) aide parfois, parfois il cache de vrais résultats parce que la requête de calibration était mauvaise.

Vérifiez trois "misses" au hasard à la main avant de faire confiance à la chaîne de filtres.

Sorties exploitables

-o file.json -of json. Renommez par hôte et wordlist. Pour les zones authentifiées, passez le cookie avec -b ou -H "Cookie: ...". Les chemins intéressants sont rarement sur la surface anonyme.

Derrière Cloudflare ou Akamai, baissez -t et acceptez un run plus lent. Le parallélisme agressif finit en ban IP avant que vous atteigniez /api/internal.

Les zones authentifiées concentrent les vrais chemins. Cookie en -b, fuzz sur /api/FUZZ après login. Petites listes tirées du JS ou Swagger battent souvent SecLists medium sur un monolithe legacy.

Articles liés