Usar autenticación HTTP básica en Gobuster

Beginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá a utilizar eficazmente Gobuster, una popular herramienta de fuerza bruta de directorios y archivos, cuando un servidor web objetivo está protegido por autenticación HTTP básica. Muchas aplicaciones web e interfaces administrativas utilizan la autenticación HTTP básica para restringir el acceso a ciertos recursos. Sin proporcionar credenciales válidas, Gobuster normalmente no podría descubrir estas rutas protegidas. Este laboratorio lo guiará a través del proceso de identificación de dichos objetivos, la comprensión de cómo proporcionar el nombre de usuario y la contraseña necesarios a Gobuster, y la enumeración exitosa de directorios y archivos protegidos. Al final de este laboratorio, será competente en el uso de las banderas de autenticación de Gobuster para eludir las restricciones de acceso básicas y descubrir contenido web oculto.

Identificar un objetivo protegido por autenticación HTTP básica

En este paso, identificará un directorio de servidor web que está protegido por autenticación HTTP básica. Hemos configurado un servidor web Apache local con un directorio protegido /protected_area. Cuando intente acceder a este directorio sin credenciales, el servidor le solicitará un nombre de usuario y una contraseña.

Primero, intentemos acceder al directorio protegido usando curl sin proporcionar ninguna credencial. Esto demostrará el desafío de autenticación.

Abra su terminal y ejecute el siguiente comando:

curl http://localhost/protected_area/

Debería ver una salida similar a esta, que indica una respuesta 401 Unauthorized y una cabecera 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>

Esta salida confirma que /protected_area está protegido por autenticación HTTP básica.

A continuación, intentemos acceder a un archivo dentro de este directorio protegido, secret.txt, para confirmar que también está protegido.

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

Recibirá una respuesta 401 Unauthorized similar. Esto confirma que cualquier recurso dentro de /protected_area requiere autenticación.

Obtener el nombre de usuario y la contraseña

En un escenario del mundo real, obtener el nombre de usuario y la contraseña para la autenticación HTTP básica podría implicar varias técnicas como ingeniería social, phishing o fuerza bruta. Para el propósito de este laboratorio, hemos preconfigurado las credenciales para el área protegida.

El nombre de usuario es labexuser y la contraseña es labexpassword.

Puede verificar estas credenciales utilizando curl con la bandera -u, que le permite proporcionar el nombre de usuario y la contraseña directamente.

Ejecute el siguiente comando para acceder al directorio protegido con las credenciales correctas:

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

Ahora debería ver una respuesta exitosa, probablemente una lista de directorios vacía o una página de índice predeterminada si existiera. Dado que no hay index.html en /protected_area, podría ver un 403 Forbidden o una lista de directorios si los Indexes están habilitados. Lo importante es que no recibió un error 401 Unauthorized.

Ahora, intente acceder al archivo secret.txt dentro del directorio protegido utilizando las credenciales:

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

Ahora debería ver el contenido del archivo secret.txt:

This is a secret file.

Esto confirma que el nombre de usuario y la contraseña proporcionados son correctos y otorgan acceso a los recursos protegidos.

Usar la bandera -U para el nombre de usuario

En este paso, aprenderá cómo especificar el nombre de usuario para la autenticación HTTP básica en Gobuster utilizando la bandera -U. Esta bandera es crucial cuando conoce el nombre de usuario pero podría estar intentando adivinar la contraseña por fuerza bruta o simplemente necesita proporcionar el nombre de usuario como parte del proceso de autenticación.

Primero, intentemos un escaneo con Gobuster sin ninguna autenticación para ver su comportamiento contra el directorio protegido. Usaremos una pequeña lista de palabras para la demostración.

Cree un archivo de lista de palabras simple llamado common.txt en su directorio ~/project:

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

Ahora, ejecute Gobuster contra http://localhost usando esta lista de palabras, pero sin autenticación:

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

