Introducción
En las pruebas de penetración de aplicaciones web o en auditorías de seguridad, es común encontrar áreas de un sitio web que solo son accesibles después de que un usuario se ha autenticado. Herramientas de escaneo de directorios estándar como Gobuster pueden pasar por alto estas rutas ocultas porque no mantienen una sesión. Este laboratorio lo guiará a través del proceso de uso de la funcionalidad de cookies de Gobuster para realizar escaneos de directorios autenticados. Aprenderá a obtener una cookie de sesión de una aplicación web y luego a usar esa cookie con Gobuster para descubrir directorios y archivos dentro de secciones autenticadas, proporcionando una visión más completa de la superficie de ataque de la aplicación.
Iniciar sesión en una aplicación web y obtener una cookie de sesión
En este paso, simulará el inicio de sesión en una aplicación web y capturará la cookie de sesión que se establece tras una autenticación exitosa. Esta cookie es crucial para que Gobuster acceda a las áreas autenticadas. Utilizaremos curl para realizar el inicio de sesión y extraer la cookie.
Primero, intentemos acceder al panel de control sin autenticación para ver que nos redirige:
curl -v http://localhost:8080/dashboard
Debería ver una redirección 302 Found que lo devuelve a /. Ahora, iniciemos sesión. La aplicación web tiene un formulario de inicio de sesión simple en http://localhost:8080/ con el nombre de usuario user y la contraseña password. Enviaremos una solicitud POST a /login con estas credenciales.
curl -v -X POST -d "username=user&password=password" http://localhost:8080/login
En la salida, busque la cabecera Set-Cookie. Debería parecerse a algo como Set-Cookie: session=authenticated_session_id_12345; Path=/. El valor authenticated_session_id_12345 es su cookie de sesión. Anote este valor.
Ahora, intentemos acceder al panel de control utilizando la cookie obtenida. Reemplace YOUR_COOKIE_VALUE con el valor real de la cookie que encontró.
curl -v --cookie "session=authenticated_session_id_12345" http://localhost:8080/dashboard
Ahora debería ver el contenido de la página del panel de control, lo que indica un acceso autenticado exitoso.
Construir un comando gobuster dir para un área autenticada
En este paso, preparará el comando básico gobuster dir. Nos dirigiremos al área autenticada de la aplicación web. La URL base para nuestro escaneo autenticado será http://localhost:8080/authenticated/. Utilizaremos una lista de palabras común para la fuerza bruta de directorios.
Primero, asegurémonos de que Gobuster esté instalado.
gobuster version
Debería ver la información de la versión. Si no es así, consulte la sección de configuración.
Ahora, construyamos el comando básico gobuster dir. Usaremos la opción -u para la URL y -w para la lista de palabras. Para este laboratorio, utilizaremos una lista de palabras pequeña y predeterminada para fines de demostración, o puede especificar una común como common.txt si está disponible en su sistema. Si no se encuentra common.txt, puede crear una lista de palabras personalizada pequeña para probar.
Creemos una lista de palabras pequeña para este laboratorio:
echo -e "secret_dir\nadmin\nconfig\nbackup\nusers" > ~/project/wordlist.txt
Ahora, el comando básico sin la cookie se vería así:
gobuster dir -u http://localhost:8080/authenticated/ -w ~/project/wordlist.txt
Si ejecuta este comando ahora, es probable que no encuentre secret_dir porque requiere autenticación. El siguiente paso agregará la cookie a este comando.
Usar la opción -c para proporcionar la cookie de sesión
En este paso, integrará la cookie de sesión que obtuvo en el Paso 1 en su comando Gobuster utilizando la opción -c. Esta opción permite a Gobuster incluir la cookie especificada en sus solicitudes, lo que le permite acceder a áreas autenticadas.
Recuerde el valor de la cookie que obtuvo en el Paso 1, que fue session=authenticated_session_id_12345.
La opción -c espera la cookie en el formato clave=valor. Por lo tanto, nuestra cadena de cookie será "session=authenticated_session_id_12345".
Ahora, combine esto con el comando del Paso 2:
gobuster dir -u http://localhost:8080/authenticated/ -w ~/project/wordlist.txt -c "session=authenticated_session_id_12345"
Este comando le indica a Gobuster que realice un escaneo de directorios en http://localhost:8080/authenticated/, utilizando la lista de palabras proporcionada y, de manera crucial, incluyendo la cookie session=authenticated_session_id_12345 en cada solicitud. Esto permitirá a Gobuster eludir la barrera de autenticación y descubrir recursos dentro del área protegida.
Antes de ejecutar, verifique que el valor de su cookie sea correcto.
Ejecutar el escaneo
Ahora que ha construido el comando completo de Gobuster, es hora de ejecutarlo y observar los resultados. Este escaneo intentará encontrar directorios y archivos dentro de la sección autenticada de la aplicación web.
Ejecute el comando que preparó en el paso anterior:
gobuster dir -u http://localhost:8080/authenticated/ -w ~/project/wordlist.txt -c "session=authenticated_session_id_12345"
Gobuster iniciará el escaneo y mostrará su progreso. Preste mucha atención a la salida. Debería ver entradas que indiquen directorios o archivos encontrados con un Status: 200 (OK) o Status: 301 (Moved Permanently) o Status: 302 (Found), lo que significa que el recurso se accedió o redirigió correctamente.
Ejemplo de salida:
===============================================================
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
===============================================================
Observe cómo se encuentra /secret_dir con un Status: 200. Esto indica que Gobuster accedió correctamente a este directorio porque estaba enviando la cookie de autenticación. Sin la cookie, es probable que este directorio no se encontrara o devolviera un estado de redirección/no autorizado.
Analizar los resultados para encontrar páginas accesibles solo cuando se está autenticado
En este paso final, analizará la salida de su escaneo de Gobuster para identificar los recursos que se descubrieron con éxito dentro del área autenticada. La clave es buscar entradas que devolvieran un Status: 200 (OK) u otros códigos de éxito, que normalmente serían inaccesibles sin la cookie de sesión.
De la salida del paso anterior, debería haber visto algo similar a:
/secret_dir (Status: 200) [Size: 100]
Esta línea indica que Gobuster encontró con éxito la ruta /secret_dir dentro de la URL http://localhost:8080/authenticated/, y devolvió un estado HTTP 200 OK. Este es un fuerte indicador de que este directorio es accesible cuando se está autenticado.
Para confirmar, puede intentar acceder a esta ruta directamente usando curl sin la cookie:
curl http://localhost:8080/authenticated/secret_dir
Debería ser redirigido a la página de inicio de sesión o recibir un mensaje de no autorizado.
Ahora, intente acceder con la cookie:
curl --cookie "session=authenticated_session_id_12345" http://localhost:8080/authenticated/secret_dir/hidden_file.html
Debería ver el contenido de hidden_file.html, lo que confirma que esta ruta es efectivamente accesible solo con la cookie de autenticación correcta.
Este proceso demuestra cómo el uso de cookies con Gobuster puede revelar partes ocultas de una aplicación web que solo son visibles para los usuarios autenticados, ampliando significativamente el alcance de su evaluación de seguridad.
Resumen
En este laboratorio, aprendió con éxito a realizar escaneos de directorios autenticados utilizando Gobuster. Comenzó iniciando sesión en una aplicación web simulada y extrayendo una cookie de sesión. Luego, construyó un comando de Gobuster que incluía esta cookie usando la bandera -c. Al ejecutar este comando, pudo descubrir un directorio oculto (/secret_dir) que solo era accesible para usuarios autenticados. Esta técnica es invaluable para profesionales de la seguridad y desarrolladores que necesitan auditar a fondo las aplicaciones web, asegurando que todas las rutas accesibles, incluso aquellas detrás de la autenticación, se identifiquen y aseguren adecuadamente.
