Sei sulla pagina 1di 14

Pentesti ng con

OWASP

Zed Attack Pro xy

Pentesti ng con OWASP Zed Attack Pro xy

1.

Introducción

ZAP es una poderosa herramienta para realizar ataques de penetración (disciplina conocida como Pentesting), que permite analizar sitios web para buscar sus vulnerabilidades, con muy diversos fines, como por ejemplo, aprendizaje o securización del sitio.

Inicialmente basado en el código de Paros Proxy (una de las herramientas de pentesting más usadas en su momento y actualmente abandonada), ZAP se basa en la lista OWASP de las vulnerabilidades web más comunes para su desarrollo, por lo que incluye una gran cantidad de herramientas capaces de detectar casi cualquier vulnerabilidad que pueda existir en un sitio web.

Además, ZAP es una herramienta gratuita, multiplataforma, muy orientada a la comunidad (cualquiera puede aportar su granito de arena al proyecto, desde solicitando nuevas herramientas hasta incluso participar en su desarrollo), y cuya intención es hacer accesible el pentesting a todo el mundo.

Toda la información sobre el proyecto ZAP está disponible en su página web:

https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project

A continuación vamos a realizar una pequeña demostración de las posibilidades de este programa.

2. Descripción de la prueba

Para realizar las pruebas con ZAP, usaremos la distribución Web Security Dojo de Maven Security. Aparte del propio ZAP, esta distribución ofrece una serie de aplicaciones objetivo, que nos servirán para hacer un pentesting muy sencillito que muestre las utilidades de ZAP. Dicha distribución se puede conseguir en la siguiente dirección:

http://www.mavensecurity.com/web_security_dojo/

Se distribuye como una máquina virtual preconfigurada, tanto como para VirtualBox como para VMWare, por lo que su instalación no tiene ninguna complejidad. La versión utilizada en estas pruebas es la 1.2.

OJO: Esta distribución tiene un montón de vulnerabilidades en sus aplicaciones objetivo, por lo que lo más recomendable es no conectarla a Internet, para evitar posibles ataques externos.

La versión de ZAP utilizada será la incluída en dicha distribución, que es la 1.3.0.

Como objetivo se usará Damn Vulnerable Web Application, en su versión 1.2. Esta incluye la mayoría de las vulnerabilidades más frecuentemente encontradas en sitios web reales, con lo que es un buen campo de pruebas para aquellos que aprender a descubrir el funcionamiento de este tipo de vulnerabilidades para poder evitarlas a la hora de crear nuestros propios sitios.

3. Realización de la pruebas

3.1: Preparando la prueba

Lo primero será abrir la máquina virtual que utilizaremos, la ya mencionada distribución Dojo. Una vez la iniciemos, nos encontraremos en el escritorio de la máquina virtual:

nos encontraremos en el escritorio de la máquina virtual: Lo siguiente que deberemos hacer será abrir

Lo siguiente que deberemos hacer será abrir el ZAP. Para ello, vamos al menú “Applications”, y en la sección “Tools” encontraremos su acceso directo:

abrir el ZAP. Para ello, vamos al menú “Applications”, y en la sección “Tools” encontraremos su
Una vez abierto ZAP, lo siguiente será abrir y configurar el navegador que vayamos a

Una vez abierto ZAP, lo siguiente será abrir y configurar el navegador que vayamos a utilizar. En el caso de la distribución Dojo, usaremos Firefox. Ahora lo que tenemos que hacer es que el navegador utilice ZAP como proxy (de ahí el nombre de Zed Attack Proxy). En esta distribución es muy sencillo. Al lado del botón que nos redirige a la página de inicio, se encuentra un menú desplegable para escoger la proxy a través de la cuál queremos que nuestro navegador navegue, por lo que sólo tenemos que seleccionar la opción “Zed Attack Proxy”, y el navegador se configurará automáticamente para utilizar ZAP como proxy.

la opción “Zed Attack Proxy”, y el navegador se configurará automáticamente para utilizar ZAP como proxy.
En caso de que estemos utilizando ZAP en una máquina distinta de Dojo, simplemente bastará

En caso de que estemos utilizando ZAP en una máquina distinta de Dojo, simplemente bastará con seguir los pasos indicados en al guía de usuario de ZAP, accesible desde la misma aplicación, pulsando F1, o en el menú “Help”->”OWASP ZAP User Guide”.

OJO: Al configurar ZAP como proxy, será necesario que el ZAP esté abierto para poder usar el navegador. En caso de que no esté abierto, el navegador no podrá acceder a ningún sitio web, por lo que si una vez terminadas las pruebas queremos volver a usar el navegador sin proxy, hay que acordarse de restablecer la configuración del navegador previa.

