Ffuf Fast Fuzzer

Table of contents

Fast fuzzer (ffuf) est un outil outil open-source de fuzzing et de force brute, écrit en langage Go, utilisé pour découvrir des ressources web telles que des fichiers, des répertoires, et des sous-domaines. Le fuzzing est une méthode qui consiste à envoyer des données aléatoires, mal formées ou anormales à un système pour tester ses réponses, ce qui pourrait conduire à la découverte de vulnérabilités.
Contrairement à l’attaque par force brute qui vise à effectuer des tentatives de connexion multiples avec des données valides, le fuzzing, lui envoie plutôt des données aléatoires.
Fuzz est installé par défaut sur les machines Kali, donc vous pouvez l’utiliser directement si vous possédez une machine Kali.
La documentation officielle de ffuf se retrouve sur GitHub.
Pour installer ffuf, utilisez la commande suivante:
git clone https://github.com/ffuf/ffuf
cd ffuf
go get
go build
#La commande suivante rend ffuf disponible depuis nimporte quelle répertoire
sudo ln -s ~/go/bin/ffuf /usr/sbin/ffuf
Wordlists
Il existe plusieurs listes de mots assez populaires et souvent utilisées pour le fuzzing:
ffuf.me
: trois listes de mots depuis le site de test ffuf.me. Pour les télécharger, exécutez les commandes suivantes:mkdir wordlists cd wordlists wget http://ffuf.me/wordlist/common.txt wget http://ffuf.me/wordlist/parameters.txt wget http://ffuf.me/wordlist/subdomains.txt
Listes de mots intégrées à Kali Linux
: Kali Linux dispose de plusieurs wordlists préinstallées (liste de mots) qui peuvent utilisées pour le fuzzing. Elles se retrouvent dans le répertoire/usr/share/wordlists/
.Sur la photo ci-dessus, on voit plusieurs listes de mots utiles pour le fuzzing ou encore pour d’autres tests.
Seclists
: un dépôt contenant des listes de mots disponible sur Github.
Options
ffuf -h
: l’option-h
permet de lister toutes les options de ffufffuf -u http://website.com/FUZZ -w [wordlists/common.txt] -X POST -r
l’option
-u
permet de spécifier l’URL à analyser. Cette option est obligatoire. La commande remplacera le terme “FUZZ“ dans l’URL par chaque mot de la liste et envoie une requête http à cette URL. Il est aussi possible de modifier l’emplacement du paramètre FUZZ dans l’URL et avoirhttp://FUZZ.site.com
. Cela permettra donc de découvrir les sous-domaines potentielsl’option
-w
spécifie le chemin du fichier contenant la liste de mots à utiliser pour le fuzzing (option obligatoire)l’option
-X
spéficifie une méthode HTTP différentel’option
-r
active la redirection des requêtes. Pour la désactiver, il suffit de ne pas l’inclure dans la commande.
ffuf -u http://website.com/FUZZ -w wordlists/common.txt -recursion
- l’option
-recursion
active le fuzzing récursif sur l’URL. C’est-à-dire lorsque qu’il trouve un chemin dans les réponses, il rajoute un nouveau FUZZ à partir de ce chemin là qu’il a trouvé et ainsi de suite. Cela permet donc d’obtenir des chemins plus profonds.
- l’option
ffuf -u http://website.com/FUZZ -e .log,.php,.txt -w wordlists/common.txt -mc 200-205,400
l’option
-e
spécifie les extensions de fichier à ajouter aux mots de la liste. Si par exemple le FUZZ est le mot admin, ffuf tentera d’accéder àhttp://website.com/admin.log
, àhttp://website.com/admin.php
et àhttp://website.com/admin.txt
l’option
-mc
spécifie les codes de statuts à matcher lors de l’analyse. Dans ce cas, on spécifie la plage de codes 200 à 205 et le code 400. On aura donc juste ces codes là dans le résultat. Cela permet d’exclure les codes de statut dont on n’aurait pas besoin dans le résultat.
ffuf -u http://website.com/data?FUZZ=1 -w wordlists/common.txt -fs [INT] -v
ici, on effectue le fuzzing avec un paramètre au niveau de la requête.
l’option
-fs
permet d’exclure les réponses d’une certaine taille.l’option
-v
permet de fournir plus de détails
ffuf -w wordlists/common.txt -u http://website.com/FUZZ -ac
- l’option
-ac
active l’autoconfiguration et permet à ffuf de déterminer automatiquement les codes de statut qui doivent être pris en compte. Cela évite donc de spécifier manuellement chaque code et rend la commande plus simple
- l’option
Interprétation des résultats
Chaque requête envoyée retournera donc un statut http de la réponse. En fonction de ce que l’on cherche à découvrir, chaque statut peut avoir une interprétation différente. Si par exemple on veut accéder à une page qui n’existe pas, mais on obtient un statut 200, cela indique une faille ou une mauvaise configuration.
Avec cette requête, on obtient un statut 200 qui indique donc que le chemin http://ffuf.me/cd/basic/class
existe sur le serveur. Le fichier development.log
existe aussi sur ce même serveur.
L’entête résume les paramètres et les options dans la commande:
Method
GET indique la méthode http utilisée pour l’envoi des requêtesURL
indique l’URL cibleWordlist
le chemin vers le fichier de la liste de mots est indiquéFollow redirects
indique si la commande ffuf suivra ou pas une redirection http si une réponse renvoie par exemple un statut de code 301 ou 302. Dans ce cas, elle est à “false“, ce qui signifie que ffuf ne tentera pas de suivre l'URL redirigée.Calibration
permet de distinguer les réponses valides des faux positifs. Il est à false, donc désactivée.Timeout
indique le temps d’exécution de chaque requête après lequel elle sera abandonnéeThreads
indique le nombre de requêtes pouvant être envoyées simultanémentMatcher
les réponses http dpnt le code de statut est dans la plage seront celle qui seront affichées dans les résultats.
Il est toutefois possible de modifier ces paramètres avec les différentes options de ffuf.
Sur l’image ci-dessus, on obtient d’abord un statut 301 pour le chemin http://ffuf.me/cd/recursion/admin/FUZZ
indiquant une redirection vers une autre URL. La commande ajoute après une deuxième tentaive pour l’URL http://ffuf.me/cd/recursion/admin/users/FUZZ
après un autre statut 301. Le statut 200 obtenu après indique que le chemin testé est valide et que le serveur renvoie une réponse 200 avec un FUZZ = 96. Cela indique qu’un répertoire est disponible à l’URL http://ffuf.me/cd/recursion/admin/users/96
Voici en quelques lignes l’outil ffuf expliqué.
À noter, qu’il est important de rappeler que l'utilisation de ces outils doit toujours se faire dans un cadre légal.
Subscribe to my newsletter
Read articles from FIKARA BILAL directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
FIKARA BILAL
FIKARA BILAL
As a newcomer to the cybersecurity industry, I'm on an exciting journey of continuous learning and exploration. Join me as I navigate, sharing insights and lessons learned along the way