Fuzzing con WFuzz

Fuzzing con WFuzz

A la hora de hacer un reconocimiento o una auditoria de seguridad a una aplicación web, se suelen usar algunas herramientas para hacer fuzzing, ya hablamos hace un tiempo de gobuster, hoy le toca a wfuzz, wfuzz es una herramienta destinada al fuzzing, es decir, para la fuerza bruta a directorios, para encontrar directorios y/o archivos ocultos en un servicio web, no es de mis preferidas, puesto que, prefiero usar gobuster, que de hecho, ya hay un articulo sobre su uso, pero bien, wfuzz en comparación a gobuster no se queda atrás, de hecho es muy buena, es por eso que, he querido hacer este articulo explicando su uso, para ello todos los escaneos que haremos se harán sobre el servicio web que corre en el puerto 80 dentro de mi máquina ColddBox: Easy, recuerda que, si haces algún procedimiento de este tipo sobre cualquier activo sin debida autorización es un delito, hazlo sobre entornos controlados.

Así que, sin más, comencemos (ignorar mi feo entorno de trabajo, recién instalé nuevamente Kali y debo arreglarlo):

Bien, lo primero es la sintaxis básica, esta es:

wfuzz -c -w (ruta_wordlist)  (URL_activo)/FUZZ

Explicación parámetros:

-c = Para que el output sea colorido y estéticamente más amigable.

-w = Para indicarle la wordlist, aquí se debe poner o bien, la ruta relativa o absoluta de la lista de palabras en cuestión.

/FUZZ = Esto se debe poner luego de la URL, es decir, aquí la palabra “FUZZ” será sustituida por cada una de las palabras contenidas dentro de la wordlist que estemos usando, no es como en gobuster por ejemplo, que sin más hay que proporcionarle solamente la URL, aquí no, aquí debemos indicarle la sección de la URL donde van a ir las palabras de la lista.

 

Pero, si hacemos esto, veremos una enorme cantidad de resultados con respuesta 404, es decir, no encontrados:

 Para evitar esto, podemos añadir al comando el parámetro –hc=(código_de_estado), hc viene de hide code, es decir, que nos sirve para esconder los resultados del fuzzing que tengan el código de estado que le proporcionemos, en este caso, ocultará todos los que tengan 404, quedando el comando de la siguiente manera:

wfuzz -c –hc=404 -w (ruta_wordlist)  (URL_activo)/FUZZ

Luego, podemos también jugar algo con los hilos para que se haga más rápido el procedimiento, para ello, debemos usar el parámetro -t (hilos), en caso de que queramos hacer unos 500 hilos en paralelo podemos añadirle al comando lo siguiente: “-t 500”, quedando el comando así:

wfuzz -c –hc=404 -t 500 -w (ruta_wordlist)  (URL_activo)/FUZZ 

De esta forma, veremos que el procedimiento se inicia y ya nos detecta los directorios, en este caso, esta máquina tiene un directorio llamado hidden:

Como ves, non se muestra ninguna petición que haya sido respondida con un 404. Si te fijas hay algunos códigos de estado 301, este sale porque no le indicamos que lo ocultara, pero sin mucha importancia puesto que, este código de estado es solamente una redirección, es decir, esto redirige a otro lugar, para hacer que durando el fuzzing, wfuzz siga esa redirección, podemos usar el parámetro “-L”, probemos nuevamente ahora con el comando:

wfuzz -c –hc=404 -L -t 500 -w (ruta_wordlist)  (URL_activo)/FUZZ

Y el resultado final sería este, ya no se muestran los códigos de estado 301 puesto que la herramienta ha seguido la redirección:

Ahora, vamos a ver para poder detectar ficheros, es decir, buscar ahora por extensiones, para ello, vamos a crearnos rápidamente un fichero con extensiones, al que llamaremos ext.txt y, le pondremos dentro algunas extensiones:

Ahora, en wfuzz, para debemos especificar que usaremos otro diccionario, para ello simplemente se añade otro parámetro -w seguida de la ruta del diccionario, en este caso la ruta relativa puesto que, el diccionario esta en mi directorio activo:

