OWASP Zap es una framework de pruebas como Burp Suite. Es una herramienta robusta de numeración y se usa para probar aplicaciones web.

¿Por qué no usar Burp Suite?

ZAP tiene algunas prestaciones de las que carece Burp.

¿Cuáles son sus beneficios?

Es de código fuente abierto y gratis, no hay características premium ni similares. He aquí algunos beneficios y prestaciones que en Burp se pagan o no tiene (como la última):

  • Escaneo automatizado de aplicación web. Escanea de manera activa y pasiva, construye un mapa del sitio y descubre vulnerabilidades.
  • Araña web. Puedes crear un mapa web con esto.
  • Intrusión sin limitaciones. Puedes hacer ataques de fuerza bruta tan rápido como la máquina permita.
  • No hay necesidad de reenviar peticiones individuales a través de Burp. Cuando se hacen ataques manuales, tener que cambiar de ventana para enviar una petición a través del navegador, y luego reenviar en Birp, puede ser tedioso. OWASP gestiona ambas y puedes navegar por el sitio y OWASP intercepta automáticamente.

Si estamos familiarizados con Burp, he aquí cómo equivalen las palabras clave:

OWASP ZAP y Burp

Aquí vamos a ver cómo hacer en ZAP:

  • Escaneos automatizados.
  • Fuerza Bruta a directorios.
  • Escaneos autenticados.
  • Fuerza bruta de páginas de autenticación.
  • Instalar extensiones de ZAP.

¿Qué significa ZAP?

Zed Attack Proxy

Deberemos tener en cuenta, no obstante, que la documentación de ZAP palidece ante la de Burp y que esta tiene extensiones que ZAP no posee. Por ejemplo, ataques de autenticación temporizados.

Instalación

Descargamos la versión adecuada desde la página e instalamos. No hay más misterio. Es un archivo .sh en mi caso, que uso Linux.

Cómo realizar un escaneo automatizado

Vamos a realizar un escaneo automatizado. No tiene pérdida, es el gran botón azul que pone «Automated Scan».

Escaneo automático ZAP

En la siguiente pantalla vemos que podemos elegir entre araña tradicional y araña Ajax.

  • La araña tradicional es un escaneo pasivo que enumera enlaces y directorios de la web. Construye un índice sin fuerza bruta. Esto es mucho más silencioso y puede extraer detalles interesantes, pero no es tan detallado como la fuerza bruta.
  • La araña Ajax es un complemento que integra un crawler llamado Crawljax. Puedes usarlo en combinación con el tradicional para obtener mejores resultados. Usa nuestro navegador y proxy.

La manera más sencilla de usar la araña Ajax es con HTMLUnit y para instalarlo usamos el comando.

sudo apt install libjenkins-htmlunit-core-js-java

Y seleccionamos HtmlUnit del desplegable de Ajax Spider.

Escaneo automatizado de ejemplo:

Escaneo automatizado ZAP

Con una configuración mínima somos capaces de escanear automáticamente y que nos dé un mapa del sitio y un puñado de vulnerabilidades útiles.

Configuramos Ajax Spider como hemos visto (instalando HtmlUnit). Por algún motivo, no está en los repositorios del Ubuntu 21.04 que uso y lo he descargado de aquí.

Escaneo manual

Vamos a hacer un escaneo manual contra la máquina de la habitación. Como en el caso de Burp, debemos configurar nuestro proxy entre ZAP y el navegador. Usaremos Firefox.

Abrimos opciones en ZAP.

Configurando Proxy

Cambiamos la configuración del proxy local tal y como se muestra en la imagen:

Proxy local en ZAP

Añadimos certificados ZAP. Sin ellos no puede gestionar peticiones web simultáneas para interceptar y reenviar.

En el mismo menú de opciones, navegamos a «Dynamic SSL Certificates y guardamos el certificado en un lugar sencillo de recordar.

Certificado en ZAP

Ahora, abrimos Firefox, navegamos a Preferencias y buscamos certificados, haciendo clic en «Ver certificados».

Certificado de ZAP en Firefox

Pulsamos en «Importar» y navegamos hasta el certificado descargado para abrirlo.

Importamos certificado

Seleccionamos las dos opciones que aparecen al importar y pulsamos Ok.

Importamos certificado

Ahora, para activar el proxy en Firefox, nos vamos a Ajustes y buscamos proxy.

Usando el proxy en Firefox

Ajustamos manualmente la configuración del Proxy para que coincida con la de ZAP y pulsamos en Ok.

Ya lo tenemos.

Usando el proxy en Firefox

