sábado, 3 de mayo de 2014

Fuzzing - Directory Brute Forcing



Cada día nos encontramos con noticias sobre nuevas vulnerabilidades encontradas o algún ataque que aprovecha algún 0day que compromete miles de sistemas.

Hoy vamos a ver una técnica que se utiliza para infinitas tareas, como por ejemplo descubrir directorios en un sitio web, encontrar vulnerabilidades en algún software, etc.

Dicha técnica es la denominada Fuzzing (Test Fuzz).


¿Qué es el Fuzzing?

Se llama fuzzing a las diferentes técnicas de testeo de software capaces de generar y enviar datos secuenciales o aleatorios a una o varias áreas o puntos de una aplicación, con el objetivo de detectar defectos o vulnerabilidades existentes en el software auditado.
Es utilizado como complemento a las prácticas habituales de chequeo de software, ya que proporcionan cobertura a fallos de datos y regiones de código no testados.


Para la prueba de concepto de hoy, vamos a utilizar esta técnica para descubrir directorios "ocultos" mediante fuerza bruta (Directory Brute Forcing), es decir, que no aparezcan a simple vista en la web, como pueden ser archivos de configuración, archivos de instalación, paneles de administración, etc.


Lo primero que haremos será descargarnos un Fuzzer:

Powefuzzer: http://www.powerfuzzer.com/

Wfuzz: http://www.edge-security.com/wfuzz.php

DirBuster: http://sourceforge.net/projects/dirbuster/


Yo utilizaré DirBuster por su interfaz gráfica y su comodidad.


¿Cómo funciona?

Para poder encontrar los directorios, ficheros o archivos que no podemos ver a simple vista en la web, el fuzzer realizará fuerza bruta mediante los métodos GET / HEAD.

Imaginemos que nuestra web es la siguiente: hxxp://www.webdepruebas.com/, y queremos encontrar su panel de administración.

Pues bien, si el panel está en la dirección hxxp://www.webdepruebas.com/panel/ y en el diccionario que le pasemos (si el ataque los hacemos por diccionario) al fuzzer tenemos la palabra "panel", al realizar el ataque de fuerza bruta obtendrá la respuesta del servidor con el código de estado que corresponda. (Ver significado de los códigos)

El código 200, significa que el directorio es correcto y es accesible, por lo que podremos acceder a él sin problemas.
Si recibimos un status 401, significa que el directorio es correcto, pero no es accesible por la configuración de seguridad.
Por el contrario, si recibimos un 404, significará que el directorio no ha sido encontrado.

Recomiendo leerse primero los significados de cada status antes de lanzarse a probar estas herramientas.


PoC

Bien, vamos a la prueba de concepto.

Según arrancamos DirBuster nos encontramos con la siguiente interfaz, en las que os voy a explicar brevemente para que sirve cada campo:

  1. Aquí escribiremos la dirección url del target, en el que podremos indicar el número de puerto al que atacar.
  2. Especificamos si queremos utilizar el ataque solamente mediante el metodo GET, o que pruebe mediante HEAD / GET.
  3. Elegimos la velocidad con la que realizará las peticiones. Si elegimos "Go Faster" subirá a 200.
  4. Aquí podremos elegir si realizar el ataque por fuerza bruta, o mediante diccionario.
  5. Seleccionamos donde queremos realizar el fuzzing, a partir de la raíz ( / ) o si queremos buscar un archivo (/test.html?url={dir}.asp).
  6. Una vez configurado todo, pulsaremos "Start" para empezar con el ataque.

En la siguiente ventana se nos mostrarán las peticiones realizadas con su correspondiente status.


También podemos visualizarlo en modo árbol de directorios:


Una vez finalizado, podremos generar el reporte:


Como hemos podido ver, hay un fichero llamado "login.asp" con status 200, veámos que contiene...


Al parecer no ha sido un falso positivo y sí que se puede acceder a él, en este caso se trata de un panel de login como su nombre indica, pero podríamos encontrar todo tipo de archivos o directorios según cuán en serio se hayan tomado la seguridad del sitio web.

Os dejo con un video para que veáis el funcionamiento de otro gran fuzzer: Wfuzz.




Saludos.



Referencias:
http://blog.s21sec.com/2007/07/nuevo-artculo-fuzzing-y-seguridad.html
http://eternal-todo.com/files/articles/fuzzing.pdf
https://www.owasp.org/index.php/Fuzzing
http://www.aqualab.cs.northwestern.edu/conferences/HotWeb08/papers/Hammersland-FTW.pdf
http://hack2sec.wordpress.com/2009/04/08/fuzzing/


**No me hago responsable del mal uso que se de a la información presentada. Esta información es de carácter didáctico.**

No hay comentarios:

Publicar un comentario