Saltearse al contenido

ffuf & gobuster

ffuf y gobuster son fuzzers web: descubren contenido oculto (directorios, ficheros), parámetros, subdominios y hosts virtuales probando palabras de un diccionario contra el objetivo. Son básicos en la enumeración web (ver recon, Automatización del recon, ctf).

# descubrir directorios/ficheros (FUZZ marca dónde inyectar)
ffuf -u https://host/FUZZ -w wordlist.txt
ffuf -u https://host/FUZZ -w wl.txt -e .php,.txt,.bak # extensiones
# filtrar por tamaño/código/palabras (quitar ruido de 404 personalizados)
ffuf -u https://host/FUZZ -w wl.txt -fc 404 -fs 1234
# fuzzing de parámetros GET
ffuf -u 'https://host/page?FUZZ=x' -w params.txt -fs 0
# virtual hosts (vhost) por cabecera Host
ffuf -u https://host/ -H 'Host: FUZZ.host' -w subs.txt -fs <baseline>
gobuster dir -u https://host -w wl.txt -x php,txt # directorios/ficheros
gobuster dns -d target.com -w subs.txt # subdominios (DNS)
gobuster vhost -u https://host -w subs.txt # virtual hosts
# más simple que ffuf; ffuf es más flexible y rápido para casos complejos
-mc / -fc match/filter por CÓDIGO de estado (p. ej. -fc 404)
-ms / -fs match/filter por TAMAÑO de respuesta (quitar páginas de error de tamaño fijo)
-mw / -fw match/filter por número de PALABRAS
-ac auto-calibración (ffuf detecta el patrón de "no encontrado" solo)
# un 404 personalizado devuelve 200: hay que filtrar por tamaño/palabras, no solo por código
SecLists la colección estándar (Discovery/Web-Content/raft-*, common.txt, directory-list)
- elegir el diccionario según contexto (tecnología, idioma, tamaño)
- empezar por listas medianas (raft-medium) y afinar; no lanzar la lista gigante de entrada
  • El filtrado es lo que hace útil el fuzzing: usar -fs/-fw/-ac contra 404 personalizados.
  • SecLists es el estándar de diccionarios; elegir según tecnología y contexto.
  • ffuf para casos complejos (parámetros, vhost, rápido); gobuster para lo simple.
  • Parte central de la enumeración web (recon, Automatización del recon) y de los CTF web (Categorías (pwn, web, cripto, forense)).
  • Filtra por tamaño/código/palabras (-fc, -fs, -fw) o te ahogarás en falsos positivos; calibra con una ruta inexistente primero.
  • Error típico: no fijar la extensión (-e .php,.bak) ni elegir el diccionario adecuado (SecLists por caso de uso).
  • Para VHosts usa -H "Host: FUZZ.dominio" y filtra la respuesta base; recursividad con -recursion pero con cabeza.
  • Ajusta -t (hilos) y -rate: ir a tope tumba el objetivo y dispara baneos o WAF.
  • Fuzzing de directorios/ficheros con extensiones
  • Filtrar ruido (fc/fs/fw o -ac) contra 404 personalizados
  • Fuzzing de parámetros GET/POST ocultos
  • Descubrir subdominios (DNS) y virtual hosts (Host header)
  • Elegir diccionario SecLists adecuado al contexto
  • Empezar con listas medianas y afinar
  • Trabajar dentro del scope autorizado (Leer el scope & reglas)