Introduction
Lors des tests d'intrusion ou des audits de sécurité d'applications web, il est courant de rencontrer des zones d'un site web qui ne sont accessibles qu'après authentification d'un utilisateur. Les outils de scan de répertoires standards comme Gobuster peuvent manquer ces chemins cachés car ils ne maintiennent pas de session. Ce laboratoire vous guidera à travers le processus d'utilisation de la fonctionnalité de cookies de Gobuster pour effectuer des scans de répertoires authentifiés. Vous apprendrez comment obtenir un cookie de session à partir d'une application web, puis utiliser ce cookie avec Gobuster pour découvrir des répertoires et des fichiers dans les sections authentifiées, offrant ainsi une vue plus complète de la surface d'attaque de l'application.
Connexion à une application web et obtention d'un cookie de session
Dans cette étape, vous allez simuler la connexion à une application web et capturer le cookie de session qui est défini après une authentification réussie. Ce cookie est crucial pour que Gobuster puisse accéder aux zones authentifiées. Nous utiliserons curl pour effectuer la connexion et extraire le cookie.
Tout d'abord, essayons d'accéder au tableau de bord sans authentification pour voir qu'il nous redirige :
curl -v http://localhost:8080/dashboard
Vous devriez voir un 302 Found vous redirigeant vers /. Maintenant, connectons-nous. L'application web possède un formulaire de connexion simple à l'adresse http://localhost:8080/ avec le nom d'utilisateur user et le mot de passe password. Nous allons envoyer une requête POST à /login avec ces identifiants.
curl -v -X POST -d "username=user&password=password" http://localhost:8080/login
Dans la sortie, recherchez l'en-tête Set-Cookie. Il devrait ressembler à quelque chose comme Set-Cookie: session=authenticated_session_id_12345; Path=/. La valeur authenticated_session_id_12345 est votre cookie de session. Notez cette valeur.
Maintenant, essayons d'accéder au tableau de bord en utilisant le cookie obtenu. Remplacez YOUR_COOKIE_VALUE par la valeur réelle du cookie que vous avez trouvée.
curl -v --cookie "session=authenticated_session_id_12345" http://localhost:8080/dashboard
Vous devriez maintenant voir le contenu de la page du tableau de bord, indiquant un accès authentifié réussi.
Construction d'une commande gobuster dir pour une zone authentifiée
Dans cette étape, vous allez préparer la commande de base gobuster dir. Nous ciblerons la zone authentifiée de l'application web. L'URL de base pour notre scan authentifié sera http://localhost:8080/authenticated/. Nous utiliserons une liste de mots courante pour le brute-force de répertoires.
Tout d'abord, assurons-nous que Gobuster est installé.
gobuster version
Vous devriez voir les informations de version. Sinon, veuillez vous référer à la section de configuration.
Maintenant, construisons la commande de base gobuster dir. Nous utiliserons l'option -u pour l'URL et -w pour la liste de mots. Pour ce laboratoire, nous utiliserons une petite liste de mots intégrée à des fins de démonstration, ou vous pouvez spécifier une liste courante comme common.txt si elle est disponible sur votre système. Si common.txt n'est pas trouvée, vous pouvez créer une petite liste de mots personnalisée pour les tests.
Créons une petite liste de mots pour ce laboratoire :
echo -e "secret_dir\nadmin\nconfig\nbackup\nusers" > ~/project/wordlist.txt
Maintenant, la commande de base sans le cookie ressemblerait à ceci :
gobuster dir -u http://localhost:8080/authenticated/ -w ~/project/wordlist.txt
Si vous exécutez cette commande maintenant, elle ne trouvera probablement pas secret_dir car elle nécessite une authentification. L'étape suivante ajoutera le cookie à cette commande.
Utilisation du flag -c pour fournir le cookie de session
Dans cette étape, vous allez intégrer le cookie de session que vous avez obtenu à l'étape 1 dans votre commande Gobuster en utilisant le flag -c. Ce flag permet à Gobuster d'inclure le cookie spécifié dans ses requêtes, lui permettant ainsi d'accéder aux zones authentifiées.
Rappelez-vous la valeur du cookie que vous avez obtenue à l'étape 1, qui était session=authenticated_session_id_12345.
Le flag -c attend le cookie au format clé=valeur. Ainsi, notre chaîne de cookie sera "session=authenticated_session_id_12345".
Maintenant, combinez cela avec la commande de l'étape 2 :
gobuster dir -u http://localhost:8080/authenticated/ -w ~/project/wordlist.txt -c "session=authenticated_session_id_12345"
Cette commande indique à Gobuster d'effectuer un scan de répertoires sur http://localhost:8080/authenticated/, en utilisant la liste de mots fournie, et surtout, en incluant le cookie session=authenticated_session_id_12345 dans chaque requête. Cela permettra à Gobuster de contourner la barrière d'authentification et de découvrir des ressources dans la zone protégée.
Avant d'exécuter, vérifiez que votre valeur de cookie est correcte.
Exécution du scan
Maintenant que vous avez construit la commande Gobuster complète, il est temps de l'exécuter et d'observer les résultats. Ce scan tentera de trouver des répertoires et des fichiers dans la section authentifiée de l'application web.
Exécutez la commande que vous avez préparée à l'étape précédente :
gobuster dir -u http://localhost:8080/authenticated/ -w ~/project/wordlist.txt -c "session=authenticated_session_id_12345"
Gobuster commencera le scan et affichera sa progression. Portez une attention particulière à la sortie. Vous devriez voir des entrées indiquant des répertoires ou des fichiers trouvés avec un Status: 200 (OK) ou Status: 301 (Moved Permanently) ou Status: 302 (Found), ce qui signifie que la ressource a été accédée avec succès ou redirigée.
Exemple de sortie :
===============================================================
Gobuster vX.X.X
===============================================================
[+] Url: http://localhost:8080/authenticated/
[+] Wordlist: /home/labex/project/wordlist.txt
[+] Threads: 10
[+] Timeout: 10s
[+] User Agent: gobuster/X.X.X
[+] Cookies: session=authenticated_session_id_12345
===============================================================
2024/01/01 12:00:00 Starting gobuster in directory enumeration mode
===============================================================
/secret_dir (Status: 200) [Size: 100]
===============================================================
2024/01/01 12:00:05 Finished
===============================================================
Remarquez comment /secret_dir est trouvé avec un Status: 200. Cela indique que Gobuster a réussi à accéder à ce répertoire car il envoyait le cookie d'authentification. Sans le cookie, ce répertoire ne serait probablement pas trouvé ou retournerait un statut de redirection/non autorisé.
Analyse des résultats pour trouver les pages accessibles uniquement lors de l'authentification
Dans cette dernière étape, vous allez analyser la sortie de votre scan Gobuster pour identifier les ressources qui ont été découvertes avec succès dans la zone authentifiée. L'objectif est de rechercher les entrées qui ont retourné un Status: 200 (OK) ou d'autres codes de succès, qui seraient normalement inaccessibles sans le cookie de session.
D'après la sortie de l'étape précédente, vous devriez avoir vu quelque chose de similaire à :
/secret_dir (Status: 200) [Size: 100]
Cette ligne indique que Gobuster a trouvé avec succès le chemin /secret_dir dans l'URL http://localhost:8080/authenticated/, et qu'il a retourné un statut HTTP 200 OK. C'est un indicateur fort que ce répertoire est accessible lors de l'authentification.
Pour confirmer, vous pouvez essayer d'accéder à ce chemin directement en utilisant curl sans le cookie :
curl http://localhost:8080/authenticated/secret_dir
Vous devriez être redirigé vers la page de connexion ou recevoir un message non autorisé.
Maintenant, essayez d'y accéder avec le cookie :
curl --cookie "session=authenticated_session_id_12345" http://localhost:8080/authenticated/secret_dir/hidden_file.html
Vous devriez voir le contenu de hidden_file.html, confirmant que ce chemin est bien accessible uniquement avec le cookie d'authentification correct.
Ce processus démontre comment l'utilisation de cookies avec Gobuster peut révéler des parties cachées d'une application web qui ne sont visibles que par les utilisateurs authentifiés, élargissant ainsi considérablement la portée de votre évaluation de sécurité.
Résumé
Dans ce laboratoire, vous avez appris avec succès à effectuer des scans de répertoires authentifiés à l'aide de Gobuster. Vous avez commencé par vous connecter à une application web simulée et à extraire un cookie de session. Ensuite, vous avez construit une commande Gobuster qui incluait ce cookie à l'aide de l'option -c. En exécutant cette commande, vous avez pu découvrir un répertoire caché (/secret_dir) qui n'était accessible qu'aux utilisateurs authentifiés. Cette technique est inestimable pour les professionnels de la sécurité et les développeurs qui ont besoin d'auditer minutieusement les applications web, en s'assurant que tous les chemins accessibles, même ceux derrière une authentification, sont correctement identifiés et sécurisés.
