5.
Generar la CA de ZAP e importarla en el navegador web que se va a utilizar.
Detalles de configuración iniciales.
6. Si utilizas Firefox y las pruebas se realizan en local hay que habilitar la opción
“network.proxy.allow_hijacking_localhost” para que el proxy pueda capturar las peticiones
hacia localhost.
Detalles de configuración iniciales.
7.
Ajustes de la JVM antes de lanzar ZAP.
¿De qué manera voy a utilizar ZAP? ¿Como proxy local o como servidor de pruebas para
lanzar escaneos por parte de un equipo de pentesters?
Ajustes de la memoria con las opciones
-Xms: Memoria inicial para la heap.
-Xmx: Memoria maxima para la heap.
Selección del GC adecuado dependiendo de la versión concreta de JVM:
Serial: -XX:+UseSerialGC
Parallel: -XX:+UseParallelGC
CMS (Deprecado desde Java 9): -XX:+UseConcMarkSweepGC
G1: -XX:+UseG1GC
ZGC (Disponible desde Java 11): -XX:UseZGC
Detalles de configuración iniciales.
8.
Crear un nuevo contexto para el o los dominios que se pretende auditar.
Si la aplicación web incluye cabeceras especiales, éstas deben incluirse a nivel de contexto
para que sean replicadas en todas las peticiones HTTP que realice ZAP.
Es recomendable recomendable realizar algunos ajustes en ZAP para conexiones SSL contra
algunos sitios, especialmente aquellos que utilizan SSLv2.
Tools → Options… → Connection → SSLv2Hello
Tools → Options… → Client Certificate → Enable unsafe SSL/TLS renegotiation
Ver para más información: https://github.com/zaproxy/zaproxy/wiki/FAQsslHandshake
Resulta conveniente excluir del proxy cualquier otra navegación hacia sitios externos. solo
interesa la navegación contra el sitio web a auditar.
Contexts → Default Context → Exclude from Proxy → Add...
^(?:(?!http://SITIO_AUDITADO:PUERTO).*).$
^(?:(?!https://SITIO_AUDITADO:PUERTO).*).$
Es recomendable guardar todos estos detalles de configuración en una sesión de ZAP para
no tener que volver a aplicarlos cada vez que se inicia la herramienta.
Detalles de configuración iniciales.
9.
Por defecto, cualquier actividad realizada por ZAP (Spidering o Scan) ejecuta lo que se
conoce como un “escaneo pasivo” el cual se basa en un conjunto de reglas que vienen
incluidas directamente en el framework.
Dicho escaneo pasivo simplemente se encarga de analizar las respuestas emitidas por el
servidor, las cuales pueden ser provocadas por las peticiones que se realizan desde el modo
“spider” de ZAP.
En éste modo se pueden producir alertas, las cuales se pueden recuperar fácilmente en el
módulo de resultados de ZAP o programáticamente utilizando la API.
Las alertas contienen atributos que son comunes en los escaneos activos o en los procesos
de spidering, incluyendo entre otras cosas: severidad, cweid, URL, descripción, etc.
ZAP Passive Scanning
10.
En éste modo, ZAP habilita las reglas de ataque y a diferencia del escaneo pasivo, se
encarga de manipular las peticiones enviadas al servidor y analizar las respuestas.
Se basa en un conjunto de políticas de escaneo que vienen incluidas directamente en la
herramienta y que se encargan de ejecutar múltiples pruebas contra los objetivos
especificados.
Tanto en el escaneo pasivo como en el activo, se encarga de generar un conjunto de
alarmas indicando las posibles vulnerabilidades detectadas en la aplicación web.
ZAP Active Scanning
11.
ZAP cuenta con un sistema de extensiones para personalizar el comportamiento de la
herramienta y extenderla. Algunas de las extensiones más interesantes son:
Python and Ruby Scripting: Permite la ejecución de scripts en Python y Ruby dentro de
ZAP.
Tree Tools: Funcionalidades añadidas a la vista en árbol de contextos.
Access Control Testing: Herramientas para probar controles de acceso en aplicaciones
web.
All In One Notes: Extensión para mantener las notas en un panel separado.
Community Scripts: Scripts diseñados por la comunidad con utilidades interesantes.
CustomReport: Personalización de reportes HTML
ExportReport: Permite personalizar el contenido de los reportes y exportarlos en el
formato elegido.
WAFP: Permite realizar fingetprint de aplicaciones web.
Requester: Panel que permite realizar peticiones HTTP manualmente.
ZAP AddOns
13.
La herramienta permite ejecutar ataques de Fuzzing contra un recurso concreto utilizando
diferentes tipos de payloads, desde rangos de números o letras hasta ficheros con entradas.
ZAP incluye los ficheros incluidos en los proyectos “jbrofuzz” y “dirbuster” de esta forma es
posible seleccionar múltiples tipos ficheros para pruebas.
ZAP Fuzzing
14.
Zest es un lenguaje de scripting desarrollado por el equipo de seguridad de Mozilla que se
enfoca principalmente al mundo de las aplicaciones web y el registro de las peticiones que
se realizan contra ellas.
Zest se encuentra integrado en ZAP en forma de complemento, el cual viene habilitado por
defecto.
Un script en Zest creado desde ZAP Proxy estará compuesto por un conjunto de peticiones
que se han realizado previamente justo en el momento en el que se inicia la “grabación” de
dicho script.
Es posible incluir acciones de “Zest” durante el flujo de las peticiones HTTP y de ésta forma,
realizar pruebas de penetración sobre secciones concretas de la aplicación web o incluso
depurar las respuestas recibidas por parte del servidor.
Zest scripting
15.
ZAP puede ejecutarse en modo “headless” con la opción “-daemon” lo que le permite a la
herramienta ejecutarse como un servicio en segundo plano.
ZAP cuenta con una API Rest que permite interactuar con el servicio de forma programática
utilizando los endpoints disponibles.
Existen clientes para consumir dicha API escritos en Python y Java.
La API Rest de ZAP se puede configurar fácilmente en:
Tools → Options… → API
ZAP – API Rest.