Usar el Modo de Fuzzing Flexible en Gobuster

Beginner
Practicar Ahora

Introducción

En este laboratorio, explorará las capacidades flexibles de fuzzing de Gobuster, una popular herramienta de fuerza bruta de directorios y archivos. Si bien Gobuster es comúnmente conocido por su modo dir, su modo fuzz ofrece una forma potente de descubrir contenido web oculto inyectando payloads en varias partes de una URL. Aprenderá a construir URLs con la palabra clave especial FUZZ, proporcionar listas de palabras personalizadas, ejecutar escaneos de fuzzing e interpretar los resultados para identificar posibles vulnerabilidades o recursos ocultos en un servidor web. Esta experiencia práctica mejorará sus habilidades de enumeración web, que son cruciales para las pruebas de penetración y las evaluaciones de seguridad.

Comprender el propósito del modo fuzz y la palabra clave FUZZ

En este paso, aprenderá sobre el modo fuzz en Gobuster y la importancia de la palabra clave FUZZ. A diferencia del modo dir, que principalmente realiza fuerza bruta de nombres de directorios y archivos, el modo fuzz le permite inyectar payloads en posiciones arbitrarias dentro de una URL. La palabra clave FUZZ actúa como un marcador de posición donde Gobuster insertará cada entrada de su lista de palabras proporcionada. Esta flexibilidad le permite probar varias partes de una URL, como segmentos de ruta, extensiones de archivo o incluso parámetros de consulta, en busca de contenido oculto o vulnerabilidades.

Por ejemplo, si desea descubrir directorios ocultos bajo http://localhost:8000/, usaría una URL como http://localhost:8000/FUZZ. Gobuster reemplazará entonces FUZZ con cada palabra de su lista de palabras.

Verifiquemos que Gobuster esté instalado y sea accesible en su entorno.

gobuster version

Debería ver una salida similar a la siguiente, que indica la versión de Gobuster.

Gobuster v3.x.x

Construir una URL con la palabra clave FUZZ en la ruta

En este paso, construirá una URL de destino que incluya la palabra clave FUZZ. Esta palabra clave le indica a Gobuster dónde insertar las entradas de la lista de palabras durante el proceso de fuzzing. Para este laboratorio, nos dirigiremos a un servidor HTTP simple que se ejecuta localmente en el puerto 8000. Colocaremos la palabra clave FUZZ en el segmento de ruta para descubrir directorios o archivos ocultos.

La sintaxis básica para gobuster fuzz es gobuster fuzz -u <URL_con_FUZZ> -w <lista_de_palabras>.

Definamos la URL base para nuestro servidor de destino. El servidor se está ejecutando en http://localhost:8000. Queremos descubrir rutas ocultas directamente debajo de la raíz, por lo que nuestra URL "fuzzed" será http://localhost:8000/FUZZ.

Puede intentar acceder a la URL base para confirmar que el servidor se está ejecutando:

curl http://localhost:8000/

Debería ver el contenido de index.html:

Hello from index.html

Ahora, preparemos la estructura del comando. Aún no lo ejecutaremos, pero nos aseguraremos de que la URL esté formada correctamente.

echo "La URL fuzzed será: http://localhost:8000/FUZZ"

Este comando simplemente imprime la cadena de la URL, confirmando su comprensión de cómo colocar la palabra clave FUZZ.

Usar la bandera -w para proporcionar una lista de palabras (payload)

En este paso, aprenderá cómo especificar una lista de palabras para que Gobuster la use durante el proceso de fuzzing. La bandera -w se utiliza para proporcionar la ruta a su archivo de lista de palabras. Cada línea en este archivo se usará para reemplazar la palabra clave FUZZ en su URL de destino.

Para este laboratorio, se ha creado una lista de palabras simple llamada fuzz_wordlist.txt en su directorio ~/project durante la fase de configuración. Esta lista de palabras contiene algunas entradas que corresponden a rutas existentes y no existentes en nuestro servidor web simulado.

Inspeccionemos el contenido de la lista de palabras para comprender qué payloads se utilizarán:

cat ~/project/fuzz_wordlist.txt

Debería ver el siguiente contenido:

secret_dir
admin_panel
test_page.html
nonexistent

Ahora conoce los payloads que Gobuster intentará. Cuando ejecutemos el escaneo, Gobuster intentará acceder a URLs como http://localhost:8000/secret_dir, http://localhost:8000/admin_panel, y así sucesivamente.

