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 W3afEn 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_consoleProcedemos 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,sqliDefinimos 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>>> backPara 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>>> backPor ú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>>> startEl 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!