Attacking Web Applications with ffuf - Web Fuzzing

Target(s): 94.237.63.11:30816

Nos proporcionan la dirección IP de una academia online, pero no tenemos más información sobre su sitio web. Como primer paso para realizar una pentest, hay que localizar todas las páginas y dominios vinculados a la IP para realizar una enumeración correctamente.

Se deben realizar pruebas de fuzzing en las páginas que se identifiquen para ver si alguna de ellas tiene parámetros con los que se pueda interactuar. Si encontramos parámetros activos, hay que comprobar si se puede recuperar algún dato de ellos.

Pregunta 1: Realiza un análisis de fuzzing de subdominios/vhosts en «*.academy.htb» para la IP del objetivo. ¿Cuáles son todos los subdominios que puedes identificar? (Escribe solo el nombre del subdominio).

  1. Primero añadiremos al archivo /etc/hosts la IP y dominio:

sudo sh -c 'echo "94.237.63.11 academy.htb" >> /etc/hosts'
  1. Empezaremos haciendo fuzzing de subdominios, el siguiente comando devuelve los subdominios válidos (los que responden):

ffuf -w /opt/useful/seclists/Discovery/DNS/subdomains-top1million-5000.txt:FUZZ -u https://FUZZ.academy.htb/
  1. A continuación, haremos fuzzing de vhosts, cuando varias aplicaciones están en el mismo IP/puerto, el servidor HTTP puede distinguirlas según el valor de la cabecera Host:

ffuf -w /opt/useful/SecLists/Discovery/DNS/subdomains-top1million-5000.txt:FUZZ -u http://academy.htb:30816/ -H 'Host: FUZZ.academy.htb'
  1. Por último, haremos fuzzing de vhosts con filtro por tamaño de respuesta, muchas respuestas innecesarias pueden tener el mismo tamaño (por ser errores o páginas de default). Filtraremos por tamaño para distinguir respuestas “diferentes”, que suelen indicar un subdominio/vhost válido y funcional.:

ffuf -w /opt/useful/seclists/Discovery/DNS/subdomains-top1million-5000.txt:FUZZ -u http://academy.htb:30816/ -H 'Host: FUZZ.academy.htb' -fs 985

Pregunta 2: Antes de ejecutar el análisis de fuzzing de la página, primero debe ejecutar un análisis de fuzzing de extensiones. ¿Cuáles son las diferentes extensiones aceptadas por los dominios?

  1. Añadiremos los subdominios encontrados en la pregunta anterior al archivo /etc/hosts:

sudo nano /etc/hosts
  1. Hacemos fuzzing sobre los subdominios, probando extensiones sobre la página index y filtrando las que tenga una respuesta de 284 bytes:

Pregunta 3: Una de las páginas que identificarás debería decir 'You don't have access!'. ¿Cuál es la URL completa de la página?

  1. Probaremos haciendo fuzzing sobre los subdominios e indicando las extensiones encontradas en la pregunta anterior:

  1. Dependiendo de las respuestas obtenidas, inspeccionaremos detalladamente un archivo que nos ha dado una respuesta interesante:

Pregunta 3: En la página de la pregunta anterior, deberías poder encontrar varios parámetros que son aceptados por la página. ¿Cuáles son?

  1. Con el siguiente comando se realizará un fuzzing avanzado para encontrar nombres de parámetros aceptados en un formulario POST al recurso dentro del subdominio:

Pregunta 4: Prueba a realizar fuzzing con los parámetros que has identificado para obtener valores válidos. Uno de ellos debería devolver una flag. ¿Cuál es el contenido de la flag?

  1. Haremos fuzzing sobre uno de los parámetros descubiertos en la pregunta anterior:

  1. Realizamos una petición POST directa con el parámetro y el valor que se identificó como válido o que dio un resultado interesante durante el fuzzing de la pregunta anterior, confirmando de forma manual la respuesta del servidor para ese parámetro específico:

Última actualización