Aller au contenu principal
Aller au contenu principal
← retour au blog

Gobuster : énumérer répertoires, fichiers, sous-domaines et vhosts d'une cible web

Brute-force rapide de répertoires, sous-domaines et vhosts d'une cible web avec Gobuster et les bonnes wordlists ;)

Lors de la phase de reconnaissance d'un audit de sécurité web ou sur un challenge CTF, trouver les pages d'administration cachées, les fichiers oubliés ou les sous-domaines de test est souvent le point de départ.

Écrit en Go, Gobuster est conçu pour être ultra-rapide et très léger en ressources grâce à la gestion native du multi-threading. C'est l'un des outils de brute-force d'URL les plus efficaces aux côtés de ffuf.

Rappel : L'énumération agressive sur un serveur sans autorisation préalable reste interdite. À pratiquer sur vos propres applications ou dans un cadre d'audit autorisé.

Les modes principaux de Gobuster

Gobuster propose plusieurs modes d'attaque spécialisés :

Mode Rôle Cas d'usage
dir Découverte de répertoires et fichiers HTTP/HTTPS Dénicher des panels /admin, des sauvegardes .bak, des .env ou des endpoints d'API.
dns Brute-force de sous-domaines Repérer dev.exemple.com, vpn.exemple.com, test.exemple.com.
vhost Énumération de virtual hosts (en-tête Host:) Trouver des sites hébergés sur la même IP mais invisibles dans le DNS public.
fuzz Remplacement du mot-clé FUZZ Tester des paramètres d'URL ou des valeurs d'en-tête personnalisées.
s3 Recherche de buckets Amazon S3 Vérifier si des buckets cloud mal configurés sont accessibles.

Mode 1 : Découverte de répertoires et fichiers (dir)

C'est le mode le plus courant. Il teste les entrées d'une liste de mots (wordlist) à la racine du site web :

gobuster dir \
  -u https://exemple.com \
  -w /usr/share/wordlists/seclists/Discovery/Web-Content/raft-medium-directories.txt \
  -x php,html,txt,json,bak,env \
  -t 30 \
  -s "200,204,301,302,307,401,403" \
  -b "404" \
  -o resultats_dir.txt

Les options clés à retenir :

  • -u : L'URL cible.
  • -w : Le chemin vers votre dictionnaire.
  • -x : Les extensions de fichiers à tester systématiquement (ex: php,txt,env,bak,sql).
  • -t : Nombre de threads (10 par défaut, on peut monter à 30-50 sur un réseau stable).
  • -s : Codes HTTP considérés comme positifs (200, 301, 403...).
  • -b : Codes HTTP à masquer (typiquement 404).
  • -k : Ignore les alertes de certificats SSL/TLS invalides (pratique sur un lab local).

Mode 2 : Brute-force de sous-domaines (dns)

Pour cartographier les sous-domaines d'une organisation en interrogeant un résolveur DNS :

gobuster dns \
  -d exemple.com \
  -w /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-5000.txt \
  -r 1.1.1.1:53 \
  -t 50 \
  -o sous_domaines.txt
  • -d : Le domaine principal.
  • -r : Spécifier un résolveur DNS rapide pour ne pas saturer sa box locale.

Mode 3 : Trouver les Virtual Hosts cachés (vhost)

Sur un serveur web (Nginx / Apache / Traefik), plusieurs sites peuvent cohabiter sur la même adresse IP en étant filtrés uniquement via l'en-tête HTTP Host:.

Le mode vhost interroge directement l'IP en faisant varier cet en-tête avec les mots de votre dictionnaire :

gobuster vhost \
  -u http://192.168.1.50 \
  -w /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-5000.txt \
  --append-domain \
  -o vhosts.txt

L'option --append-domain ajoute automatiquement le domaine cible à chaque mot testé (admin.exemple.com, git.exemple.com...).

Quelles wordlists utiliser ?

L'efficacité de l'outil dépend à 90 % de votre dictionnaire. Le projet incontournable est SecLists (disponible sous Debian/Ubuntu avec sudo apt install seclists ou sur GitHub) :

  • Pour les répertoires classiques : Discovery/Web-Content/raft-medium-directories.txt ou common.txt.
  • Pour les fichiers sensibles et backups : Discovery/Web-Content/quickhits.txt.
  • Pour les sous-domaines : Discovery/DNS/subdomains-top1million-20000.txt.

En résumé

  • Gobuster allie rapidité et simplicité pour cartographier une application web.
  • Pensez toujours au paramètre -x pour cibler les extensions sensibles (.env, .bak, .conf).
  • L'enchaînement classique dns puis dir et vhost donne une vision claire de la surface exposée ;)