Utiliser le mode de fuzzing flexible dans Gobuster

Beginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous explorerez les capacités flexibles de fuzzing de Gobuster, un outil populaire de brute-force de répertoires et de fichiers. Bien que Gobuster soit couramment connu pour son mode dir, son mode fuzz offre un moyen puissant de découvrir du contenu web caché en injectant des payloads dans diverses parties d'une URL. Vous apprendrez à construire des URLs avec le mot-clé spécial FUZZ, à fournir des listes de mots personnalisées, à exécuter des scans de fuzzing et à interpréter les résultats pour identifier des vulnérabilités potentielles ou des ressources cachées sur un serveur web. Cette expérience pratique améliorera vos compétences en énumération web, qui sont cruciales pour les tests d'intrusion et les évaluations de sécurité.

Comprendre le but du mode fuzz et du mot-clé FUZZ

Dans cette étape, vous apprendrez le mode fuzz de Gobuster et l'importance du mot-clé FUZZ. Contrairement au mode dir qui effectue principalement du brute-force sur les noms de répertoires et de fichiers, le mode fuzz vous permet d'injecter des payloads dans des positions arbitraires au sein d'une URL. Le mot-clé FUZZ agit comme un espace réservé où Gobuster insérera chaque entrée de votre liste de mots fournie. Cette flexibilité vous permet de tester différentes parties d'une URL, telles que les segments de chemin, les extensions de fichiers, ou même les paramètres de requête, à la recherche de contenu caché ou de vulnérabilités.

Par exemple, si vous souhaitez découvrir des répertoires cachés sous http://localhost:8000/, vous utiliseriez une URL telle que http://localhost:8000/FUZZ. Gobuster remplacera alors FUZZ par chaque mot de votre liste de mots.

Vérifions que Gobuster est installé et accessible dans votre environnement.

gobuster version

Vous devriez voir une sortie similaire à la suivante, indiquant la version de Gobuster.

Gobuster v3.x.x

Construire une URL avec le mot-clé FUZZ dans le chemin

Dans cette étape, vous allez construire une URL cible qui inclut le mot-clé FUZZ. Ce mot-clé indique à Gobuster où insérer les entrées de la liste de mots pendant le processus de fuzzing. Pour ce laboratoire, nous ciblerons un serveur HTTP simple fonctionnant localement sur le port 8000. Nous placerons le mot-clé FUZZ dans le segment de chemin pour découvrir des répertoires ou des fichiers cachés.

La syntaxe de base pour gobuster fuzz est gobuster fuzz -u <URL_avec_FUZZ> -w <wordlist>.

Définissons l'URL de base pour notre serveur cible. Le serveur fonctionne sur http://localhost:8000. Nous voulons découvrir des chemins cachés directement sous la racine, donc notre URL fuzzed sera http://localhost:8000/FUZZ.

Vous pouvez essayer d'accéder à l'URL de base pour confirmer que le serveur fonctionne :

curl http://localhost:8000/

Vous devriez voir le contenu de index.html :

Hello from index.html

Maintenant, préparons la structure de la commande. Nous ne l'exécuterons pas encore, mais nous nous assurerons que l'URL est correctement formée.

echo "The fuzzed URL will be: http://localhost:8000/FUZZ"

Cette commande imprime simplement la chaîne de l'URL, confirmant votre compréhension de la manière de placer le mot-clé FUZZ.

Utiliser le drapeau -w pour fournir une liste de mots de payload

Dans cette étape, vous apprendrez comment spécifier une liste de mots que Gobuster utilisera pendant le processus de fuzzing. Le drapeau -w est utilisé pour fournir le chemin d'accès à votre fichier de liste de mots. Chaque ligne de ce fichier sera utilisée pour remplacer le mot-clé FUZZ dans votre URL cible.

Pour ce laboratoire, une liste de mots simple nommée fuzz_wordlist.txt a été créée dans votre répertoire ~/project pendant la phase de configuration. Cette liste de mots contient quelques entrées qui correspondent à des chemins existants et non existants sur notre serveur web factice.

Inspectons le contenu de la liste de mots pour comprendre quels payloads seront utilisés :

cat ~/project/fuzz_wordlist.txt

Vous devriez voir le contenu suivant :

secret_dir
admin_panel
test_page.html
nonexistent

Vous connaissez maintenant les payloads que Gobuster essaiera. Lorsque nous exécuterons le scan, Gobuster tentera d'accéder à des URL telles que http://localhost:8000/secret_dir, http://localhost:8000/admin_panel, et ainsi de suite.

Exécuter le scan gobuster fuzz

