Introducción
En la seguridad de aplicaciones web, descubrir archivos y directorios ocultos es un paso crítico en la fase de reconocimiento. Muchas aplicaciones almacenan configuraciones sensibles, control de versiones o variables de entorno en archivos que comienzan con un punto (por ejemplo, .env, .git, .htaccess). Estos archivos a menudo están ocultos por defecto en los exploradores de archivos y servidores web, lo que los convierte en objetivos menos obvios. Sin embargo, si están mal configurados, pueden ser accesibles directamente a través de un servidor web, lo que lleva a graves vulnerabilidades de divulgación de información.
Gobuster es una potente herramienta de fuerza bruta de directorios y archivos que se puede utilizar para descubrir estos activos ocultos. Al proporcionar una lista de palabras (wordlist) específica que contenga nombres de archivos comunes que comienzan con un punto, puede aumentar significativamente sus posibilidades de encontrar información valiosa que de otro modo podría pasarse por alto.
Este laboratorio lo guiará a través del proceso de uso de Gobuster para apuntar y descubrir específicamente estos archivos ocultos que comienzan con un punto. Aprenderá a preparar una lista de palabras adecuada, ejecutar un escaneo con Gobuster e interpretar los resultados para identificar posibles riesgos de seguridad.
Comprender la importancia de los archivos con prefijo de punto (por ejemplo, .env, .git)
En este paso, comprenderemos por qué los archivos con prefijo de punto son importantes en el contexto de la seguridad web. Archivos como .env, .git, .htaccess, .bashrc o .ssh se utilizan comúnmente en entornos Linux y de desarrollo web para almacenar configuraciones, datos de control de versiones o credenciales sensibles.
- Archivos
.env: Estos archivos almacenan variables de entorno, a menudo incluyendo credenciales de bases de datos, claves de API y otras configuraciones sensibles de la aplicación. Si se exponen, pueden otorgar a un atacante acceso completo a los sistemas backend. - Directorios
.git: Si un directorio.gitse expone en un servidor web, puede permitir a un atacante descargar todo el repositorio de código fuente, incluido el historial de confirmaciones (commit history), archivos sensibles que alguna vez formaron parte del repositorio y comentarios internos. - Archivos
.htaccess: Utilizados por los servidores web Apache para configurar ajustes a nivel de directorio, incluyendo autenticación, autorización y reescritura de URL (URL rewriting). Las malas configuraciones o la exposición pueden llevar a omisiones (bypasses) o divulgación de información.
Si bien estos archivos suelen estar ocultos por defecto en los exploradores de archivos y a menudo están destinados a ser inaccesibles a través de servidores web, las malas configuraciones pueden exponerlos inadvertidamente. Descubrirlos durante el reconocimiento puede proporcionar información crítica sobre la infraestructura de la aplicación objetivo y las posibles vulnerabilidades.
Hemos configurado un servidor web simple en segundo plano para este laboratorio, sirviendo contenido desde /tmp/web_root. Este directorio contiene un archivo .env oculto y un archivo .hidden_config, que intentaremos descubrir.
Crear o encontrar una lista de palabras (wordlist) que contenga nombres de archivos con prefijo de punto
En este paso, prepararemos una lista de palabras (wordlist) diseñada específicamente para encontrar archivos con prefijo de punto. Si bien existen muchas listas de palabras de propósito general (como las de SecLists), crear una específica puede ser más eficiente para esta tarea en particular.
Crearemos una lista de palabras simple llamada dotfiles.txt en su directorio ~/project. Esta lista de palabras contendrá nombres de archivos comunes con prefijo de punto que queremos que Gobuster verifique.
Primero, navegue a su directorio de proyecto:
cd ~/project
Ahora, cree el archivo dotfiles.txt usando nano y agregue algunos nombres de archivos comunes con prefijo de punto.
nano dotfiles.txt
Dentro de nano, agregue las siguientes líneas:
.env
.git
.htaccess
.bashrc
.profile
.ssh
.hidden_config
Presione Ctrl+S para guardar el archivo y Ctrl+X para salir de nano.
Puede verificar el contenido de la lista de palabras usando cat:
cat dotfiles.txt
Debería ver la lista de nombres de archivos con prefijo de punto que acaba de agregar.
.env
.git
.htaccess
.bashrc
.profile
.ssh
.hidden_config
Esta lista de palabras será utilizada por Gobuster para realizar un ataque de fuerza bruta en busca de la existencia de estos archivos específicos en el servidor web objetivo.
Ejecutar un escaneo de Gobuster dir con esta lista de palabras específica
En este paso, ejecutaremos un escaneo de gobuster dir utilizando la lista de palabras dotfiles.txt que creamos. Nos dirigiremos al servidor web simulado que se ejecuta en http://127.0.0.1:8000.
La sintaxis básica para gobuster dir es:
gobuster dir -u <target_url> -w <wordlist_path>
Aquí, -u especifica la URL objetivo y -w especifica la ruta a la lista de palabras.
Ejecute el siguiente comando en su terminal:
gobuster dir -u http://127.0.0.1:8000 -w ~/project/dotfiles.txt
Analicemos el comando:
gobuster dir: Especifica que queremos realizar un escaneo de fuerza bruta de directorios/archivos.-u http://127.0.0.1:8000: Establece la URL objetivo en nuestro servidor web simulado local.-w ~/project/dotfiles.txt: Indica a Gobuster que utilice nuestra lista de palabras personalizadadotfiles.txt.
Después de ejecutar el comando, Gobuster comenzará a iterar a través de la lista de palabras y a realizar solicitudes al servidor objetivo. Debería ver una salida similar a esta, indicando los archivos descubiertos:
===============================================================
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
===============================================================
Como puede ver, Gobuster identificó con éxito los archivos .env y .hidden_config, ambos devolviendo un estado 200 OK, lo que indica que son accesibles.
Usar la bandera --no-error para ocultar errores de conexión
En este paso, aprenderemos sobre la bandera --no-error en Gobuster. Al realizar escaneos, especialmente contra objetivos inestables o al tratar con problemas de red, Gobuster puede generar muchos mensajes de error de conexión. Estos errores pueden saturar la salida y dificultar la detección de hallazgos legítimos.
La bandera --no-error indica a Gobuster que suprima estos mensajes de error relacionados con la conexión, proporcionando una salida más limpia centrada en los descubrimientos exitosos.
Volvamos a ejecutar el escaneo de Gobuster, esta vez incluyendo la bandera --no-error. Si bien nuestro servidor local actual es estable, esta bandera es muy útil en escenarios del mundo real.
gobuster dir -u http://127.0.0.1:8000 -w ~/project/dotfiles.txt --no-error
Notará que la salida es similar al paso anterior, ya que no hubo errores de conexión que suprimir en nuestro entorno local estable. Sin embargo, en un escenario del mundo real con muchas solicitudes y posibles problemas de red, esta bandera reduciría significativamente el ruido.
El propósito principal de esta bandera es mejorar la legibilidad de los resultados del escaneo al filtrar los mensajes de error irrelevantes, lo que le permite centrarse en los hallazgos reales (por ejemplo, respuestas 200 OK).
Analizar los resultados de divulgación de archivos sensibles
En este paso final, analizaremos los resultados obtenidos del escaneo de Gobuster y comprenderemos las implicaciones de descubrir dichos archivos.
De la salida de nuestro escaneo anterior de Gobuster, encontramos:
/.env(Status: 200) [Size: 20]/.hidden_config(Status: 200) [Size: 27]
Un código de estado 200 OK indica que el archivo se encontró y es accesible a través del servidor web. Este es un hallazgo crítico.
Para demostrar el impacto, intentemos acceder directamente al archivo .env usando curl:
curl http://127.0.0.1:8000/.env
Debería ver el contenido del archivo .env:
DB_PASSWORD=supersecret
Esto muestra claramente que se ha expuesto información sensible (una contraseña de base de datos en este caso). En un escenario del mundo real, un atacante podría usar esta información para obtener acceso no autorizado a bases de datos u otros sistemas backend.
De manera similar, puede intentar acceder al archivo .hidden_config:
curl http://127.0.0.1:8000/.hidden_config
Salida:
This is another hidden file.
Si bien este archivo específico podría no contener datos altamente sensibles, su descubrimiento indica una posible mala configuración en la que los archivos destinados a estar ocultos son públicamente accesibles. Esto podría conducir a una mayor enumeración y descubrimiento de activos más críticos.
Conclusiones clave:
- Siempre busque archivos prefijados con un punto durante el reconocimiento web.
- La presencia de tales archivos con un estado
200 OKes un fuerte indicador de divulgación de información. - Los desarrolladores y administradores de sistemas deben asegurarse de que los archivos sensibles nunca sean directamente accesibles a través de un servidor web, típicamente configurando reglas del servidor (por ejemplo, bloques
locationde Nginx, directivasDirectoryde Apache) o colocándolos fuera de la raíz web.
Este ejercicio resalta la importancia de un reconocimiento exhaustivo y el poder de herramientas como Gobuster para descubrir vulnerabilidades ocultas.
Resumen
En este laboratorio, ha aprendido con éxito a utilizar Gobuster para descubrir archivos y directorios ocultos prefijados con un punto. Comenzó comprendiendo la importancia de dichos archivos, que a menudo contienen información sensible como variables de entorno o datos de control de versiones.
Luego creó una lista de palabras dirigida que contenía nombres de archivo comunes prefijados con un punto y la utilizó para realizar un escaneo de gobuster dir contra un servidor web simulado. Observó cómo Gobuster identificó eficazmente archivos ocultos accesibles como .env y .hidden_config. Además, aprendió sobre la bandera --no-error para limpiar la salida del escaneo suprimiendo los errores de conexión.
Finalmente, analizó los resultados, demostrando cómo el acceso directo a un archivo .env puede conducir a la divulgación de credenciales críticas. Este laboratorio enfatizó la importancia de incluir la enumeración de archivos con puntos en su metodología de reconocimiento para descubrir posibles vulnerabilidades de divulgación de información en aplicaciones web.
Al dominar esta técnica, estará mejor equipado para identificar e informar riesgos de seguridad que de otro modo pasarían desapercibidos.
