Pentesting con OWASP Zed Attack Prox y - tic.udc.esnino/blog/psi/2012/pentestingZAP2.pdf · Una vez...
Transcript of Pentesting con OWASP Zed Attack Prox y - tic.udc.esnino/blog/psi/2012/pentestingZAP2.pdf · Una vez...
Pentesting
OWASP Zed Attack Prox
Pentesting con
OWASP Zed Attack Prox
OWASP Zed Attack Proxy
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:
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:
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.
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.
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.
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 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:
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”
¡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.
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.
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”.
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”.
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.