Utiliser l'authentification HTTP de base avec Gobuster

Beginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à utiliser efficacement Gobuster, un outil populaire de brute-force de répertoires et de fichiers, lorsqu'un serveur web cible est protégé par l'authentification HTTP de base (Basic HTTP Authentication). De nombreuses applications web et interfaces administratives utilisent l'authentification HTTP de base pour restreindre l'accès à certaines ressources. Sans fournir d'identifiants valides, Gobuster serait généralement incapable de découvrir ces chemins protégés. Ce laboratoire vous guidera à travers le processus d'identification de telles cibles, en expliquant comment fournir le nom d'utilisateur et le mot de passe nécessaires à Gobuster, et en énumérant avec succès les répertoires et fichiers protégés. À la fin de ce laboratoire, vous maîtriserez l'utilisation des drapeaux d'authentification de Gobuster pour contourner les restrictions d'accès de base et découvrir le contenu web caché.

Identifier une cible protégée par l'authentification HTTP de base

Dans cette étape, vous allez identifier un répertoire de serveur web protégé par l'authentification HTTP de base (Basic HTTP Authentication). Nous avons configuré un serveur web Apache local avec un répertoire protégé, /protected_area. Lorsque vous tenterez d'accéder à ce répertoire sans identifiants, le serveur vous demandera un nom d'utilisateur et un mot de passe.

Tout d'abord, essayons d'accéder au répertoire protégé en utilisant curl sans fournir d'identifiants. Cela démontrera le défi d'authentification.

Ouvrez votre terminal et exécutez la commande suivante :

curl http://localhost/protected_area/

Vous devriez voir une sortie similaire à celle-ci, indiquant une réponse 401 Unauthorized et un en-tête WWW-Authenticate :

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Unauthorized</title>
</head><body>
<h1>Unauthorized</h1>
<p>This server could not verify that you
are authorized to access the document
requested. Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
<hr>
<address>Apache/2.4.52 (Ubuntu) Server at localhost Port 80</address>
</body></html>

Cette sortie confirme que le répertoire /protected_area est protégé par l'authentification HTTP de base.

Ensuite, essayons d'accéder à un fichier dans ce répertoire protégé, secret.txt, pour confirmer qu'il est également protégé.

curl http://localhost/protected_area/secret.txt

Vous recevrez une réponse 401 Unauthorized similaire. Cela confirme que toute ressource située dans /protected_area nécessite une authentification.

Obtenir le nom d'utilisateur et le mot de passe

Dans un scénario réel, l'obtention du nom d'utilisateur et du mot de passe pour l'authentification HTTP de base pourrait impliquer diverses techniques telles que l'ingénierie sociale, le phishing ou le brute-force. Dans le cadre de ce laboratoire, nous avons préconfiguré les identifiants pour la zone protégée.

Le nom d'utilisateur est labexuser et le mot de passe est labexpassword.

Vous pouvez vérifier ces identifiants en utilisant curl avec le drapeau -u, qui vous permet de fournir directement le nom d'utilisateur et le mot de passe.

Exécutez la commande suivante pour accéder au répertoire protégé avec les identifiants corrects :

curl -u labexuser:labexpassword http://localhost/protected_area/

Vous devriez maintenant voir une réponse réussie, probablement une liste de répertoires vide ou une page d'index par défaut si elle existait. Comme il n'y a pas de index.html dans /protected_area, vous pourriez voir un 403 Forbidden ou une liste de répertoires si les Indexes sont activés. L'important est que vous n'ayez pas reçu d'erreur 401 Unauthorized.

Maintenant, essayez d'accéder au fichier secret.txt dans le répertoire protégé en utilisant les identifiants :

curl -u labexuser:labexpassword http://localhost/protected_area/secret.txt

Vous devriez maintenant voir le contenu du fichier secret.txt :

This is a secret file.

Cela confirme que le nom d'utilisateur et le mot de passe fournis sont corrects et accordent l'accès aux ressources protégées.

Utiliser le drapeau -U pour le nom d'utilisateur

Dans cette étape, vous apprendrez comment spécifier le nom d'utilisateur pour l'authentification HTTP de base dans Gobuster en utilisant le drapeau -U. Ce drapeau est crucial lorsque vous connaissez le nom d'utilisateur mais que vous pourriez être en train de forcer le mot de passe par force brute ou que vous avez simplement besoin de fournir le nom d'utilisateur dans le cadre du processus d'authentification.

Tout d'abord, tentons un scan Gobuster sans aucune authentification pour observer son comportement face au répertoire protégé. Nous utiliserons une petite liste de mots pour la démonstration.

Créez un fichier de liste de mots simple nommé common.txt dans votre répertoire ~/project :

echo -e "admin\nuser\nprotected_area\nsecret.txt" > ~/project/common.txt

Maintenant, exécutez Gobuster sur http://localhost en utilisant cette liste de mots, mais sans authentification :

gobuster dir -u http://localhost -w ~/project/common.txt

