lunes, 8 de febrero de 2010

Auditoría Web: W3af "en el Dojo"

Antes de nada quiero agradecer a todo el equipo de Pentester por permitirme colaborar con ellos. Espero poder contribuir con contenidos interesantes. ¡Muchas gracias!


Auditoría Web: Automatización mediante W3af

En algunas ocasiones, cuando necesitamos auditar una aplicación web de dimensiones considerables resulta interesante automatizar el proceso. Por esta razón, hemos decidido preparar un ejemplo para mostrar una de las formas posibles de hacerlo.

Para ello empleamos el Framework W3af creado por Andrés Riancho y que está disponible para la libre descarga en la página del proyecto.


Obtención de Dojo y Webscarab:

Para el ejemplo que vamos a mostrar hemos empleado la máquina virtual Dojo, disponible en la web de Dojo:


Hemos descargado los ficheros "dojo-v0.2.vmdk" y "Web Security Dojo v0.2.ovf". El archivo .vmdk corresponde al disco duro virtual (que incluye una distribución Ubuntu con varias herramientas "Targets" y varias "Weapons") y el fichero .ovf, que es necesario para crear la máquina virtual en VirtualBox. El proceso para importar la máquina en Virtual Box es muy sencillo, basta con escoger la opción "Importar servicio virtualizado" del VirtualBox y seleccionar el archivo .ovf que hemos descargado.

Las herramientas más interesantes que nos proporciona Dojo son los targets y las weapons:



Por último, hemos descargado el Webscarab (está incluído en la versión 0.4, pero no en la 0.2 que es la que yo utilicé) en la página del proyecto Webscarab, porque vamos a usarlo como proxy.

El motivo de usar Webscarab es, entre otros, porque W3af puede emplear la información capturada por éste. En concreto dispone del plugin 'importResults' de la categoría 'Discovery' que permite importar los resultados desde un fichero en formato CSV, desde el log del Burp y desde el directorio 'conversation' de Webscarab. En nuestro caso queremos emplear la información capturada por Webscarab mediante el crawling (y la navegación manual ;)) que hemos realizado sobre una Web.

A continuación arrancamos el Webscarab con el comando:

java -jar webscarab.jar &

Si es la primera vez que lo empleamos nos aparecerá el modo "Lite", que ofrece poca funcionalidad. Para ello activaremos el modo "Full-featured interface", reiniciaremos la aplicación y tendremos todas las opciones disponibles.




Preparación del Entorno:

Una vez disponemos de las herramientas necesarias, procedemos a preparar el entorno. Para ello solo necesitamos configurar el navegador, indicando que todas las peticiones vayan a través del proxy Web que deseemos utilizar. Para cambiar fácilmente de proxy emplearemos el complemento (add-on) de Firefox MM3-ProxySwitch, que permite lo que su nombre indica, cambiar de proxy :)

En él podemos definir todos los proxy Web necesarios y cambiar de uno a otro con un click de ratón. En mi caso suelo emplear con mayor frecuencia Paros Proxy, Webscarab y Burp Suite.

Definiremos una nueva configuración para el proxy Webscarab, para ello escogeremos la opción Edit del "ProxySwitch". Veámoslo en las siguientes imágenes:




Realización del crawling y la navegación por la página:

Una vez que tenemos el entorno funcionando levantamos la aplicación "Hacme Casino" desde el menú "Applications->Targets->Hacme Casino Start".

Procedemos a registrarnos en el Casino, navegamos por sus páginas mientras vamos visualizando, en el Webscarab, los recursos (directorios y ficheros) que vamos descubriendo en la aplicación Web.



Conforme vamos encontrando nuevos directorios empleamos la función "Spider tree" para que Webscarab siga los links e intente encontrar más ficheros en el servidor Web. Así:


Por último, guardamos la sesión del Webscarab, ya que luego alimentaremos al w3af con esta información.


Automatizando con W3af

¿Por qué no uso los plugins de discovery y bruteforce del w3af?

En circunstancias normales deberíamos emplear los distintos plugins que w3af nos ofrece, para efectuar un descubrimiento completo, escogiendo los que resultasen más adecuados para la aplicación Web que estamos auditando. Elegimos unos u otros en función de la tecnología empleada, si está ubicada en red local o a través de Internet, etc. En el caso en que nos ocupa trato de reproducir una situación en la que ya había realizado el crawling completo de la aplicación (explicado más arriba) y estaba bastante seguro de que no había obviado nada, ya que el servidor Web tenía una vulnerabilidad de Directory Listing , que permitía ver el contenido de los directorios.