Respondemos a las preguntas.

¿Qué IP usamos para el proxy?

127.0.0.1

Escaneando una aplicación web autenticada

Sin nuestra aplicación Zap autenticada, no puede escanear páginas que sean accesibles solo cuando estés identificado.

Vamos a configurar OWASP Zap para escanear estas páginas, usando tu sesión autenticada.

Nos vamos a la aplicación de la habitación, y nos identificamos usando las credenciales admin y password.

Veremos esto al hacerlo.

App web autenticada

Para este ejercicio, nos vamos a la pestaña de DVWA Security y ponemos nivel bajo.

Cambiar el nivel de seguridad en DVWA

Ahora vamos a pasar nuestro token de autenticación a ZAP de manera que podamos usar la herramienta de escaneo de páginas autenticadas.

Para eso, inspeccionamos elemento y tomamos nota de nuestra cookie PHPSESSION.

Localizando PHPSESSION

En ZAP, abrimos la pestaña «HTTP Sessiones» y marcamos la sesión autenticada como activa.

Activando sesión autenticada

Ahora reescaneamos la aplicación. Veremos que de esta manera pilla mucho más. Esto es porque somos capaces de ver las secciones de DVWA que estaban previamente tras la página de autenticación.

Fuerza bruta contra directorios

Si los escaneos pasivos no son suficiente, puedes usar un ataque mediante lista de palabras y ejercer fuerza bruta con ZAP, de manera similar a Gobuster. Esto consigue detectar páginas no indexadas.

Primero, nos vamos a opciones de ZAP (parte inferior del panel de navegación, con el signo + en verde). Desde ahí, vamos a navegación predefinida y añadimos la lista de palabras. Puedes añadir más encabezados también y apagar la fuerza bruta recursiva.

Ataque fuerza bruta

Ahora, hacemos clic derecho en site > attack > forced browse site o en español: clic derecho en sitio objetivo > atacar > sitio de navegación predeterminada.

Ataque de fuerza bruta

Seleccionamos la lista importada y pulsamos el botón de play. Debemos descargar e importar la lista que nos proporcionan en la página.

Ataque de fuerza bruta

Ahora, atacará el sitio entero por fuerza bruta.

Autenticación por fuerza bruta

Vamos a atacar por fuerza bruta para obtener credenciales. Aunque ya las sabemos, pero bueno.

Si queremos hacer esto con Burp, necesitamos interceptar la petición y pasarla a Hydra. Esto es mucho más fácil con ZAP.

Navegamos a la página de «Brute Force» de DVWA e intentamos identificarnos con «admin» y «test123».

Autenticación por fuerza bruta

A continuación, buscamos la petición GET y abrimos el menú Fuzz.

Autenticación por fuerza bruta

Seleccionamos la contraseña que hemos intentado y añadimos una lista de palabras. Esto selecciona la parte de la petición que deseas reemplazar con otros datos.

Autenticación por fuerza bruta

Para velocidad, usamos fasttrack.txt en /usr/share/wordlists si usamos Kali.

Autenticación por fuerza bruta

Después de ejecutar el fuzzer, ordenamos los resultados para mostrar primero los «Reflected». A veces se obtienen falsos positivos, pero podemos ignorar lo que es menor de 8 caracteres de longitud.

¿Cuál es la contraseña?

password

Extensiones de ZAP

Si queremos extender las capacidades de ZAP, tenemos extensiones.

https://github.com/zaproxy/zap-extensions

https://github.com/bugcrowd/HUNT

Vamos a instalar bugcrowd HUNT, que escanea de manera pasiva vulnerabilidades en aplicaciones web.

Primero, clonamos el repositorio en nuestra máquina:

git clone https://github.com/bugcrowd/HUNT

Ahora, en ZAP, hacemos clic en el icono de «Administrar complementos».

Extensiones de ZAP

Del «Mercado» (marketplace) instalamos «Python Scripting» y «Community Scripts».

Extensiones de ZAP

En las opciones de ZAP, dentro de «Escaner Pasivo» (ojo, no escaneo pasivo), nos aseguramos de que: «Solo se pueden escanear los mensajes que se encuentren al alcance» está habilitado.

Pulsamos Aceptar.

Extensiones de ZAP

Ahora, en ZAP, abrimos la pestaña Scripts (Archivos de órdenes en español).

Extensiones de ZAP

Y bajo «Reglas pasivas» buscamos y habilitamos el script HUNT.py.

Ahora, cuando escaneemos sitios, HUNT analizará vulnerabilidades SQLi, LFI, RFI, SSRF.