wfuzz -c –hc=404 -L -t 500 -w (ruta_wordlist) -w (ruta_otra_wordlist) (URL_activo)/FUZZ

Pero haciendo esto no serviría, debemos editar la parte de la URL, y añadirle lo siguiente:

wfuzz -c –hc=404 -L -t 500 -w (ruta_wordlist) -w (ruta_otra_wordlist) (URL_activo)/FUZZ.FUZ2Z

Con esto le indicamos a la herramienta que pruebe las combinaciones de la primera lista de (palabras de la primera wordlist).(extensiones de la segunda wordlist), si usáramos más payload debemos ir incrementando el número después del punto.

Igualmente, también se puede especificar un user-agent con el parámetro -H seguido del user-agent, por ejemplo:

wfuzz -c –hc=404 -L -H “User-Agent: Firefox” -t 500 -w (ruta_wordlist) -w (ruta_otra_wordlist) (URL_activo)/FUZZ.FUZ2Z

Es cuestión de ir jugando con los parámetros y que se adecuen a el tipo de información que se desea obtener.

 

Posible forma de prevenir que a tu aplicación web le hagan fuzzing:

Esto es algo completamente relativo, hay formas de securizar la aplicación para evitar en gran medida que un ciberdelincuente haga cosas que no debe, igual que como comenté en el artículo de gobuster, algunas formas de poner más barreras de seguridad, pueden aplicar perfectamente para este caso así que, citaré lo que comenté en dicho momento:

En este sitio web se habla del tema solo que refieriéndose a la herramienta de dirbuster y bueno lo que dice el usuario pineapplema puede aplicar para el caso de gobuster, dice esto:

“Dirbuster funciona analizando los códigos de respuesta HTTP y es por eso que a veces puede predecir la existencia de archivos incluso si no tiene permisos para acceder a ellos. Eso funciona porque a menudo obtendrá una respuesta 403 (prohibida), o algún código de respuesta similar para archivos a los que no tiene permisos de acceso, pero obtendrá un código 404 para archivos que no existen. Eso significa que su aplicación simplemente debe devolver un código 404 para los archivos que no desea que Dirbuster encuentre. La forma exacta en que lo hará depende en gran medida del diseño de su aplicación.”

Bien, sabiendo esto, una posible solución para evitar que alguien haga fuzzing en tu web y descubra todo de todo si es que en la wordlist usada están todos tus directorios y/o ficheros, es lo que propone el usuario antony que dice esto:

“Limite el número de solicitudes desde una IP, también puede limitar el número de solicitudes dentro de un intervalo de tiempo.”

Y esto puede ayudar mucho, ya que si por ejemplo, limitas a 10 el número de solicitudes cada minuto en tu web, si lanzan WFuzz en este caso, contra tu sitio, este hará muchas solicitudes y obviamente excederá las 10 por ende bloqueará la ip, si usas wordpress hay muchos plugins para ello, así que esa es la solución que te puedo recomendar y claro, restringir los permisos de todos los directorios y/o ficheros que los ajenos a la administración de tu web o necesiten ver.

 

ATENCIÓN. Todas las prácticas que se vieron anteriormente han sido realizadas en entornos controlados y con debida autorización para ello, hacer uso de alguna herramienta, técnica o procedimiento que se vió anteriormente sobre un sistema, aplicación, servicio u otro activo sin una autorización para ello puede llevar a cometer delitos graves, no nos hacemos responsables por el uso que le des al conocimiento que viste anteriormente. Por favor, sé ético.

Anuncio

Sobre el Autor

Martin Frias

Founder of Coldd Security

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información adicional sobre protección de datos:
Responsable: Martin Frias.
Finalidad: Moderar los comentarios de este sitio web.
Cesión: NO se cederán a nadie, salvo obligación legal.
Derechos: Acceso, rectificación, cancelación y borrado de tus datos.
Legitimación: Tu consentido expreso.

REDES SOCIALES

Newsletter

Estadísticas

  • 106.290
  • 51

TheHackerSnow

0

Share This