Attacking Web Aplications with Ffuf
Fuzzing
El fuzzing es una técnica de prueba automatizada utilizada para identificar vulnerabilidades en sistemas y aplicaciones.
ffuf
Ffuf es una herramienta rápida y eficiente para el fuzzing de directorios y archivos ocultos en servidores web.
Se basa en wordlists y parámetros como
FUZZ
para probar rutas dinámicamente.Se pueden utilizar filtros y matchers para refinar los resultados.
Hay que tener precauciĂłn con los hilos (
-t
) para evitar afectar la estabilidad del servidor.


Recursive Fuzzing
Permite explorar mĂşltiples subdirectorios de forma automatizada.
Reduce el tiempo necesario para descubrir directorios y archivos ocultos.
ConfiguraciĂłn de fuzzing recursivo en Ffuf
recursion
→ Habilita el escaneo recursivo.recursion-depth
→ Define la profundidad máxima de escaneo.e .php
→ Especifica extensiones de archivos a buscar.
ffuf -w /opt/useful/seclists/Discovery/Web-Content/directory-list-2.3-small.txt:FUZZ -u http://SERVER_IP:PORT/FUZZ -recursion -recursion-depth 1 -e .php
ExplicaciĂłn:
Escaneará los directorios principales y su primer nivel de subdirectorios.
No escaneará niveles más profundos como
/login/user/
a menos que se aumente la profundidad.Buscará archivos con la extensión
.php
dentro de los directorios encontrados.
DNS Records
Problema de conexión: Al intentar acceder a academy.htb, el navegador no puede conectarse porque no es un sitio público y no está registrado en el DNS.
SoluciĂłn: Para conectarse a academy.htb, se debe agregar la IP y el dominio al archivo /etc/hosts usando el comando:
sudo sh -c 'echo "SERVER_IP academy.htb" >> /etc/hosts'
Verificación: Después de agregarlo al archivo /etc/hosts, podemos acceder al sitio web. Sin embargo, se muestra la misma página que al acceder directamente a la IP.
Exploración de subdominios: Se realiza una búsqueda de subdominios bajo '*.academy.htb' para encontrar posibles paneles o áreas de administración.
Vhosts Vs. Sub-Domains
Diferencia entre VHosts y subdominios: Los VHosts son subdominios que se sirven en el mismo servidor y tienen la misma IP, permitiendo que una sola IP sirva mĂşltiples sitios web.
Limitaciones del fuzzing de subdominios: El fuzzing de subdominios solo encuentra subdominios pĂşblicos, pero no puede detectar subdominios no pĂşblicos o VHosts.
SoluciĂłn con VHost Fuzzing: Para identificar tanto subdominios pĂşblicos como no pĂşblicos, se utiliza fuzzing de VHosts en los encabezados HTTP, especĂficamente en el encabezado
Host
.Uso del comando:
ffuf -w /opt/useful/seclists/Discovery/DNS/subdomains-top1million-5000.txt:FUZZ -u http://academy.htb:PUERTO/ -H 'Host: FUZZ.academy.htb'
Esto permite verificar diferentes VHosts sin modificar manualmente /etc/hosts.
Resultado esperado: Aunque todas las pruebas devuelvan un 200 OK, un VHost válido mostrará una respuesta con un tamaño diferente debido a la página especĂfica de ese VHost.
GET Request Fuzzing

Parameter Fuzzing - POST


Tip
Tip: In PHP, "POST" data "content-type" can only accept "application/x-www-form-urlencoded". So, we can set that in "ffuf" with "-H 'Content-Type: application/x-www-form-urlencoded'".
Skills
ffuf -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt:FUZZ -u http://academy.htb:49918/ -H 'Host: FUZZ.academy.htb' -t 200 -fs 985
ffuf -w /usr/share/seclists/Discovery/Web-Content/web-extensions.txt:FUZZ -u http://test.academy.htb:49918/indexFUZZ
ffuf -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-small.txt:FUZZ -u http://faculty.academy.htb:49918/FUZZ -e .php,.phps,.php7 -recursion -recursion-depth 1 -fs 287,0
curl http://faculty.academy.htb:49918/courses/linux-security.php7
ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -u http://faculty.academy.htb:49918/courses/linux-security.php7 -X POST -d 'FUZZ=key' -H 'Content-Type: application/x-www-form-urlencoded' -fs 774
ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -u http://faculty.academy.htb:49918/courses/linux-security.php7 -X POST -d 'username=FUZZ' -H 'Content-Type: application/x-www-form-urlencoded' -fs 781
ffuf -w /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt:FUZZ -u http://faculty.academy.htb:49918/courses/linux-security.php7 -X POST -d 'username=FUZZ' -H 'Content-Type: application/x-www-form-urlencoded' -fs 781
curl -X POST http://faculty.academy.htb:49918/courses/linux-security.php7 -d "username=harry" -H 'Content-Type: application/x-www-form-urlencoded'
Last updated