Ffuf es una herramienta cuyo nombre significa Fuzz Faster U Fool. Se usa para enumeración, fuzzing y descubrimiento de directorios por fuerza bruta.

Ffuf viene ya instalado en Kali, Parrot, etc. Podemos buscar versiones para otras distros Linux en Repology.

También podemos echar un vistazo a las instrucciones para instalar Ffuf manualmente.

Instalar SecLists

SecLists es una colección de listas de muchos tipos que se usan durante tests de seguridad. Desde listas de usuarios hasta web shells, SecLists también viene instalada en Kali y otras distribuciones de seguridad.

De nuevo podemos ir a Repology o seguir las instrucciones para instalarlas manualmente.

Así pues, como primer paso, instalamos Ffuf para practicar en las máquinas que despliega esta habitación.

Lo básico de Ffuf

Puedes ver la ayuda con.

ffuf -h

Salen un millón de opciones pero, como mínimo, deberemos darle 2:

  • -u para especificar una URL.
  • -w (de wordlist) para especificar una lista de palabras.

Del mismo modo, tenemos la palabra clave FUZZ que Ffuf usa para inyectar las entradas de la lista de palabras en el lugar en el que escribamos la palabra clave.

Desplegamos la máquina y un ataque básico sería:

ffuf -u http://IP_Ataque/FUZZ -w /usr/share/seclists/Discovery/Web-Content/big.txt

Como vemos, FUZZ está puesta tras la dirección básica, con lo que nos encontrará directorios que coincidan con la lista de palabras que le alimentamos.

También se puede usar cualquier palabra clave, en lugar de FUZZ. Para eso, tienes que definirla así:

wordlist.txt:KEYWORD

En ese caso, la instrucción quedaría así:

ffuf -u http://IP_Ataque/NORAJ -w /usr/share/seclists/Discovery/Web-Content/big.txt:NORAJ

Efectuamos el ataque básico contra la máquina desplegada en la habitación. ¿Cuál es el primer archivo encontrado con código de estatus 200?

favicon.ico

Encontrando páginas y directorios

Una aproximación que podemos emplear sería empezar enumerando con una lista genérica de archivos, como raft-medium-files-lowercase.txt

ffuf -u http://IP_Ataque/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-files-lowercase.txt

La de arriba es la expresión que usaremos en la primera pregunta que nos harán dentro de este apartado.

Sin embargo, usar una gran lista genérica que contiene extensiones irrelevantes no es muy eficiente.

En su lugar, podemos asumir, que index.<extension> es la página por defecto de muchos sitios web, de manera que podemos probar extensiones comunes para la página índice solamente. Con este método, podemos determinar normalmente qué lenguaje de programación está usando el sitio.

Por ejemplo, podemos añadir la extensión después del índice y usar un archivo que sea solamente de extensiones, como por ejemplo el siguiente.

ead /usr/share/seclists/Discovery/Web-Content/web-extensions.txt
.asp
.aspx
.bat
.c
.cfm
.cgi
.css
.com
.dll
.exe

De este modo, la instrucción de Ffuf quedaría:

ffuf -u http://10.10.76.72/indexFUZZ -w /usr/share/seclists/Discovery/Web-Content/web-extensions.txt

Ese será el comando que usaremos para la segunda pregunta de este apartado.

Ahora que sabemos las extensiones que soporta, podemos usar una lista de palabras genéricas (sin la extensión) y aplicar las extensiones que sabemos que funcionan (derivadas de la pregunta 2) más algunas comunes como .txt.

Excluiremos las extensiones de 4 letras de esta lista de palabras, ya que darían demasiados falsos positivos.

Así, la expresión para la pregunta 3 sería:

ffuf -u http://10.10.76.72/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-words-lowercase.txt -e .php,.txt

Los nombres de directorios no son siempre dependientes del tipo de entorno que estemos enumerando y es un buen punto de partida antes de intentar hacer fuzzing para archivos. Si queremos hacerlo para directorios necesitamos proporcionar una lista de palabras.

El comando para la pregunta 4 sería:

ffuf -u http://10.10.76.72/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories-lowercase.txt

¿Qué archivo de texto hemos encontrado?

robots.txt

¿Qué dos extensiones de archivo hemos encontrado en la página index?

php,phps

¿Qué página tiene un tamaño de 4840?

Añado un | grep 4840 tras el comando de la pregunta 3 de más arriba para localizar el archivo fácilmente con ese piping.

ffuf -u http://10.10.76.72/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-words-lowercase.txt -e .php,.txt | grep 4840

about.php

¿Cuántos directorios hay?

4

Usando filtros