← Volver al inicio
Gobuster ffuf Fuzzing Directorios Subdominios Reconocimiento
Básico

Gobuster y ffuf: Fuzzing Web y Subdominios

10/06/2024

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.

1. Instalación

# 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/

2. Gobuster — Enumeración de directorios

# 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

3. Gobuster — Enumeración de subdominios

# 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

4. Gobuster — VHost fuzzing

# 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

5. ffuf — Fuzzing avanzado

# 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

6. ffuf — Filtros para eliminar falsos positivos

# 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

7. ffuf — Fuzzing de subdominios y VHosts

# 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

8. Wordlists recomendadas por escenario

EscenarioWordlist
Directorios comunesDiscovery/Web-Content/common.txt
Directorios completoDiscovery/Web-Content/directory-list-2.3-medium.txt
Archivos (con ext.)Discovery/Web-Content/raft-medium-files.txt
Parámetros GET/POSTDiscovery/Web-Content/burp-parameter-names.txt
Subdominios (rápido)Discovery/DNS/subdomains-top1million-5000.txt
Subdominios (completo)Discovery/DNS/bitquark-subdomains-top100000.txt
LFI payloadsFuzzing/LFI/LFI-Jhaddix.txt