Découvrir les fichiers cachés avec un préfixe point dans Gobuster

Beginner
Pratiquer maintenant

Introduction

Dans la sécurité des applications web, la découverte de fichiers et répertoires cachés est une étape critique de la phase de reconnaissance. De nombreuses applications stockent des configurations sensibles, des contrôles de version ou des variables d'environnement dans des fichiers préfixés par un point (par exemple, .env, .git, .htaccess). Ces fichiers sont souvent masqués par défaut dans les navigateurs de fichiers et les serveurs web, ce qui en fait des cibles moins évidentes. Cependant, s'ils sont mal configurés, ils peuvent être directement accessibles via un serveur web, entraînant de graves vulnérabilités de divulgation d'informations.

Gobuster est un outil puissant de brute-force de répertoires et de fichiers qui peut être utilisé pour découvrir ces actifs cachés. En fournissant une liste de mots ciblée contenant des noms de fichiers courants préfixés par un point, vous pouvez augmenter considérablement vos chances de trouver des informations précieuses qui pourraient autrement passer inaperçues.

Ce laboratoire vous guidera à travers le processus d'utilisation de Gobuster pour cibler et découvrir spécifiquement ces fichiers cachés préfixés par un point. Vous apprendrez à préparer une liste de mots appropriée, à exécuter un scan Gobuster et à interpréter les résultats pour identifier les risques de sécurité potentiels.

Comprendre l'importance des fichiers préfixés par un point (par exemple, .env, .git)

Dans cette étape, nous allons comprendre pourquoi les fichiers préfixés par un point sont importants dans le contexte de la sécurité web. Des fichiers tels que .env, .git, .htaccess, .bashrc, ou .ssh sont couramment utilisés dans les environnements Linux et de développement web pour stocker des configurations, des données de contrôle de version, ou des identifiants sensibles.

  • Fichiers .env : Ces fichiers stockent les variables d'environnement, incluant souvent les identifiants de base de données, les clés d'API et d'autres paramètres sensibles de l'application. S'ils sont exposés, ils peuvent accorder à un attaquant un accès complet aux systèmes backend.
  • Répertoires .git : Si un répertoire .git est exposé sur un serveur web, il peut permettre à un attaquant de télécharger l'intégralité du dépôt de code source, y compris l'historique des commits, les fichiers sensibles qui faisaient autrefois partie du dépôt, et les commentaires internes.
  • Fichiers .htaccess : Utilisés par les serveurs web Apache pour configurer les paramètres au niveau du répertoire, y compris l'authentification, l'autorisation et la réécriture d'URL. Des mauvaises configurations ou une exposition peuvent entraîner des contournements ou des divulgations d'informations.

Bien que ces fichiers soient généralement masqués par défaut dans les explorateurs de fichiers et soient souvent destinés à être inaccessibles via les serveurs web, des mauvaises configurations peuvent les exposer involontairement. Leur découverte lors de la reconnaissance peut fournir des informations critiques sur l'infrastructure de l'application cible et ses vulnérabilités potentielles.

Nous avons configuré un serveur web simple en arrière-plan pour ce laboratoire, servant du contenu depuis /tmp/web_root. Ce répertoire contient un fichier .env caché et un fichier .hidden_config, que nous allons tenter de découvrir.

Créer ou trouver une liste de mots contenant des noms de fichiers préfixés par un point

Dans cette étape, nous allons préparer une liste de mots spécialement conçue pour trouver des fichiers préfixés par un point. Bien qu'il existe de nombreuses listes de mots à usage général (comme celles de SecLists), la création d'une liste ciblée peut être plus efficace pour cette tâche spécifique.

Nous allons créer une liste de mots simple nommée dotfiles.txt dans votre répertoire ~/project. Cette liste de mots contiendra des noms de fichiers courants préfixés par un point que nous voulons que Gobuster vérifie.

Naviguez d'abord vers votre répertoire de projet :

