FFUF: Ataque de Aplicaciones Web

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 clave FUZZ.
  • -u: URL objetivo, donde FUZZ 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 encabezado Host.
  • -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

  1. Velocidad vs. Estabilidad: Aumenta hilos con -t 100, pero evita saturar el servidor.
  2. Filtrado Inteligente: Usa -mc para incluir códigos HTTP válidos (ej: -mc 200,301).
  3. 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.

Comparte esta Publicación en Redes Sociales