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

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