cd ~/project

Maintenant, créez le fichier dotfiles.txt en utilisant nano et ajoutez quelques noms de fichiers courants préfixés par un point.

nano dotfiles.txt

Dans nano, ajoutez les lignes suivantes :

.env
.git
.htaccess
.bashrc
.profile
.ssh
.hidden_config

Appuyez sur Ctrl+S pour enregistrer le fichier et Ctrl+X pour quitter nano.

Vous pouvez vérifier le contenu de la liste de mots en utilisant cat :

cat dotfiles.txt

Vous devriez voir la liste des noms de fichiers préfixés par un point que vous venez d'ajouter.

.env
.git
.htaccess
.bashrc
.profile
.ssh
.hidden_config

Cette liste de mots sera utilisée par Gobuster pour effectuer un brute-force afin de vérifier l'existence de ces fichiers spécifiques sur le serveur web cible.

Exécuter un scan gobuster dir avec cette liste de mots spécifique

Dans cette étape, nous allons exécuter un scan gobuster dir en utilisant la liste de mots dotfiles.txt que nous avons créée. Nous ciblerons le serveur web factice fonctionnant sur http://127.0.0.1:8000.

La syntaxe de base pour gobuster dir est : gobuster dir -u <target_url> -w <wordlist_path>

Ici, -u spécifie l'URL cible, et -w spécifie le chemin vers la liste de mots.

Exécutez la commande suivante dans votre terminal :

gobuster dir -u http://127.0.0.1:8000 -w ~/project/dotfiles.txt

Décomposons la commande :

  • gobuster dir : Spécifie que nous voulons effectuer un scan de brute-force de répertoires/fichiers.
  • -u http://127.0.0.1:8000 : Définit l'URL cible sur notre serveur web factice local.
  • -w ~/project/dotfiles.txt : Indique à Gobuster d'utiliser notre liste de mots personnalisée dotfiles.txt.

Après avoir exécuté la commande, Gobuster commencera à itérer sur la liste de mots et à effectuer des requêtes vers le serveur cible. Vous devriez voir une sortie similaire à celle-ci, indiquant les fichiers découverts :

===============================================================
Gobuster vX.X.X.X-XXXXX Linux/amd64
===============================================================
[+] Url:                     http://127.0.0.1:8000
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /home/labex/project/dotfiles.txt
[+] Status codes:            200,204,301,302,307,401,403
[+] User Agent:              gobuster/X.X.X
[+] Timeout:                 10s
===============================================================
2024/01/01 12:00:00 Starting gobuster in directory enumeration mode
===============================================================
/.env                 (Status: 200) [Size: 20]
/.hidden_config       (Status: 200) [Size: 27]
===============================================================
2024/01/01 12:00:00 Finished
===============================================================

Comme vous pouvez le constater, Gobuster a identifié avec succès les fichiers .env et .hidden_config, tous deux renvoyant un statut 200 OK, indiquant qu'ils sont accessibles.

Utiliser le drapeau --no-error pour masquer les erreurs de connexion

Dans cette étape, nous allons découvrir le drapeau --no-error dans Gobuster. Lors de l'exécution de scans, en particulier contre des cibles instables ou en cas de problèmes réseau, Gobuster peut afficher de nombreux messages d'erreur de connexion. Ces erreurs peuvent encombrer la sortie et rendre plus difficile la détection des découvertes légitimes.

Le drapeau --no-error indique à Gobuster de supprimer ces messages d'erreur liés à la connexion, offrant ainsi une sortie plus propre axée sur les découvertes réussies.

Relançons le scan Gobuster, en incluant cette fois le drapeau --no-error. Bien que notre serveur local actuel soit stable, ce drapeau est très utile dans des scénarios réels.

gobuster dir -u http://127.0.0.1:8000 -w ~/project/dotfiles.txt --no-error

