Realizar un escaneo básico de directorios en Gobuster

Beginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá los fundamentos del uso de Gobuster para el escaneo de directorios. Gobuster es una herramienta potente utilizada en pruebas de penetración y hacking ético para descubrir directorios y archivos ocultos en servidores web. Al realizar un ataque de fuerza bruta con nombres de directorios comunes contra una URL objetivo, Gobuster puede revelar información sensible o puntos de entrada pasados por alto. Este laboratorio lo guiará a través de la selección de un objetivo, la elección de una lista de palabras (wordlist) apropiada, la construcción del comando Gobuster, la ejecución del escaneo y la interpretación de los resultados.

Seleccionar una URL de destino para el escaneo

En este paso, seleccionará una URL de destino para su escaneo con Gobuster. Para el propósito de este laboratorio, utilizaremos una aplicación web deliberadamente vulnerable alojada localmente. Esto asegura que pueda realizar el escaneo sin afectar sistemas externos y observar resultados típicos.

Primero, asegurémonos de que el servidor web de destino esté en funcionamiento. Usaremos curl para verificar si el servidor web es accesible.

Abra su terminal en el directorio ~/project.

curl http://localhost:8080

Debería ver una salida HTML, lo que indica que el servidor web está activo. La URL de destino para nuestro escaneo será http://localhost:8080.

<!DOCTYPE html>
<html>
<head>
<title>Welcome to Nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to Nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

Elegir una lista de palabras básica (Wordlist)

En este paso, elegirá una lista de palabras (wordlist) básica para su escaneo con Gobuster. Una lista de palabras es un archivo que contiene una lista de nombres comunes de directorios y archivos que Gobuster intentará encontrar en el servidor de destino. La calidad y exhaustividad de su lista de palabras impactan directamente en la efectividad de su escaneo.

Para este laboratorio, utilizaremos una lista de palabras pequeña y preinstalada que es adecuada para fines de demostración. Esta lista de palabras se encuentra en /usr/share/wordlists/dirb/common.txt.

Puede inspeccionar las primeras líneas de esta lista de palabras utilizando el comando head para comprender su contenido:

head /usr/share/wordlists/dirb/common.txt

Este comando mostrará el principio de la lista de palabras, mostrando ejemplos de los nombres de directorios que Gobuster probará.

admin/
backup/
bin/
cgi-bin/
conf/
css/
data/
db/
dev/
doc/

Esta lista de palabras contiene nombres de directorios comunes que a menudo se encuentran en los servidores web. Usar una lista de palabras más pequeña como esta ayuda a completar el escaneo rápidamente para el propósito de este laboratorio.

Construir el comando básico de gobuster dir

En este paso, construirá el comando básico gobuster dir. El comando gobuster dir se utiliza para la fuerza bruta de directorios y archivos. Requiere al menos dos indicadores (flags) principales: -u para la URL de destino y -w para la lista de palabras (wordlist).

La sintaxis básica del comando es:

gobuster dir -u <target_url> -w <wordlist_path>

Basándonos en nuestros pasos anteriores:

  • La URL de destino es http://localhost:8080.
  • La ruta de la lista de palabras es /usr/share/wordlists/dirb/common.txt.

Por lo tanto, el comando que construirá es:

gobuster dir -u http://localhost:8080 -w /usr/share/wordlists/dirb/common.txt

Este comando le indica a Gobuster que realice un escaneo de directorios en http://localhost:8080 utilizando las entradas en common.txt como nombres de directorios potenciales. Ejecutará este comando en el siguiente paso.

Ejecutar el escaneo con los indicadores -u y -w

En este paso, ejecutará el comando gobuster dir que construyó en el paso anterior. Esto iniciará el escaneo de directorios contra nuestra URL de destino utilizando la lista de palabras especificada.

Ejecute el siguiente comando en su terminal:

gobuster dir -u http://localhost:8080 -w /usr/share/wordlists/dirb/common.txt

Mientras se ejecuta el escaneo, Gobuster mostrará su progreso y cualquier directorio o archivo que descubra. La salida mostrará el código de estado (por ejemplo, 200 para OK, 301 para Movido Permanentemente) y el tamaño de la respuesta para cada entrada encontrada.

===============================================================
Gobuster vX.X.X-XXXXXX Linux/amd64
===============================================================
[+] Url:                     http://localhost:8080
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirb/common.txt
[+] Status codes:            200,204,301,302,307,401,403
[+] User Agent:              gobuster/X.X.X
[+] Timeout:                 10s
===============================================================
XXXX/XX/XX XX:XX:XX Starting gobuster in directory enumeration mode
===============================================================
/css                  (Status: 301)
/js                   (Status: 301)
/images               (Status: 301)
/admin                (Status: 301)
/icons                (Status: 301)
/server-status        (Status: 403)
===============================================================
XXXX/XX/XX XX:XX:XX Finished
===============================================================

La salida anterior muestra varios directorios encontrados, junto con sus códigos de estado HTTP. Por ejemplo, /css devolvió un estado 301, lo que indica una redirección permanente.

Analizar la salida de los directorios encontrados

En este paso, analizará la salida de su escaneo de Gobuster para comprender los resultados. La salida proporciona información valiosa sobre los directorios y archivos descubiertos en el servidor web de destino.

Revise la salida del paso anterior. Debería ver líneas similares a estas:

/css                  (Status: 301)
/js                   (Status: 301)
/images               (Status: 301)
/admin                (Status: 301)
/icons                (Status: 301)
/server-status        (Status: 403)

Cada línea representa un directorio o archivo potencial encontrado por Gobuster.

  • La primera parte, por ejemplo, /css, es la ruta que Gobuster identificó con éxito.
  • (Status: XXX) indica el código de estado HTTP devuelto por el servidor para esa ruta.
    • 200 OK: La solicitud fue exitosa y se devolvió el contenido. Esto a menudo significa un directorio o archivo válido.
    • 301 Moved Permanently: El recurso se ha movido permanentemente a una nueva URL. Esto aún indica la existencia del directorio.
    • 403 Forbidden: El servidor entendió la solicitud pero se niega a autorizarla. Esto significa que el directorio existe pero no tiene permiso para acceder a él directamente.
    • 401 Unauthorized: Similar a 403, pero típicamente requiere autenticación.

En nuestro ejemplo, /css, /js, /images, /admin y /icons devolvieron códigos de estado 301, lo que significa que estos directorios existen y el servidor está redirigiendo las solicitudes a ellos. La ruta /server-status devolvió un estado 403, lo que indica que existe pero el acceso está prohibido.

Este análisis le ayuda a identificar áreas potenciales para una mayor investigación, como paneles administrativos (/admin) o archivos de configuración, que podrían ser vulnerables.

Resumen

En este laboratorio, realizó con éxito un escaneo básico de directorios utilizando Gobuster. Aprendió a seleccionar una URL de destino, elegir una lista de palabras apropiada, construir el comando gobuster dir con los indicadores -u y -w, ejecutar el escaneo y analizar la salida para identificar directorios existentes y sus códigos de estado HTTP. Esta habilidad fundamental es crucial para el reconocimiento en ciberseguridad, ayudándole a descubrir activos web ocultos que podrían contener información sensible o vulnerabilidades. Ahora puede aplicar estas técnicas con diferentes listas de palabras y objetivos para ampliar su comprensión de las estructuras de los servidores web.