Dans cette étape, vous allez combiner toutes les connaissances précédentes pour exécuter le scan gobuster fuzz. Vous utiliserez l'URL fuzzed construite à l'étape 2 et la liste de mots spécifiée à l'étape 3.

La commande complète sera :

gobuster fuzz -u http://localhost:8000/FUZZ -w ~/project/fuzz_wordlist.txt

Décomposons la commande :

  • gobuster fuzz : Lance Gobuster en mode fuzzing.
  • -u http://localhost:8000/FUZZ : Spécifie l'URL cible avec le placeholder FUZZ.
  • -w ~/project/fuzz_wordlist.txt : Fournit le chemin d'accès à la liste de mots contenant les payloads.

Maintenant, exécutez la commande dans votre terminal :

gobuster fuzz -u http://localhost:8000/FUZZ -w ~/project/fuzz_wordlist.txt

Vous verrez Gobuster parcourir la liste de mots et rapporter les codes de statut pour chaque tentative.

===============================================================
Gobuster v3.x.x
===============================================================
[+] Url:            http://localhost:8000/FUZZ
[+] Wordlist:       /home/labex/project/fuzz_wordlist.txt
[+] Threads:        10
[+] Timeout:        10s
===============================================================
2024/01/01 12:00:00 Starting gobuster in fuzz mode
===============================================================
http://localhost:8000/secret_dir (Status: 200)
http://localhost:8000/admin_panel (Status: 200)
http://localhost:8000/test_page.html (Status: 200)
http://localhost:8000/nonexistent (Status: 404)
===============================================================
2024/01/01 12:00:00 Finished
===============================================================

Remarquez le (Status: 200) pour secret_dir, admin_panel et test_page.html, indiquant que ces chemins existent et ont renvoyé une réponse réussie. Le (Status: 404) pour nonexistent indique que ce chemin n'a pas été trouvé, comme prévu.

Analyser les résultats du fuzzing flexible

Dans cette dernière étape, vous allez analyser la sortie du scan gobuster fuzz pour comprendre ce qui a été découvert. L'objectif principal du fuzzing est d'identifier les réponses valides (généralement des codes de statut HTTP tels que 200 OK, 301 Moved Permanently, etc.) qui indiquent l'existence d'une ressource.

D'après la sortie de l'étape précédente, vous devriez avoir observé des lignes similaires à celles-ci :

http://localhost:8000/secret_dir (Status: 200)
http://localhost:8000/admin_panel (Status: 200)
http://localhost:8000/test_page.html (Status: 200)
http://localhost:8000/nonexistent (Status: 404)
  • http://localhost:8000/secret_dir (Status: 200) : Ceci indique qu'un répertoire nommé secret_dir existe sous la racine web. Vous pouvez essayer d'y accéder en utilisant curl :

    curl http://localhost:8000/secret_dir/hidden_file.txt
    

    Vous devriez voir :

    Secret content
    
  • http://localhost:8000/admin_panel (Status: 200) : Ceci suggère qu'un répertoire admin_panel existe.

    curl http://localhost:8000/admin_panel/login.php
    

    Vous devriez voir :

    Admin login
    
  • http://localhost:8000/test_page.html (Status: 200) : Ceci indique qu'un fichier nommé test_page.html existe.

    curl http://localhost:8000/test_page.html
    

    Vous devriez voir :

    Test page
    
  • http://localhost:8000/nonexistent (Status: 404) : Il s'agit d'un statut "Not Found" (Non trouvé), ce qui est attendu pour un chemin qui n'existe pas. Cela permet de confirmer que Gobuster identifie correctement les ressources inexistantes.

En analysant les codes de statut, vous pouvez identifier efficacement les répertoires, fichiers ou autres ressources cachés qui pourraient ne pas être directement liés depuis le site web principal. C'est une étape cruciale dans la reconnaissance lors des évaluations de sécurité.

Résumé

Dans ce laboratoire, vous avez appris avec succès à utiliser le mode de fuzzing flexible de Gobuster. Vous avez compris le rôle du mot-clé FUZZ comme placeholder pour injecter des payloads à partir d'une liste de mots. Vous avez construit une URL fuzzed, fourni une liste de mots personnalisée, exécuté un scan gobuster fuzz et analysé les résultats pour identifier les ressources web existantes. Cette expérience pratique a démontré la puissance et la polyvalence des capacités de fuzzing de Gobuster pour l'énumération web, une compétence fondamentale en cybersécurité et en tests d'intrusion. Vous pouvez maintenant appliquer ces techniques pour découvrir du contenu caché sur diverses applications web.