Vous remarquerez que Gobuster signalera probablement 401 Unauthorized pour l'entrée /protected_area, indiquant qu'il ne peut pas y accéder sans identifiants.

/protected_area       (Status: 401) [Size: 399]

Maintenant, utilisons le drapeau -U pour spécifier le nom d'utilisateur labexuser. Nous omettrons toujours le mot de passe pour l'instant afin de démontrer l'effet de la seule fourniture du nom d'utilisateur.

gobuster dir -u http://localhost -w ~/project/common.txt -U labexuser

Même avec le nom d'utilisateur fourni, Gobuster recevra toujours une réponse 401 Unauthorized car le mot de passe est également requis. Cette étape démontre principalement la syntaxe pour fournir le nom d'utilisateur.

/protected_area       (Status: 401) [Size: 399]

Cela montre que bien que le nom d'utilisateur soit accepté, l'authentification échoue toujours sans le mot de passe correct.

Utiliser le drapeau -P pour le mot de passe

Dans cette étape, vous apprendrez comment spécifier le mot de passe pour l'authentification HTTP de base dans Gobuster en utilisant le drapeau -P. Ce drapeau, combiné au drapeau -U, permet à Gobuster d'effectuer des scans authentifiés.

En continuant à partir de l'étape précédente, nous savons que le nom d'utilisateur est labexuser et le mot de passe est labexpassword. Maintenant, ajoutons le drapeau -P pour fournir le mot de passe.

Exécutez la commande Gobuster suivante, incluant les drapeaux pour le nom d'utilisateur (-U) et le mot de passe (-P) :

gobuster dir -u http://localhost -w ~/project/common.txt -U labexuser -P labexpassword

Observez attentivement la sortie. Cette fois, lorsque Gobuster rencontrera /protected_area, il devrait pouvoir s'authentifier avec succès et signaler un statut 200 OK ou 403 Forbidden (selon les paramètres de liste de répertoires), plutôt que 401 Unauthorized.

/protected_area       (Status: 403) [Size: 277]

Le statut 403 Forbidden indique que l'accès a été accordé (authentification réussie), mais que le serveur est configuré pour interdire les listes de répertoires. Il s'agit d'une authentification réussie, par opposition au 401 Unauthorized que nous avons vu précédemment.

Cela démontre qu'en fournissant à la fois le nom d'utilisateur et le mot de passe, Gobuster peut s'authentifier avec succès auprès de l'authentification HTTP de base et poursuivre son attaque par force brute de répertoires.

Exécuter le scan et accéder aux ressources protégées

Dans cette dernière étape, vous exécuterez un scan Gobuster complet sur la zone protégée, en vous assurant qu'il peut découvrir le fichier secret.txt. Cela démontre l'application pratique de l'utilisation de l'authentification HTTP de base avec Gobuster pour découvrir des ressources cachées.

Nous allons modifier l'URL cible pour scanner spécifiquement dans /protected_area et utiliser une liste de mots qui inclut secret.txt.

Tout d'abord, assurons-nous que notre liste de mots common.txt contient secret.txt. Si vous l'avez créée à l'étape 3, elle devrait déjà s'y trouver.

Maintenant, exécutez Gobuster en ciblant http://localhost/protected_area/ avec le nom d'utilisateur et le mot de passe corrects :

gobuster dir -u http://localhost/protected_area/ -w ~/project/common.txt -U labexuser -P labexpassword

Une fois le scan terminé, vous devriez voir une sortie similaire à celle-ci, indiquant que secret.txt a été trouvé avec un statut 200 OK :

/secret.txt           (Status: 200) [Size: 21]

Cela confirme que Gobuster s'est authentifié avec succès et a découvert le fichier secret.txt dans le répertoire protégé.

Vous pouvez maintenant vérifier le contenu du fichier découvert en utilisant curl avec les identifiants :

curl -u labexuser:labexpassword http://localhost/protected_area/secret.txt

Vous devriez voir :

This is a secret file.

Ceci conclut le laboratoire. Vous avez appris avec succès comment utiliser Gobuster avec l'authentification HTTP de base pour découvrir des ressources web protégées.

Résumé

Dans ce laboratoire, vous avez acquis une expérience pratique de l'utilisation de Gobuster pour énumérer les répertoires et les fichiers sur des serveurs web protégés par l'authentification HTTP de base. Vous avez commencé par identifier une cible protégée et comprendre la réponse 401 Unauthorized. Ensuite, vous avez appris à fournir le nom d'utilisateur et le mot de passe nécessaires à Gobuster en utilisant les drapeaux -U et -P. Enfin, vous avez exécuté avec succès un scan authentifié, démontrant la capacité de Gobuster à découvrir des ressources cachées comme secret.txt dans une zone protégée. Cette compétence est cruciale pour les testeurs d'intrusion et les professionnels de la sécurité lorsqu'ils traitent des applications web qui utilisent des mécanismes d'authentification de base.