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):
apt install ffuf
# o compilar desde código fuente:
go install github.com/ffuf/ffuf/v2@latest
# Wordlists recomendadas (incluidas en Kali/SecLists):
apt install seclists
# Ruta: /usr/share/seclists/
# Escaneo básico de directorios:
gobuster dir -u http://objetivo.com -w /usr/share/seclists/Discovery/Web-Content/common.txt
# Con extensiones de archivo:
gobuster dir -u http://objetivo.com \
-w /usr/share/seclists/Discovery/Web-Content/raft-medium-files.txt \
-x php,html,txt,bak,zip
# Ignorar códigos de respuesta concretos:
gobuster dir -u http://objetivo.com \
-w /usr/share/wordlists/dirb/big.txt \
-b 404,403
# Con cabeceras HTTP personalizadas (útil con cookies de sesión):
gobuster dir -u http://objetivo.com \
-w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt \
-H "Cookie: session=abc123" \
-H "Authorization: Bearer TOKEN"
# Con proxy (Burp Suite):
gobuster dir -u http://objetivo.com \
-w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt \
--proxy http://127.0.0.1:8080
# Bruteforce de subdominios DNS:
gobuster dns -d objetivo.com \
-w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
# Con resolución de IPs:
gobuster dns -d objetivo.com \
-w /usr/share/seclists/Discovery/DNS/bitquark-subdomains-top100000.txt \
--show-ips
# Con servidor DNS personalizado (evitar detección):
gobuster dns -d objetivo.com \
-w /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt \
-r 8.8.8.8
# Descubrir Virtual Hosts en un mismo servidor:
gobuster vhost -u http://objetivo.com \
-w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt \
--append-domain
# Filtrar por tamaño de respuesta (excluir falsos positivos):
gobuster vhost -u http://objetivo.com \
-w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt \
--append-domain \
--exclude-length 250
# Fuzzing de directorios (FUZZ = marcador de posición):
ffuf -u http://objetivo.com/FUZZ \
-w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt
# Con extensiones múltiples:
ffuf -u http://objetivo.com/FUZZ \
-w /usr/share/seclists/Discovery/Web-Content/raft-medium-files.txt \
-e .php,.html,.txt,.bak
# Fuzzing de parámetros GET:
ffuf -u "http://objetivo.com/page.php?FUZZ=test" \
-w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt
# Fuzzing de valores de parámetros:
ffuf -u "http://objetivo.com/page.php?id=FUZZ" \
-w /usr/share/seclists/Fuzzing/LFI/LFI-Jhaddix.txt
# Fuzzing POST (formularios, APIs):
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" \
-fc 302
# Filtrar por código HTTP:
ffuf -u http://objetivo.com/FUZZ -w wordlist.txt -fc 404,403
# Filtrar por tamaño de respuesta (bytes):
ffuf -u http://objetivo.com/FUZZ -w wordlist.txt -fs 1234
# Filtrar por número de palabras en la respuesta:
ffuf -u http://objetivo.com/FUZZ -w wordlist.txt -fw 10
# Filtrar por número de líneas:
ffuf -u http://objetivo.com/FUZZ -w wordlist.txt -fl 25
# Modo silencioso + guardar en fichero JSON:
ffuf -u http://objetivo.com/FUZZ \
-w /usr/share/seclists/Discovery/Web-Content/raft-large-directories.txt \
-o resultados.json -of json -s
# Subdominios con ffuf:
ffuf -u http://FUZZ.objetivo.com \
-w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt \
-fs 0
# VHost fuzzing (cabecera Host):
ffuf -u http://IP_DEL_SERVIDOR \
-H "Host: FUZZ.objetivo.com" \
-w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt \
-fs 4242 # excluir respuesta default por tamaño
| Escenario | Wordlist |
|---|---|
| Directorios comunes | Discovery/Web-Content/common.txt |
| Directorios completo | Discovery/Web-Content/directory-list-2.3-medium.txt |
| Archivos (con ext.) | Discovery/Web-Content/raft-medium-files.txt |
| Parámetros GET/POST | Discovery/Web-Content/burp-parameter-names.txt |
| Subdominios (rápido) | Discovery/DNS/subdomains-top1million-5000.txt |
| Subdominios (completo) | Discovery/DNS/bitquark-subdomains-top100000.txt |
| LFI payloads | Fuzzing/LFI/LFI-Jhaddix.txt |