Vous remarquerez que la sortie est similaire à celle de l'étape précédente, car il n'y avait pas d'erreurs de connexion à masquer dans notre environnement local stable. Cependant, dans un scénario réel avec de nombreuses requêtes et des problèmes réseau potentiels, ce drapeau réduirait considérablement le bruit.

L'objectif principal de ce drapeau est d'améliorer la lisibilité des résultats du scan en filtrant les messages d'erreur non pertinents, vous permettant ainsi de vous concentrer sur les découvertes réelles (par exemple, les réponses 200 OK).

Analyser les résultats pour la divulgation de fichiers sensibles

Dans cette dernière étape, nous allons analyser les résultats obtenus du scan Gobuster et comprendre les implications de la découverte de tels fichiers.

D'après la sortie de notre précédent scan Gobuster, nous avons trouvé :

  • /.env (Status: 200) [Size: 20]
  • /.hidden_config (Status: 200) [Size: 27]

Un code d'état 200 OK indique que le fichier a été trouvé et est accessible via le serveur web. C'est une découverte critique.

Pour démontrer l'impact, essayons d'accéder directement au fichier .env en utilisant curl :

curl http://127.0.0.1:8000/.env

Vous devriez voir le contenu du fichier .env :

DB_PASSWORD=supersecret

Cela montre clairement que des informations sensibles (un mot de passe de base de données dans ce cas) ont été exposées. Dans un scénario réel, un attaquant pourrait utiliser ces informations pour obtenir un accès non autorisé aux bases de données ou à d'autres systèmes backend.

De même, vous pouvez essayer d'accéder au fichier .hidden_config :

curl http://127.0.0.1:8000/.hidden_config

Sortie :

This is another hidden file.

Bien que ce fichier spécifique ne contienne pas de données hautement sensibles, sa découverte indique une mauvaise configuration potentielle où des fichiers destinés à être cachés sont accessibles publiquement. Cela pourrait conduire à une énumération plus poussée et à la découverte d'actifs plus critiques.

Points clés à retenir :

  • Vérifiez toujours les fichiers commençant par un point lors de la reconnaissance web.
  • La présence de tels fichiers avec un statut 200 OK est un indicateur fort de divulgation d'informations.
  • Les développeurs et les administrateurs système doivent s'assurer que les fichiers sensibles ne sont jamais directement accessibles via un serveur web, généralement en configurant des règles serveur (par exemple, les blocs location de Nginx, les directives Directory d'Apache) ou en les plaçant en dehors de la racine web.

Cet exercice souligne l'importance d'une reconnaissance approfondie et de la puissance d'outils comme Gobuster pour découvrir des vulnérabilités cachées.

Résumé

Dans ce laboratoire, vous avez appris avec succès à utiliser Gobuster pour découvrir des fichiers et répertoires cachés précédés d'un point. Vous avez commencé par comprendre l'importance de ces fichiers, qui contiennent souvent des informations sensibles comme des variables d'environnement ou des données de contrôle de version.

Vous avez ensuite créé une liste de mots ciblée contenant des noms de fichiers courants précédés d'un point et l'avez utilisée pour effectuer un scan gobuster dir contre un serveur web factice. Vous avez observé comment Gobuster a efficacement identifié les fichiers cachés accessibles comme .env et .hidden_config. De plus, vous avez découvert le drapeau --no-error pour nettoyer la sortie du scan en supprimant les erreurs de connexion.

Enfin, vous avez analysé les résultats, démontrant comment l'accès direct à un fichier .env peut conduire à la divulgation d'identifiants critiques. Ce laboratoire a souligné l'importance d'inclure l'énumération des fichiers dot dans votre méthodologie de reconnaissance pour découvrir des vulnérabilités potentielles de divulgation d'informations dans les applications web.

En maîtrisant cette technique, vous êtes mieux équipé pour identifier et signaler les risques de sécurité qui pourraient autrement passer inaperçus.