📋 Fiche Outil : gobuster


📋 Note

L’efficacité de gobuster (et de tous les fuzzers) dépend entièrement de la qualité de la wordlist que tu utilises. Une bonne liste de mots est plus importante que l’outil lui-même. Pense à utiliser les listes de SecLists.


🎯 Objectif Principal

Objectif Principal Gobuster est un outil de « fuzzing » web ultra-rapide écrit en Go. Son objectif principal est de découvrir des fichiers et des répertoires cachés sur un serveur web en essayant des milliers de noms à partir d’une liste (wordlist). Il est essentiel pour trouver des pages d’administration, des fichiers de configuration oubliés, ou des « backups » qui ne sont pas directement liés.


Syntaxe Générale
bash
gobuster dir -u <URL_ou_IP> -w <chemin_wordlist> [options]
dirb {ip}

Description

Gobuster est un outil puissant pour découvrir des ressources cachées sur un serveur web. Il utilise une méthode de brute force pour tester de nombreux mots issus d’une wordlist afin de trouver des répertoires et fichiers potentiellement intéressants.

bash
gobuster dir -u <lien> -w /usr/share/wordlists/<selectionner fichier> -k
bash
gobuster dir -u <lien> -w /usr/share/wordlists/<selectionner fichier> -x .php

DirBuster vs Gobuster

  • DirBuster : C’est l’outil « classique » et l’un des pionniers. Il est écrit en Java et possède une interface graphique (GUI). Son principal inconvénient est sa lenteur.
  • Gobuster : C’est le successeur moderne. Il est écrit en Go, ce qui le rend extrêmement rapide grâce au multi-threading. Il s’utilise uniquement en ligne de commande (CLI), ce qui le rend parfait pour être intégré dans des scripts. Il est aussi multi-tâches (il peut aussi fuzzer des sous-domaines DNS, des « vhosts », etc.).

On apprend avec DirBuster, mais on travaille au quotidien avec gobuster (ou ffuf) pour sa rapidité et sa flexibilité.

Paramètre (Flag)

  • dir : Le mode que l’on veut utiliser (ici, « directory » pour les répertoires).
  • -u (url) : L’URL ou l’IP de la cible (ex: http://10.10.10.123).
  • -w (wordlist) : (Obligatoire) Le chemin vers ta liste de mots (ex: /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt).
  • -x (extensions) : (Très important) Ajoute des extensions aux mots.

– _Exemple :_ -x php,txt,bak cherchera index.php, config.txt, backup.bak.

  • -t (threads) : Le nombre de « workers » simultanés. Augmente ce nombre pour aller plus vite (ex: -t 50). Par défaut : 10.
  • -k (insecure) : Ignore les erreurs de certificat SSL (très utile en pentest/CTF sur les sites HTTPS).
  • -s (status-codes) : Les codes HTTP que tu veux voir. Par défaut, il montre les succès (200, 204, 301, 302, 307, 401, 403).

– _Exemple :_ Si tu veux ne voir que les « OK », utilise -s 200.

  • `—append-domain : ajouter automatiquement le domaine cible (dans ce cas, thetoppers.htb`) à chaque sous-domaine testé.

Exemple

Scan de base sur un site HTTP :

code
gobuster dir -u http://10.10.10.123 -w /usr/share/wordlists/dirb/common.txt

Scan rapide (50 threads) sur un site HTTPS, cherchant des fichiers .php et .txt :

code
gobuster dir -u https://<domaine-cible>.com -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 50 -k -x php,txt

Scan affichant aussi les pages « Interdites » (403), qui peuvent cacher des infos :

code
gobuster dir -u http://10.10.10.123 -w /usr/share/wordlists/dirb/common.txt -s 200,301,302,403

Analyse de Sous-Domaines et d’Hôtes Virtuels

Quand on utilise gobuster pour la reconnaissance, on parle de deux modes d’attaque distincts : dns et vhost.

  • Mode dns (Analyse de Sous-Domaines) : On demande au serveur DNS « Est-ce que admin.domaine.com existe ? Est-ce que dev.domaine.com existe ? ». C’est de la reconnaissance pure au niveau DNS.
  • Mode vhost (Analyse d’Hôtes Virtuels) : On demande au serveur Web (à une seule IP) « Montre-moi le site que tu afficherais si on t’appelait admin.domaine.com« . C’est de la reconnaissance au niveau HTTP.

1. Mode dns (Analyse de Sous-Domaines)

C’est la méthode la plus classique pour trouver des sous-domaines.

Objectif : Trouver des sous-domaines valides (ex: vpn.domaine.com, mail.domaine.com) en interrogeant les serveurs DNS.

**Pré-requis :**

Tu as besoin d’une bonne liste de sous-domaines courants. SecLists est parfait pour ça.

  • sudo apt install seclists (sur Kali)
  • Ou via GitHub : https://github.com/danielmiessler/SecLists

Exemple de Commande :

Bash

code
# -d (domain) : Le domaine cible
# -w (wordlist) : La liste de sous-domaines à tester
# -t (threads) : Augmenter la vitesse

gobuster dns -d thetoppers.htb -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -t 50

2. Mode vhost (Analyse d’Hôtes Virtuels)

C’est ce que ta commande essayait de faire. Ce mode est plus spécifique.

Objectif : À utiliser quand tu sais qu’une seule adresse IP héberge plusieurs sites web. Le but est de deviner les noms de ces sites (hôtes virtuels) que le serveur web attend.

Exemple de Commande :

La commande que tu avais était presque correcte. L’option --append-domain n’est pas nécessaire, car gobuster en mode vhost le fait automatiquement.

Bash

code
# -u (url) : L'IP ou l'URL du serveur web que tu cibles
# -w (wordlist) : La liste de mots à essayer comme sous-domaines
# Gobuster va prendre chaque mot (ex: "admin") de la wordlist et faire une
# requête HTTP à l'IP cible avec l'en-tête "Host: admin.thetoppers.htb"

gobuster vhost -u http://thetoppers.htb -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -t 50
> Gobuster va afficher les résultats qui sont différents des autres. Par exemple, si la plupart des requêtes donnent "Code: 404" ou "Taille: 350", mais que admin.thetoppers.htb te donne un "Code: 200" ou "Taille: 8450", tu as trouvé un hôte virtuel caché.

Elément de Cours