Gobuster y ffuf son dos de las herramientas de fuzzing más usadas en pentesting web. Permiten descubrir directorios ocultos, archivos, parámetros y subdominios mediante ataques de diccionario. Son rápidas, modulares y esenciales en la fase de reconocimiento.
# Gobuster (Go):
apt install gobuster
# ffuf (Go — más flexible y rápido):
apt install ffuf
# Wordlists recomendadas (incluidas en Kali/SecLists):
apt install seclists
# Ruta principal: /usr/share/seclists/
Al hacer fuzzing, el servidor responde con códigos de estado. Saber interpretarlos te indica qué hacer a continuación:
# Escaneo básico de directorios:
gobuster dir -u http://objetivo.com -w /usr/share/seclists/Discovery/Web-Content/common.txt
# Buscar archivos con extensiones específicas:
gobuster dir -u http://objetivo.com -w wordlist.txt -x php,html,txt,bak,zip
# Ignorar códigos de respuesta concretos (eliminar ruido):
gobuster dir -u http://objetivo.com -w wordlist.txt -b 404,403
A diferencia de Gobuster, ffuf usa la palabra clave FUZZ para inyectar el diccionario en cualquier parte de la petición (URL, Cabeceras, POST data).
# Fuzzing de directorios:
ffuf -u http://objetivo.com/FUZZ -w dicc.txt
# Fuzzing de parámetros GET (Ej: id=1, file=algo):
ffuf -u "http://objetivo.com/page.php?FUZZ=test" -w parametros.txt
# Fuzzing POST (formularios de login, APIs JSON):
ffuf -u http://objetivo.com/login \
-w /usr/share/wordlists/rockyou.txt \
-X POST \
-d "username=admin&password=FUZZ" \
-H "Content-Type: application/x-www-form-urlencoded"
Te enfrentas a un servidor configurado como "Catch-all" (miente y siempre devuelve código 200 OK). Demuestra tus habilidades construyendo el comando ffuf exacto para filtrar la basura y encontrar el panel oculto.
>_ INICIAR RETO CTF 07A veces, los servidores están mal configurados y devuelven un 200 OK incluso si la página no existe (mostrando una página de error personalizada). Esto inunda nuestro fuzzing de miles de falsos positivos.
Para solucionarlo, analizamos el tamaño (Size) o la cantidad de palabras (Words) de la página de error genérica y le decimos a ffuf que filtre y oculte las respuestas que coincidan con ese tamaño exacto.
# Filtrar por código HTTP:
ffuf -u http://objetivo.com/FUZZ -w dicc.txt -fc 404,403
# Filtrar por tamaño de respuesta en Bytes (evadir Catch-all):
ffuf -u http://objetivo.com/FUZZ -w dicc.txt -fs 512
# Filtrar por número de palabras o líneas:
ffuf -u http://objetivo.com/FUZZ -w dicc.txt -fw 10 -fl 25
# Subdominios DNS (Gobuster):
gobuster dns -d objetivo.com -w subdomains.txt
# Virtual Hosts con ffuf (Inyectando en la cabecera Host):
ffuf -u http://10.10.10.10 \
-H "Host: FUZZ.objetivo.com" \
-w subdomains.txt \
-fs 4242 # Muy importante excluir el tamaño de la respuesta por defecto