Ffuf Fast Fuzzer

FIKARA BILALFIKARA BILAL
5 min read

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 ffuf

  • ffuf -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 avoir http://FUZZ.site.com. Cela permettra donc de découvrir les sous-domaines potentiels

    • l’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érente

    • l’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.
  • 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

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êtes

  • URL indique l’URL cible

  • Wordlist 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ée

  • Threads indique le nombre de requêtes pouvant être envoyées simultanément

  • Matcher 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.

0
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