Secciones
1. Introducción
En este post, exploraremos cómo utilizar FFUF, una herramienta versátil para realizar fuzzing en aplicaciones web. Aprenderás desde los conceptos básicos hasta técnicas avanzadas, con ejemplos prácticos que podrás replicar. ¡Vamos al lío!
2. ¿Qué es el Fuzzing Web?
El fuzzing es una técnica que envía múltiples entradas a una aplicación para descubrir rutas, archivos o parámetros ocultos. En el contexto web, nos ayuda a identificar:
- Directorios y archivos no vinculados.
- Subdominios o hosts virtuales (vhosts).
- Parámetros vulnerables (como en formularios o APIs).
FFUF destaca por su velocidad y flexibilidad, permitiendo automatizar estas pruebas de manera eficiente.
3. Configuración Inicial
3.1. Instalación de FFUF
Si usas una distribución basada en Debian:
sudo apt install ffuf -y
O clona el repositorio oficial:
git clone https://github.com/ffuf/ffuf
4. Fuzzing de Directorios y Archivos
4.1. Paso 1: Seleccionar una Lista de Palabras
Las listas de palabras son esenciales. Recomiendo SecLists, un repositorio con diccionarios para múltiples propósitos. En sistemas como Parrot OS o Kali, suele estar en:
/usr/share/seclists/
Ejemplo para buscar una lista de directorios:
locate directory-list-2.3-small.txt
En Kali también podemos utilizar el comando «wordlists» para que nos muestre todos los diccionarios disponibles.
4.2. Paso 2: Comando Básico de FFUF
Para descubrir directorios en un sitio web:
ffuf -w /ruta/seclists/Discovery/Web-Content/directory-list-2.3-small.txt:FUZZ -u http://TARGET_IP:PUERTO/FUZZ
-w
: Especifica la lista de palabras y la palabra claveFUZZ
.-u
: URL objetivo, dondeFUZZ
se sustituye por cada entrada de la lista.
Ejemplo de Salida:
blog [Status: 301, Size: 326, Words: 20, Lines: 10]
admin [Status: 200, Size: 465, Words: 42, Lines: 15]
5. Fuzzing de Extensiones
Si encuentras un directorio vacío (ej: /blog
), busca archivos con extensiones comunes (.php, .html):
ffuf -w /ruta/seclists/Discovery/Web-Content/web-extensions.txt:FUZZ -u http://TARGET_IP:PUERTO/blog/indexFUZZ
Resultado Típico:
.php [Status: 200, Size: 0, Words: 1, Lines: 1]
Aquí, index.php
existe pero está vacío.
6. Fuzzing Recursivo
Para explorar subdirectorios automáticamente:
ffuf -w /ruta/seclists/Discovery/Web-Content/directory-list-2.3-small.txt:FUZZ -u http://TARGET_IP:PUERTO/FUZZ -recursion -recursion-depth 2 -e .php -v
-recursion
: Habilita escaneo recursivo.-recursion-depth 2
: Limita la profundidad del análisis.
7. Descubriendo VHosts Ocultos
Los Virtual Hosts (vhosts) son sitios alojados en el mismo servidor pero con nombres diferentes. Para encontrarlos:
7.1. Paso 1: Filtrado por Tamaño de Respuesta
ffuf -w /ruta/seclists/Discovery/DNS/subdomains-top1million-5000.txt:FUZZ -u http://TARGET_IP:PUERTO/ -H "Host: FUZZ.dominio.com" -fs 900
-H "Host: FUZZ.dominio.com"
: Modifica el encabezadoHost
.-fs 900
: Filtra respuestas con tamaño 900 (ajusta según el contexto).
Ejemplo de VHost Encontrado:
admin.dominio.com [Status: 200, Size: 1200, Words: 200, Lines: 30]
8. Fuzzing de Parámetros GET/POST
8.1. Parámetros GET
Para encontrar parámetros ocultos en URLs:
ffuf -w /ruta/seclists/Discovery/Web-Content/burp-parameter-names.txt:FUZZ -u http://admin.dominio.com:PUERTO/admin.php?FUZZ=valor -fs 0
8.2. Parámetros POST
Si el sitio usa formularios:
ffuf -w /ruta/seclists/Discovery/Web-Content/burp-parameter-names.txt:FUZZ -u http://admin.dominio.com:PUERTO/admin.php -X POST -d "FUZZ=valor" -H "Content-Type: application/x-www-form-urlencoded" -fs 0
9. Fuzzing de Valores de Parámetros
Supongamos que descubres un parámetro id
que acepta valores numéricos. Genera una lista de IDs:
for i in {1..1000}; do echo $i >> ids.txt; done
Luego, prueba cada valor:
ffuf -w ids.txt:FUZZ -u http://admin.dominio.com:PUERTO/admin.php -X POST -d "id=FUZZ" -H "Content-Type: application/x-www-form-urlencoded" -fs 0
Resultado Esperado:
582 [Status: 200, Size: 150, Words: 10, Lines: 1]
10. Consejos Finales
- Velocidad vs. Estabilidad: Aumenta hilos con
-t 100
, pero evita saturar el servidor. - Filtrado Inteligente: Usa
-mc
para incluir códigos HTTP válidos (ej:-mc 200,301
). - Personaliza Listas: Adapta las listas de palabras según el contexto (ej: añade términos relacionados con el sitio).
¡Y eso es todo! Con FFUF, tienes un aliado poderoso para descubrir vulnerabilidades ocultas.