Pentesting con OWASP Zed Attack Prox y - tic.udc.esnino/blog/psi/2012/pentestingZAP2.pdf · Una vez...

14
Pentestin OWASP Z ng con Zed Attack Pro oxy

Transcript of Pentesting con OWASP Zed Attack Prox y - tic.udc.esnino/blog/psi/2012/pentestingZAP2.pdf · Una vez...

Page 1: Pentesting con OWASP Zed Attack Prox y - tic.udc.esnino/blog/psi/2012/pentestingZAP2.pdf · Una vez abierto ZAP, lo siguiente será abrir y configurar el navegador que vayamos a utilizar.

Pentesting

OWASP Zed Attack Prox

Pentesting con

OWASP Zed Attack Prox

OWASP Zed Attack Proxy

Page 2: Pentesting con OWASP Zed Attack Prox y - tic.udc.esnino/blog/psi/2012/pentestingZAP2.pdf · Una vez abierto ZAP, lo siguiente será abrir y configurar el navegador que vayamos a utilizar.

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.

Page 3: Pentesting con OWASP Zed Attack Prox y - tic.udc.esnino/blog/psi/2012/pentestingZAP2.pdf · Una vez abierto ZAP, lo siguiente será abrir y configurar el navegador que vayamos a utilizar.

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:

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:

Page 4: Pentesting con OWASP Zed Attack Prox y - tic.udc.esnino/blog/psi/2012/pentestingZAP2.pdf · Una vez abierto ZAP, lo siguiente será abrir y configurar el navegador que vayamos a utilizar.

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.

Page 5: Pentesting con OWASP Zed Attack Prox y - tic.udc.esnino/blog/psi/2012/pentestingZAP2.pdf · Una vez abierto ZAP, lo siguiente será abrir y configurar el navegador que vayamos a utilizar.

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.

Page 6: Pentesting con OWASP Zed Attack Prox y - tic.udc.esnino/blog/psi/2012/pentestingZAP2.pdf · Una vez abierto ZAP, lo siguiente será abrir y configurar el navegador que vayamos a utilizar.

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.

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.

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.

Page 7: Pentesting con OWASP Zed Attack Prox y - tic.udc.esnino/blog/psi/2012/pentestingZAP2.pdf · Una vez abierto ZAP, lo siguiente será abrir y configurar el navegador que vayamos a utilizar.

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:

Page 8: Pentesting con OWASP Zed Attack Prox y - tic.udc.esnino/blog/psi/2012/pentestingZAP2.pdf · Una vez abierto ZAP, lo siguiente será abrir y configurar el navegador que vayamos a utilizar.

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:

Page 9: Pentesting con OWASP Zed Attack Prox y - tic.udc.esnino/blog/psi/2012/pentestingZAP2.pdf · Una vez abierto ZAP, lo siguiente será abrir y configurar el navegador que vayamos a utilizar.

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:

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”

Page 10: Pentesting con OWASP Zed Attack Prox y - tic.udc.esnino/blog/psi/2012/pentestingZAP2.pdf · Una vez abierto ZAP, lo siguiente será abrir y configurar el navegador que vayamos a utilizar.

¡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.

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.

Page 11: Pentesting con OWASP Zed Attack Prox y - tic.udc.esnino/blog/psi/2012/pentestingZAP2.pdf · Una vez abierto ZAP, lo siguiente será abrir y configurar el navegador que vayamos a utilizar.

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.

Page 12: Pentesting con OWASP Zed Attack Prox y - tic.udc.esnino/blog/psi/2012/pentestingZAP2.pdf · Una vez abierto ZAP, lo siguiente será abrir y configurar el navegador que vayamos a utilizar.

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”.

Page 13: Pentesting con OWASP Zed Attack Prox y - tic.udc.esnino/blog/psi/2012/pentestingZAP2.pdf · Una vez abierto ZAP, lo siguiente será abrir y configurar el navegador que vayamos a utilizar.

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”.

Page 14: Pentesting con OWASP Zed Attack Prox y - tic.udc.esnino/blog/psi/2012/pentestingZAP2.pdf · Una vez abierto ZAP, lo siguiente será abrir y configurar el navegador que vayamos a utilizar.

Si abrimos el informe, veremos algo así:

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.