Ejecutar el escaneo gobuster fuzz

En este paso, combinará todo el conocimiento previo para ejecutar el escaneo gobuster fuzz. Utilizará la URL "fuzzed" construida en el Paso 2 y la lista de palabras especificada en el Paso 3.

El comando completo será:

gobuster fuzz -u http://localhost:8000/FUZZ -w ~/project/fuzz_wordlist.txt

Desglosemos el comando:

  • gobuster fuzz: Invoca a Gobuster en modo fuzzing.
  • -u http://localhost:8000/FUZZ: Especifica la URL de destino con el marcador de posición FUZZ.
  • -w ~/project/fuzz_wordlist.txt: Proporciona la ruta a la lista de palabras que contiene los payloads.

Ahora, ejecute el comando en su terminal:

gobuster fuzz -u http://localhost:8000/FUZZ -w ~/project/fuzz_wordlist.txt

Verá a Gobuster iterando a través de la lista de palabras e informando los códigos de estado para cada intento.

===============================================================
Gobuster v3.x.x
===============================================================
[+] Url:            http://localhost:8000/FUZZ
[+] Wordlist:       /home/labex/project/fuzz_wordlist.txt
[+] Threads:        10
[+] Timeout:        10s
===============================================================
2024/01/01 12:00:00 Starting gobuster in fuzz mode
===============================================================
http://localhost:8000/secret_dir (Status: 200)
http://localhost:8000/admin_panel (Status: 200)
http://localhost:8000/test_page.html (Status: 200)
http://localhost:8000/nonexistent (Status: 404)
===============================================================
2024/01/01 12:00:00 Finished
===============================================================

Observe el (Status: 200) para secret_dir, admin_panel y test_page.html, lo que indica que estas rutas existen y devolvieron una respuesta exitosa. El (Status: 404) para nonexistent indica que esta ruta no se encontró, como se esperaba.

Analizar los resultados del Fuzzing Flexible

En este paso final, analizará la salida del escaneo gobuster fuzz para comprender qué se descubrió. El objetivo principal del fuzzing es identificar respuestas válidas (típicamente códigos de estado HTTP como 200 OK, 301 Moved Permanently, etc.) que indiquen la existencia de un recurso.

De la salida del paso anterior, debería haber observado líneas similares a estas:

http://localhost:8000/secret_dir (Status: 200)
http://localhost:8000/admin_panel (Status: 200)
http://localhost:8000/test_page.html (Status: 200)
http://localhost:8000/nonexistent (Status: 404)
  • http://localhost:8000/secret_dir (Status: 200): Esto indica que existe un directorio llamado secret_dir bajo la raíz web. Puede intentar acceder a él usando curl:

    curl http://localhost:8000/secret_dir/hidden_file.txt

    Debería ver:

    Secret content
  • http://localhost:8000/admin_panel (Status: 200): Esto sugiere que existe un directorio admin_panel.

    curl http://localhost:8000/admin_panel/login.php

    Debería ver:

    Admin login
  • http://localhost:8000/test_page.html (Status: 200): Esto indica que existe un archivo llamado test_page.html.

    curl http://localhost:8000/test_page.html

    Debería ver:

    Test page
  • http://localhost:8000/nonexistent (Status: 404): Este es un estado "No encontrado" (Not Found), que es lo esperado para una ruta que no existe. Esto ayuda a confirmar que Gobuster está identificando correctamente los recursos inexistentes.

Al analizar los códigos de estado, puede identificar de manera efectiva directorios ocultos, archivos u otros recursos que podrían no estar enlazados directamente desde el sitio web principal. Este es un paso crucial en el reconocimiento durante las evaluaciones de seguridad.

Resumen

En este laboratorio, aprendió con éxito a utilizar el modo de fuzzing flexible en Gobuster. Comprendió el papel de la palabra clave FUZZ como marcador de posición para inyectar payloads de una lista de palabras. Construyó una URL "fuzzed", proporcionó una lista de palabras personalizada, ejecutó un escaneo gobuster fuzz y analizó los resultados para identificar recursos web existentes. Esta experiencia práctica demostró el poder y la versatilidad de las capacidades de fuzzing de Gobuster para la enumeración web, una habilidad fundamental en ciberseguridad y pruebas de penetración. Ahora puede aplicar estas técnicas para descubrir contenido oculto en diversas aplicaciones web.