Notará que Gobuster probablemente informará 401 Unauthorized para la entrada /protected_area, lo que indica que no puede acceder a ella sin credenciales.

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

Ahora, usemos la bandera -U para especificar el nombre de usuario labexuser. Todavía omitiremos la contraseña por ahora para demostrar el efecto de solo el nombre de usuario.

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

Incluso con el nombre de usuario proporcionado, Gobuster seguirá recibiendo una respuesta 401 Unauthorized porque la contraseña también es necesaria. Este paso demuestra principalmente la sintaxis para proporcionar el nombre de usuario.

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

Esto muestra que, si bien se acepta el nombre de usuario, la autenticación aún falla sin la contraseña correcta.

Usar la bandera -P para la contraseña

En este paso, aprenderá cómo especificar la contraseña para la autenticación HTTP básica en Gobuster utilizando la bandera -P. Esta bandera, combinada con la bandera -U, permite a Gobuster realizar escaneos autenticados.

Continuando desde el paso anterior, sabemos que el nombre de usuario es labexuser y la contraseña es labexpassword. Ahora, agreguemos la bandera -P para proporcionar la contraseña.

Ejecute el siguiente comando de Gobuster, incluyendo ambas banderas, la del nombre de usuario (-U) y la de la contraseña (-P):

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

Observe cuidadosamente la salida. Esta vez, cuando Gobuster encuentre /protected_area, debería poder autenticarse correctamente e informar un estado 200 OK o 403 Forbidden (dependiendo de la configuración de listado de directorios), en lugar de 401 Unauthorized.

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

El estado 403 Forbidden indica que se concedió el acceso (autenticación exitosa), pero el servidor está configurado para prohibir los listados de directorios. Esta es una autenticación exitosa, a diferencia del 401 Unauthorized que vimos anteriormente.

Esto demuestra que al proporcionar tanto el nombre de usuario como la contraseña, Gobuster puede autenticarse correctamente contra la autenticación HTTP básica y continuar con su fuerza bruta de directorios.

Ejecutar el escaneo y acceder a recursos protegidos

En este paso final, ejecutará un escaneo completo con Gobuster contra el área protegida, asegurándose de que pueda descubrir el archivo secret.txt. Esto demuestra la aplicación práctica de usar la autenticación HTTP básica con Gobuster para descubrir recursos ocultos.

Modificaremos la URL de destino para escanear específicamente dentro de /protected_area y usaremos una lista de palabras que incluya secret.txt.

Primero, asegúrese de que nuestra lista de palabras common.txt contenga secret.txt. Si la creó en el Paso 3, ya debería estar allí.

Ahora, ejecute Gobuster apuntando a http://localhost/protected_area/ con el nombre de usuario y la contraseña correctos:

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

Después de que el escaneo se complete, debería ver una salida similar a esta, indicando que se encontró secret.txt con un estado 200 OK:

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

Esto confirma que Gobuster se autenticó correctamente y descubrió el archivo secret.txt dentro del directorio protegido.

Ahora puede verificar el contenido del archivo descubierto usando curl con las credenciales:

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

Debería ver:

This is a secret file.

Esto concluye el laboratorio. Ha aprendido con éxito cómo usar Gobuster con autenticación HTTP básica para descubrir recursos web protegidos.

Resumen

En este laboratorio, ha adquirido experiencia práctica en el uso de Gobuster para enumerar directorios y archivos en servidores web protegidos por autenticación HTTP básica. Comenzó identificando un objetivo protegido y comprendiendo la respuesta 401 Unauthorized. Luego, aprendió a proporcionar el nombre de usuario y la contraseña necesarios a Gobuster utilizando las banderas -U y -P. Finalmente, ejecutó con éxito un escaneo autenticado, demostrando la capacidad de Gobuster para descubrir recursos ocultos como secret.txt dentro de un área protegida. Esta habilidad es crucial para los probadores de penetración y profesionales de la seguridad al tratar con aplicaciones web que emplean mecanismos de autenticación básicos.