Una vez que tenemos abierto ZAP y configurado el navegador, lo siguiente será crear una nueva sesión en ZAP. Para ello, hacemos clic en el menú “File”->”New Session”, o mediante el atajo de teclado “Control+N”. El programa nos recordará que ya tenemos una sesión abierta que no hemos salvado, pero dado que no hemos hecho nada, y que durante la configuración se nos podrían haber colado datos de sitios que no nos interesan para la realización de estas pruebas, podemos descartar dicha sesión sin ningún problema.

sitios que no nos interesan para la realización de estas pruebas, podemos descartar dicha sesión sin

Una vez iniciada la nueva sesión, abrimos la Damn Vulnerable Web Application. Para ello, simplemente hacemos clic en el link que aparece en la página de inicio del navegador (http://localhost/). Una vez abierta, apareceremos en la pantalla de login de la aplicación.

apareceremos en la pantalla de login de la aplicación. Para acceder a la aplicación, introducimos como

Para acceder a la aplicación, introducimos como usuario “admin” y como contraseña, “password”, y entraremos en la página principal de la aplicación.

y entraremos en la página principal de la aplicación. DVWA tiene determinados unos niveles de seguridad,

DVWA tiene determinados unos niveles de seguridad, que vienen a representar distintos grados de robustez de un sitio web. Por defecto, el nivel activado cuando entramos en la aplicación es “High”. Para poder realizar la demostración, vamos a poner el nivel de seguridad en “Low”, para que no exista ningún tipo de comprobación de seguridad y podamos probar ataques a nuestras anchas. Para ello, en el menú lateral hacemos clic en “DVWA Security”, lo que nos llevará a página dónde podremos cambiar el nivel.

Para poner el nivel en “Low”, vamos a la selección desplegable, seleccionamos la opción “Low”,

Para poner el nivel en “Low”, vamos a la selección desplegable, seleccionamos la opción “Low”, y hacemos clic en “Submit”. Ahora el nivel de seguridad de la aplicación de seguridad está puesto al mínimo y todas las vulnerabilidades de la aplicación, expuestas.

Lo primero que podríamos hacer en un sitio real sería lanzar el Spider de ZAP para explorarlo entero. Los desarrolladores sin embargo, recomiendan primero realizar una exploración manual del sitio, y después, lanzar el Spider, que nos reportará cualquier sitio que nos hayamos podido dejar en el camino. En nuestras pruebas, en cambio, no es necesario, ya que conocemos la estructura completa de DVWA, y podemos acceder sin problema a cualquier parte del sitio.

DVWA tiene un gran número de vulnerabilidades, pero para estas pruebas sólo vamos a probar el funcionamiento de ZAP sobre una de las más comunes, Cross Site Scripting (XSS) en su versión reflejada.

A nivel muy básico, podemos definir XSS como un ataque que consiste en inyectar código JavaScript en páginas web, con lo que conseguimos atacar a todo aquel que acceda a dichas páginas modificadas. Sus dos versiones son XSS Reflected y XSS Stored, en función de si el código inyectado se encuentra almacenado en un sitio externo o en el propio sitio, respectivamente.

3.2: ZAP vs XSS Reflected

Para hacer pruebas sobre esta vulnerabilidad, hacemos clic en el menú lateral dónde pone “XSS Reflected” (thank you, captain Obvious). Así, accederemos a la sección dónde se encuentra esta vulnerabilidad, y una pantalla como esta:

Como se puede ver, en esta página no vemos nada más que un formulario en

Como se puede ver, en esta página no vemos nada más que un formulario en el que se nos invita a escribir nuestro nombre, y unos cuantos links de referencia sobre XSS. Mirando en ZAP, podemos ver que, por el momento, no se ha detectado ninguna vulnerabilidad. Vamos a escribir nuestro nombre, a ver que pasa:

ver que, por el momento, no se ha detectado ninguna vulnerabilidad. Vamos a escribir nuestro nombre,
Parece ser que nos hemos encontrado con una aplicación muy simpática, pues si le decimos

Parece ser que nos hemos encontrado con una aplicación muy simpática, pues si le decimos nuestro nombre, nos devuelve un saludo personalizado. Poniendo otro nombre, devuelve un saludo para ese otro nombre (creo que no es necesario otro par de capturas de pantalla para demostrarlo). Seguramente, a los que conozcan algo del funcionamiento de XSS ya se les habrá ocurrido por dónde atacar la aplicación para poder explotar la vulnerabilidad. Sin embargo, podemos usar ZAP, ya sea para automatizar las pruebas o bien porque no sabemos por dónde atacar la vulnerabilidad. Para ello, vamos a ZAP, y buscamos la página en el recuadro “Sites” situado a la izquierda:

página en el recuadro “Sites” situado a la izquierda: Como podemos ver, ZAP nos da información

Como podemos ver, ZAP nos da información sobre las peticiones que hemos enviado al sitio, así como las respuestas que hemos recibido a dichas peticiones. Para buscar las vulnerabilidades, hacemos clic derecho en el sitio que queremos buscarlas, y seleccionamos “Attack”->”Active Scan Node”

¡Parece que ZAP ha encontrado algo! ¡Una banderita roja aparece al lado del sitio! Para

¡Parece que ZAP ha encontrado algo! ¡Una banderita roja aparece al lado del sitio! Para ver de qué se trata, vamos a la sección situada en la parte inferior derecha y seleccionamos la pestaña “Alerts”, que es dónde ZAP va almacenando la información sobre las vulnerabilidades que va encontrando. Como podemos ver, también podemos añadir nuestras propias alertas o editar las que ya han aparecido.

nuestras propias alertas o editar las que ya han aparecido. Veamos la información de Cross Site

Veamos la información de Cross Site Scripting, ya que son las que nos interesan. Para ello, abrimos el desplegable de XSS y seleccionamos la única que ha aparecido.

Al lado del seleccionador de alertas podemos ver la información de aquella que hemos seleccionado,

Al lado del seleccionador de alertas podemos ver la información de aquella que hemos seleccionado, como su descripción, posibles soluciones y links de referencia. En este caso, parece ser que cuando el parámetro “name” de la petición incluye código JavaScript este se ejecuta. Este parámetro es el nombre que introducimos en el formulario, así que vamos a hacer una prueba por nosotros mismos, para probar si lo que nos dice ZAP es cierto.

en el formulario, así que vamos a hacer una prueba por nosotros mismos, para probar si
Pues parece ser que ZAP tenía razón, se puede inyectar código en esta página. En

Pues parece ser que ZAP tenía razón, se puede inyectar código en esta página. En DVWA no tiene demasiada importancia, porque para eso es la aplicación, aprender en qué consiste el ataque XSS para poder evitarlo. Sin embargo, en un sitio web real, una vulnerabilidad de este tipo es muy peligrosa, porque puede comprometer seriamente a todos los visitantes del mismo. Por eso, es muy importante asegurarnos de que nuestros sitios son seguros y no presentan estas vulnerabilidades, y como hemos visto, ZAP puede ayudarnos a detectarlas.

3.3: Terminando la prueba

Ya hemos visto que ZAP sirve para detectar las vulnerabilidades, ¿así que ahora que hacemos? Pues ZAP todavía tiene un par de cosas que nos pueden ayudar.

Lo primero que deberíamos hacer es guardar la sesión actual. Esto servirá para mantener información sobre el estado de las vulnerabilidades de nuestro sitio, y así, poder compararlas en un futuro, para comparar resultados entre sesiones.

Para guardar la sesión, hacemos clic en el menú “File”->”Save as”. Buscamos la carpeta dónde queramos guardar la sesión, le ponemos un nombre, y clic en “Save”.

as”. Buscamos la carpeta dónde queramos guardar la sesión, le ponemos un nombre, y clic en
También podemos crear automáticamente un informe en formato HTML sobre las vulnerabilidades que han aparecido

También podemos crear automáticamente un informe en formato HTML sobre las vulnerabilidades que han aparecido en esta sesión. Para ello, hacemos clic en “Report”- >”Generate HTML Report”. Buscamos la carpeta en la que queremos guardar el informa, introducimos el nombre, y hacemos clic en “Save”.

Buscamos la carpeta en la que queremos guardar el informa, introducimos el nombre, y hacemos clic
Si abrimos el informe, veremos algo así: Con este informe podremos compartir la información sobre

Si abrimos el informe, veremos algo así:

Si abrimos el informe, veremos algo así: Con este informe podremos compartir la información sobre las

Con este informe podremos compartir la información sobre las vulnerabilidades del sitio con todos aquellos que sea necesario, de una manera fácil y cómoda.

4. Conclusión

Como hemos podido ver, ZAP detecta perfectamente las vulnerabilidades de un sitio web, ayudándonos a identificarlas y eliminarlas o aprender más sobre ellas. Aparte de su funcionalidad básica de detección de vulnerabilidades, ofrece la posibilidad de generar informes, e interconexión con otras aplicaciones para poder realizar análisis más potentes. Esto, unido a que es un proyecto respaldado por una de las organizaciones más importantes a nivel de seguridad web, que se trate de una aplicación libre, gratuita, y con un uso muy sencillo, aparte de la existencia de una comunidad activa de desarrollo, convierten a ZAP en una herramienta muy potente, que todo aquel que desee adentrarse o dedicarse al mundo del pentesting, debería tener siempre muy a mano.