A continuación vamos a mostrar los comandos empleados para lanzar el W3af. De esta forma:

./w3af_console

Procedemos a cambiar el timeout ya que la web que pretendemos auditar está en nuestra red local (en localhost):

w3af>>> http-settings
w3af/config:http-settings>>> set timeout 5
w3af/config:http-settings>>> back
w3af>>>


Escogemos los plugins para detectar XSS y SQL Injection:

w3af>>> plugins
w3af/plugins>>> audit xss,sqli


Definimos la salida que obtendremos indicando que queremos visualizarlo por consola y guardarlo en un fichero de texto plano:

w3af/plugins>>> output console,textFile
w3af/plugins>>> output config textFile
w3af/plugins/output/config:textFile>>> set fileName prueba.txt
w3af/plugins/output/config:textFile>>> back


Para importar los links guardados por el Webscarab:

w3af/plugins>>> discovery importResults
w3af/plugins>>> discovery desc importResults
This plugin serves as an entry point for the results of other tools that search for URLs.
The plugin reads from different input files and directories and creates the fuzzable requests
that are needed by the audit plugins.


Three configurable parameter exists:
- input_csv
- input_burp
- input_webscarab
w3af/plugins>>> discovery config importResults
w3af/plugins/discovery/config:importResults>>> set set input_webscarab /home/dojo/webscarab/conversations
w3af/plugins/discovery/config:importResults>>> back
w3af/plugins>>> back


Por último, definimos el objeto a analizar (en este caso la aplicación Foundstone Hacme Casino) en nuestro puerto 3000:

w3af>>> target
w3af/config:target>>> set target http://localhost:3000
w3af/config:target>>> back
w3af>>> start


El w3af se pone a trabajar y los resultados nos muestran varios parámetros inyectables y un listado de posibles vulnerabilidades, que luego verificaremos a mano para eliminar falsos positivos:


¡Hasta luego!

10 comentarios :

Anónimo dijo...

Interesante articulo, gracias.

Quiza podrias continuar en el punto en que acaba este, es decir, como explotar las vulnerabilidades detectadas por w3af.

Saludos,

Marcos

Anónimo dijo...

¿Como se instala el dojo en vmware?, he intentado virtualizarlo y da error :(, ¿Podrias hacer un tutorial para instalarlo en vmware?

Gracias por el aporte!

Saludos!!

Jose Selvi dijo...

@Anónimo1: Llevamos idea de explicar algunas vulnerabilidades web y herramientas probandolas sobre la misma máquina Dojo.

@Anónimo2: Lamentablemente, como tú dices, no arranca en VMWare, hay que hacerlo con VirtualBox. Yo mismo estuve intentando instalarlo en VMWare pero me quedé sin ideas. En la web de Dojo dicen que van a sacar próximamente la versión LiveCD, así que yo estoy esperando esa con impaciencia :)

Gracias a los dos por vuestros comentarios.
Un saludo!

Alberaan dijo...

Rafael me ha encantado el post. Lo probaré en cuanto llegue a casa

Rafael Alfaro March dijo...

Tal y como apuntaba Jose, la máquina solo funciona de momento en VirtualBox, hay que tener un poquito de paciencia :)

Me alegro de que os haya parecido interesante, trataremos de publicar más posts sobre esto.

Muchas gracias por vuestros comentarios.
¡Hasta luego!

Anónimo dijo...

Secundo la idea de Marcos.

Una serie de articulos sobre explotacion de sql injection 101 seria interesante. El uso de sqlmap o sqlninja para automatizar la deteccion de nombres de tablas/campos y numero de columnas asi como auto-explotacion, como confirmar webs vulnerables e interpretacion de los resultados de W3af podria ser de interes general.

Buen trabajo chicos, y buen nivel.

Respect

Anónimo dijo...

Olvide firmar.

keyser Soze.

José Miguel Holguín dijo...

Todas las peticiones son buenas y las tendremos en cuenta para futuros posts.

Muy buena entrada Rafa ;).

José Miguel Holguín dijo...

Dojo 1.0, y con versión para vmware:

http://www.mavensecurity.com/dojo.php

Jorge dijo...

Muy buen articulo ....Gracias por los datos y felicidades por el blog.