Saltar al contenido
Portada » Blog – Laprovittera Carlos » ZAP Marketplace Ecosistema de Complementos para Pentesting

ZAP Marketplace Ecosistema de Complementos para Pentesting

En este capítulo, ZAP Marketplace Ecosistema de Complementos para Pentesting, conocerás a fondo ZAP Marketplace y el ecosistema de complementos (add-ons) que multiplican lo que ZAP puede hacer: desde instalar reglas de escaneo extra hasta integrar navegadores, importar colecciones de Postman, etiquetar y colorear tráfico, generar SBOMs, gestionar tokens, reproducir sitios desde el historial, ver SSE, invocar apps externas, y mucho más.

Este artículo se ha creado basado en la guía oficial de ZAP. Se han actualizados las imágenes, agregado ejemplos, prácticas y nuevo contenido para completar el material original. Como hacker (ético), esto es vital porque te permite adaptar ZAP al objetivo y al flujo de trabajo, acelerando el reconocimiento, elevando la cobertura en tecnologías específicas (SOAP, JWT, Retire.js, etc.) y automatizando evidencias e informes para equipos de desarrollo y compliance.

Table of Contents

Flujos de Trabajo Accionables para el Pentester

Despliegue Rápido y Cobertura Amplia: Instala el Paquete Pentester y el Paquete de Reglas de Escaneo. Esto te da una base sólida de herramientas y reglas de detección desde el primer minuto.

Escaneo Eficiente de APIS: Importa la colección desde Postman Support. Ajusta Modificadores Estructurales para representar correctamente la API. Ejecuta un Escaneo Activo utilizando Cargas Útiles Personalizadas (Custom Payloads) relevantes para la lógica de negocio.

Pruebas de Regresión y Comparación: Usa Revisit para navegar por una versión anterior del sitio. Realiza las mismas pruebas en la versión actual. Usa Diff para comparar respuestas y validar correcciones o identificar nuevos problemas.

Integración en el Ciclo DevSecOps: Canaliza los hallazgos directamente a los equipos de desarrollo usando la integración con Bug Tracker (GitHub, etc.). Genera informes de cumplimiento con Software Risk Manager. Extrae SBOMs y estadísticas para el reporting continuo.

El mercado ZAP

El escritorio ZAP tiene una arquitectura de complemento, lo que significa que se pueden agregar nuevas funcionalidades de forma dinámica. Un mercado en línea ofrece una amplia gama de complementos ZAP que agregan muchas funciones adicionales a ZAP. Se puede acceder al mercado desde ZAP a través del botón «Administrar complementos» en la barra de herramientas:

Todos los complementos del mercado son completamente gratuitos. ZAP Marketplace contiene complementos desarrollados por el equipo y la comunidad de ZAP. Estos complementos amplían las funcionalidades de ZAP. Puedes explorar y descargar complementos desde ZAP haciendo clic en el 

botón «Administrar complementos» de la barra de herramientas y seleccionando la pestaña Marketplace. Todos los complementos del ZAP Marketplace son, por supuesto, gratuitos y de código abierto.

El Marketplace contiene una amplia gama de extensiones: agregar pruebas al escáner, agregar opciones a las diversas funciones, agregar un paquete de idioma, agregar efectos visuales para mejorar la interfaz, etc.

Para instalar una extensión, simplemente selecciónela en el Marketplace y luego haga clic en ‘Instalar seleccionada’:

 

Algunas extensiones que podemos recomendar: Reglas de escáner activo, Reglas de escáner pasivo y Scripts de la comunidad.

Complementos

Los complementos añaden funcionalidad adicional a ZAP. Tienen acceso completo a todos los componentes internos de ZAP, por lo que pueden ofrecer nuevas funciones muy potentes. Puede instalar complementos dinámicamente desde el Mercado de complementos en línea a través del cuadro de diálogo Administrar complementos . Normalmente puedes agregar y eliminar complementos de la interfaz de usuario de ZAP sin tener que reiniciarla. Los complementos pueden proporcionar ayuda sensible al contexto que se integra dinámicamente con el archivo de ayuda. A los complementos se les asigna un estado que puede ser uno de los siguientes:

Releaselo que indica que son de alto estatus y aptos para el propósito.
Betalo que indica que su estado es razonable pero pueden estar incompletos o necesitar más pruebas.
Alfalo que indica que están en una etapa temprana de desarrollo

Ubicación de los complementos disponibles para ZAP

Para que un complemento esté disponible en ZAP, debe estar en una de las siguientes ubicaciones:

  • plugindirectorio ubicado en la carpeta de instalación de ZAP;
  • plugindirectorio ubicado en la carpeta de usuario de ZAP.

Vídeos oficiales ZAPCon 2022: Más poder para «ZAP»: Desmitificando los complementos ZAP 

Administrar complementos

Esto le permite administrar los complementos que ha instalado y descargar otros nuevos desde el Mercado de complementos. Hay dos pestañas disponibles:

Instalado

Esta pestaña muestra la versión de ZAP que está ejecutando, todos los complementos instalados y le permite comprobar si hay actualizaciones para ZAP o para cualquiera de los complementos. Al pasar el cursor sobre un complemento, verá más información sobre él. También puede desinstalar complementos desde esta pestaña; normalmente, los complementos se eliminan dinámicamente de la interfaz de usuario de ZAP al desinstalarlos.

— Muestra tu versión de ZAP y todos los complementos activos.

— Permite buscar actualizaciones para el núcleo y los add-ons con un solo clic.

— Opción para desinstalar complementos, generalmente sin necesidad de reiniciar ZAP.

Mercado

Esta pestaña muestra todos los complementos que no tienes instalados y que están disponibles en la Tienda de Complementos. Para ver los complementos disponibles, debes seleccionar «Buscar actualizaciones». Al pasar el cursor sobre un complemento, verás más información. Puedes instalar cualquiera de los complementos de la lista; normalmente, se añaden dinámicamente a la interfaz de ZAP en cuanto los instalas.

— Muestra todos los complementos disponibles que no tienes instalados.

— Simplemente selecciona uno o varios y haz clic en ‘Instalar seleccionado’.

Carga manual

Al trabajar en un entorno sin conexión, puede que quieras descargar e instalar manualmente un complemento. Todos los complementos del Marketplace se pueden descargar desde la página del Marketplace . Los complementos descargados se pueden cargar en ZAP mediante el menú Archivo .

Pantalla de extensiones de opciones

Esta pantalla le permite habilitar o deshabilitar las extensiones que están disponibles para ZAP, ya sean básicas o agregadas mediante complementos .

Habilitar/Deshabilitar extensiones

Las extensiones habilitadas se cargarán mediante ZAP, añadiendo así las funcionalidades que ofrecen. Las extensiones deshabilitadas no se cargarán.

Extensiones de núcleo

Las extensiones principales son extensiones que, si se deshabilitan, afectarán la funcionalidad mínima de ZAP. Las extensiones marcadas como principales no se pueden deshabilitar. Las extensiones principales se pueden deshabilitar a través del archivo de configuración, aunque no se recomienda.

Dependencias de las extensiones

Las extensiones pueden depender de otras para funcionar. Al deshabilitar una de estas extensiones (dependencias), ZAP deshabilitará automáticamente todas las extensiones que dependen de ella. Por lo tanto, al deshabilitar una extensión, también se deshabilitarán otras extensiones que dependen de ella. Las extensiones deshabilitadas automáticamente no podrán habilitarse hasta que se habiliten todas las dependencias. Deberá reiniciar ZAP para que los cambios surtan efecto.

Vista del navegador

El complemento Vista del navegador agrega la opción de representar respuestas HTML como un navegador. Se puede seleccionar a través de la barra de herramientas de la pestaña Respuesta.

Requisitos

Se requiere JavaFX para utilizar este complemento, se puede obtener, por ejemplo, de Gluon HQ . Una vez obtenido, es necesario configurar ZAP para usar JavaFX, lo que se puede hacer con los siguientes argumentos de JVM reemplazando con la ruta apropiada al directorio lib de JavaFX:

–module-path /path/to/javafx/lib/ –add-modules javafx.swing,javafx.web

Si ZAP se inicia con los scripts de inicio predeterminados, los argumentos de JVM se pueden especificar a través del panel de opciones de JVM.

Rastreador de errores

El complemento Bug Tracker puede ayudar al usuario a generar las alertas que recibe en forma de un problema o error en un rastreador de errores (como Bugzilla, Github, etc.) mientras escanea una aplicación web.

Configuración de rastreadores de errores

El usuario puede configurar los rastreadores de errores con sus detalles importantes como nombre de usuario, contraseña/token, URL del repositorio, etc. yendo a Opciones->Rastreador de errores y luego seleccionando el rastreador de errores apropiado.

Planteando las cuestiones

El usuario puede seleccionar una o más alertas (incluso sus subnodos según sea necesario) después de escanear y luego puede elegir Elemento del menú contextual -> Plantear un problema en un rastreador de errores. Aparecerá un nuevo cuadro de diálogo que le dará al usuario la capacidad de editar los campos o incluso elegir algunos campos de la configuración existente. Por ejemplo: si se elige la configuración de Github, no es necesario completar el nombre de usuario, la contraseña y la URL del repositorio siempre que sean correctos. Hay un menú desplegable llamado «Elegir un rastreador de errores» donde el usuario puede elegir el rastreador de errores para plantear el problema.

Los campos para plantear el problema dependen del rastreador de errores y sus implementaciones. Después de completar los campos, el usuario puede hacer clic en «Guardar» para plantear el problema. Luego se mostrará un mensaje al usuario indicando si su intento de plantear el problema fue exitoso o no, y si no, el motivo.

Gráfico de llamadas

Permite al usuario ver un gráfico de llamadas de los recursos seleccionados.

 Software Risk Manager

El complemento Software Risk Manager permite generar informes compatibles y subirlos a un servidor de Software Risk Manager. Hay dos opciones en el menú Informe.

Administrador de riesgos de software: Cargar informe

Esta opción generará un informe y lo subirá a un servidor de Software Risk Manager. Al seleccionarla, se le solicitará la URL del servidor y la clave API. Después de completar los campos, haga clic en el botón Actualizar para obtener una lista de los proyectos disponibles para la clave API. A continuación, haga clic en el botón Cargar para enviar los resultados al servidor de Software Risk Manager.

Gestor de riesgos de software: Generar informe XML

Esta opción generará un informe XML estándar que incluye los datos de solicitud y respuesta HTTP.

Empieza con Kits Preconfigurados

En lugar de buscar complementos uno por uno, puedes instalar colecciones curadas que agrupan las herramientas más efectivas para tareas específicas.

Paquete Pentester: Un conjunto de herramientas seleccionadas para pruebas de penetración manuales y automatizadas. Incluye fuzzers, soporte para tecnologías modernas, detectores de superficie y más.

Paquete de Reglas de Escaneo: Amplía drásticamente la capacidad de detección de ZAP con reglas de escaneo activas y pasivas en todos sus estados de madurez (alpha, beta, release), incluyendo la detección de librerías JS vulnerables con Retire.js.

Colección: Paquete Pentester

Un conjunto de complementos que consideramos ideales para pentesters. Simplemente instala este complemento y se instalarán automáticamente todos los complementos mencionados a continuación. Este complemento incluye el fuzzer ZAP, que está incluido de forma predeterminada en la versión principal, pero no está incluido en la versión principal.

En lugar de buscar complementos uno por uno, puedes instalar colecciones curadas que agrupan las herramientas más efectivas para tareas específicas.

Paquete Pentester: Un conjunto de herramientas seleccionadas para pruebas de penetración manuales y automatizadas. Incluye fuzzers, soporte para tecnologías modernas, detectores de superficie y más.

Paquete de Reglas de Escaneo: Amplía drásticamente la capacidad de detección de ZAP con reglas de escaneo activas y pasivas en todos sus estados de madurez (alpha, beta, release), incluyendo la detección de librerías JS vulnerables con Retire.js.

Complementos incluidos:

  • Pruebas de control de acceso: Agrega un conjunto de herramientas para probar el control de acceso en aplicaciones web.
  • Detector de superficie de ataque: El detector de superficie de ataque analiza el código fuente de la aplicación web para generar puntos finales que se pueden utilizar para pruebas de penetración.
  • Cargas útiles personalizadas:  Capacidad de agregar, editar o eliminar cargas útiles que se utilizan, por ejemplo, mediante reglas de escaneo activas
  • Evaluar al villano: Agrega la extensión Eval Villain a Firefox cuando se inicia desde ZAP.
  • Subir archivo: Detecta solicitudes de carga de archivos y escanéalas para encontrar vulnerabilidades relacionadas
  • Archivos FuzzDb: Archivos FuzzDB que se pueden usar con el fuzzer ZAP
  • Fuzzer:        Fuzzer avanzado para pruebas manuales
  • Vista JSON: Agrega una vista que muestra los mensajes JSON bien formateados
  • Soporte JWT: Detecta solicitudes JWT y escanéalas para encontrar vulnerabilidades relacionadas
  • Solicitante: Solicito panel numerado.
  • Archivos SVN Digger: Archivos SVN Digger que se pueden utilizar con la navegación forzada ZAP
  • Estado de vista: Decodificador y editor de ViewState ASP/JSF
  • Wappalyzer – Detección de tecnología: Detección de tecnología con Wappalyzer: wappalyzer.com

Dentro del Paquete Pentester:

Fuzzing y Reconocimiento

Fuzzer Avanzado: Con diccionarios de FuzzDB y SVN Digger para ataques de fuerza bruta y descubrimiento de directorios.

Attack Surface Detector: Analiza el código fuente para encontrar endpoints ocultos.

Wappalyzer: Detecta las tecnologías web utilizadas por el objetivo.

Análisis de Tecnologías Modernas

JWT Support: Identifica y escanea tokens JSON Web Tokens en busca de vulnerabilidades.

ViewState Decoder: Decodifica y edita el ViewState de ASP/JSF.

File Upload Scanner: Detecta y analiza funcionalidades de subida de archivos.

Mejoras de Flujo de Trabajo

JSON View: Visualiza cuerpos de mensajes JSON de forma clara y formateada.

Access Control Testing: Un conjunto de herramientas para verificar controles de acceso.

Eval Villain: Se integra con Firefox para detectar el uso de funciones peligrosas como eval () clave para encontrar DOM XSS.

Colección: Paquete de reglas de escaneo

Un conjunto de complementos que solo contienen reglas de escaneo. Puedes instalar este complemento para que se instalen automáticamente todos los complementos siguientes. Tenga en cuenta que no incluye complementos que se centran en una tecnología específica (como SOAP) que pueden agregar reglas de escaneo específicas para esa tecnología. Complementos incluidos:

  • Reglas de escaneo activas        Estado de lanzamiento de las reglas del escáner activo
  • Reglas de escaneo activo (beta)        Reglas del escáner activo de estado beta
  • Reglas de escaneo activas (alfa)        Reglas del escáner activo de estado alfa
  • Regla de escaneo activo DOM XSS        Regla de escáner activo DOM XSS
  • Reglas de escaneo pasivo        Las reglas del escáner pasivo de estado de lanzamiento
  • Reglas de escaneo pasivo (beta)        Reglas del escáner pasivo en estado beta
  • Reglas de escaneo pasivo (alfa)        Reglas del escáner pasivo de estado alfa
  • Retire.js        Identificar paquetes de JavaScript vulnerables o desactualizados

Biblioteca Común

Una biblioteca para complementos.

Etiquetas de alerta

El complemento Biblioteca común proporciona etiquetas de alerta para que las utilicen las reglas de escaneo. Cabe destacar que se incluyen las siguientes etiquetas/grupos de etiquetas:

  • Cargas útiles personalizadas: una etiqueta que indica las reglas de escaneo que admiten la funcionalidad de cargas útiles personalizadas .
  • HIPAA (Ley de Portabilidad y Responsabilidad del Seguro Médico): una etiqueta que representa alertas/reglas que hemos asignado al estándar HIPAA.
  • OWASP Top 10 (2017): etiquetas que representan los riesgos/vulnerabilidades de la lista OWASP Top 10 de 2017.
  • OWASP Top 10 (2021): etiquetas que representan los riesgos/vulnerabilidades de la lista OWASP Top 10 de 2021.
  • PCI DSS (Estándar de seguridad de datos de la industria de tarjetas de pago): una etiqueta que representa alertas/reglas que hemos asignado al estándar PCI DSS.
  • Tiempo de prueba: una etiqueta que representa reglas/alertas que se basan en cargas útiles de tiempo (retraso inducido).
  • Guía de pruebas de seguridad web de OWASP (v4.2): etiquetas que asignan reglas/alertas a las secciones relevantes de OWASP WSTG (versión 4.2).

Etiquetas de cumplimiento

Tenga en cuenta que los estándares PCI DSS e HIPAA abordan tipos específicos de datos, y que una vulnerabilidad identificada puede exponer dichos datos. ZAP no cuenta con el contexto suficiente para diferenciar qué está o podría estar expuesto al aprovechar una vulnerabilidad determinada. Si el sistema que se está probando no contiene dichos datos, la etiqueta de cumplimiento relacionada podría no ser relevante. Ver también:

Etiquetas CVE

Cualquier alerta que involucre un CVE específico (generalmente) también tendrá una etiqueta para ese identificador CVE específico con un valor que se vincula a la Base de Datos de Vulnerabilidad Nacional (NVD) de Mitre.

Etiqueta SISTÉMICA

La etiqueta SYSTEMIC se utiliza para marcar alertas que suelen afectar a todo el sitio. Estas incluyen la mayoría de las reglas relacionadas con los encabezados. A partir de ZAP 2.17.0, solo se incluirá un número limitado de alertas sistémicas en la interfaz de escritorio y en los informes de forma predeterminada.

Etiquetas de política

El complemento también proporciona un conjunto de etiquetas de alerta que asocian varios tipos de reglas o áreas de enfoque para analizar políticas; consulte la ayuda del complemento Analizar políticas para obtener más detalles.

Panel de salida con pestañas

El complemento Biblioteca Común proporciona un panel de salida con pestañas que reemplaza el panel de salida predeterminado en ZAP. Esto permite que otros complementos registren mensajes opcionalmente en pestañas con nombre en el panel de salida. Si no se proporciona un nombre, los mensajes se muestran en la pestaña «General» y las excepciones en la pestaña «Errores» de forma predeterminada.

Aunque la pestaña «Salida» se puede separar, las pestañas dentro de ella también se pueden separar si se desea. Para separar una pestaña, haga clic derecho sobre ella y seleccione «Mover pestaña a nueva ventana» en el menú contextual que aparece. Al hacer clic derecho en el cuerpo de una pestaña, se mostrará un menú contextual con opciones relevantes como Copiar y Buscar. Todos los atajos estándar (como Ctrl/Cmd + A/C/F) también deberían funcionar correctamente.

Cada vez que se añade una nueva salida a una pestaña, aparecerá un punto verde sobre el icono de la pestaña y sobre el icono del panel de salida para indicar que hay contenido nuevo. El punto verde desaparecerá de la pestaña al visualizar el contenido y del panel de salida al visualizar el contenido nuevo de todas las pestañas (incluidas las desvinculadas).

Complemento de base de datos

Un complemento que proporciona motores de base de datos y otra infraestructura relacionada. Proporciona los siguientes motores de base de datos: SQLite, a través del controlador JDBC de SQLite .

Página personalizada

ZAP permite la definición de diversas condiciones de gestión de errores no estándar. Cada contexto puede incluir varias definiciones de página personalizada, con los siguientes elementos:

  • Habilitado > Si la definición está habilitada o no.
  • Contenido > La cadena o expresión regular que define la URL o el contenido de respuesta que debe coincidir.
  • Ubicación del contenido > Si el “Contenido” debe coincidir con una URL o una respuesta “Contenido”.
  • ¿Es Regex? > Indica si “Contenido” es una expresión regular o no.
  • Tipo de página personalizada > Especificar qué tipo de página personalizada se está definiendo:
    • Página de error > Para páginas de tipo ‘500 – Error interno del servidor’.
    • No encontrado > Para respuestas ‘404 – No encontrado’.
    • Ok > Para definiciones de ‘200 – Ok’
    • Otros > Para facilitar el uso de páginas personalizadas en scripts u otros usos que aún no se han previsto.
    • Problema de autenticación > Para respuestas relacionadas con la autenticación/autorización. Por ejemplo: condiciones de tipo «401 – No autorizado» o «403 – Prohibido».

Ejemplo de configuración

A continuación se muestra un ejemplo de configuración que muestra cómo configurar completamente una aplicación web que devuelve una respuesta 200 – Ok con el mensaje «Lo sentimos, no podemos encontrar lo que buscaba»:

  1. Configurar un contexto para la aplicación web
  2. Asegúrese de que su navegador procese todo a través de ZAP y navegue a una página o punto final que no exista
  3. Vaya a ZAP e identifique la solicitud
  4. Configurar la definición de página personalizada:
    1. Resalte “Lo sentimos, no podemos encontrar lo que buscaba” en el panel de respuestas, haga clic derecho y seleccione “Marcar como contexto… Indicador de página personalizado”.
    2. Se abrirá un cuadro de diálogo que ya contiene la cadena de respuesta resaltada.
  5. Acepte la adición de la definición de página personalizada.

Cargas útiles personalizadas

Este complemento agrega un panel de Opciones desde el cual los usuarios pueden agregar, actualizar y eliminar cargas útiles de su creación/elección para su uso mediante reglas de escaneo activas o pasivas que admiten cargas útiles personalizadas (accesibles a través del elemento de menú Opciones del menú Herramientas).

La interfaz del panel de opciones también facilita la adición de múltiples cargas útiles desde un archivo. Puede consultar las reglas de escaneo compatibles con cargas útiles personalizadas aquí .

API de cargas útiles personalizadas

Las siguientes vistas están disponibles a través de la API:

Vistas

  • customPayloads(categoría): Lista todas las cargas útiles cargadas actualmente (categoría, carga útil, estado habilitado). Opcionalmente, se puede filtrar por categoría.
  • customPayloadsCategories: enumera todas las categorías disponibles.

Comportamiento

  • addCustomPayload (categoría*, carga útil): agrega una carga útil personalizada (habilitada cuando se agrega).
  • disableCustomPayloads(categoría): Desactiva las cargas útiles personalizadas. Opcionalmente, se puede limitar por categoría. (Si no hay categoría, significa todas).
  • enableCustomPayloads(categoría): Habilita cargas útiles personalizadas. Opcionalmente, se puede limitar por categoría. (Si no hay categoría, significa que todas).
  • enableCustomPayload (categoría*, carga útil): habilita una carga útil personalizada.
  • disableCustomPayload (categoría*, carga útil): deshabilita una carga útil personalizada.
  • removeCustomPayload (categoría*, carga útil): elimina una carga útil personalizada.

Nota: * Parámetro obligatorio.

Opciones de Payload

Esta pantalla/tabla le permite configurar las opciones de carga útil personalizada :

Tabla de cargas útiles personalizadas

  • Activado Una casilla de verificación que indica si se utilizará o no la carga útil personalizada particular.
  • Categoría Indica la categoría y, por asociación, la regla de escaneo para la que se debe usar el valor de carga útil de custpm. Las categorías también se mencionan en la entrada de ayuda de las reglas de escaneo aplicables.
  • Carga útil El valor de la carga útil personalizada específica.

Botones de cargas útiles personalizadas

  • Agregar Permite a los usuarios agregar una carga útil personalizada, estableciendo el estado de habilitación, la categoría y el valor de la carga útil. Las categorías de carga útil que no aparecen en la tabla pueden estar disponibles a través del botón Agregar, ya que no todas las reglas que admiten cargas útiles personalizadas tienen cargas útiles predeterminadas.
  • Modificar/Eliminar Modifique o elimine la carga útil personalizada definida por la fila seleccionada.
  • Habilitar todo/Deshabilitar todo Establece el estado de habilitación de todas las cargas útiles personalizadas según corresponda.
  • Agregar valores predeterminados faltantes Facilita la restauración de cargas útiles personalizadas predeterminadas faltantes si se han eliminado previamente.
  • Restablecer valores predeterminados Elimina todas las cargas útiles y restaura solo las predeterminadas. Las cargas útiles añadidas por el usuario se perderán.
  • Agregar múltiples cargas útiles Permite al usuario importar un archivo de texto de cargas útiles (una carga útil por línea) para la categoría seleccionada.

Contenido basado en datos

El contenido basado en datos es un tipo de modificador estructural que identifica rutas URL que representan datos. En las aplicaciones web «tradicionales», la estructura de la aplicación normalmente está definida por las rutas URL y los datos  están contenidos en los parámetros URL y los datos POST. URL como:

se representan en el árbol de sitios como dos ‘nodos’ en el árbol:

El árbol de sitios es muy importante, ya que refleja la comprensión que ZAP tiene de la estructura de la aplicación. Si no representa correctamente la estructura, ZAP no podrá atacar la aplicación eficazmente. Algunas aplicaciones incluyen datos en las rutas URL. Por ejemplo:

Estas 3 URL representan la misma página pero con datos diferentes, pero por defecto ZAP las representará como tres nodos separados:

  • Sitios
    • https://www.ejemplo.com
      • aplicación
        • empresa1
          • OBTENER:aaa(ddd)
        • empresa2
          • OBTENER:aaa(ddd)
        • empresa3
          • OBTENER:aaa(ddd)

Esto es un problema porque ZAP ahora ataca las tres páginas cuando solo necesita atacar una. En este caso, atacar la misma página tres veces no es un gran problema, pero si tiene cientos o miles de páginas, esto aumentará significativamente el tiempo de análisis de la aplicación. En términos de ZAP, los nodos de «empresa» son «contenido basado en datos»: elementos de ruta URL que contienen datos en lugar de representar parte de la estructura de la aplicación.

Puede definir el contenido basado en datos añadiendo la aplicación a un contexto y configurándolo mediante el menú contextual «Marcar como contexto -> Nombre del contexto – Nodo basado en datos» de la pestaña Sitios . Una vez hecho esto, las páginas se representarán correctamente como un solo nodo:

Los caracteres « y » se utilizan para indicar que se trata de un nodo «especial» y usted puede configurar el nombre del nodo (en este caso «empresa») para indicar lo que representa ese nodo.

Complemento de desarrollo

Un complemento para facilitar el desarrollo de ZAP. Inicia un servicio web de prueba sencillo, accesible por defecto a través de http://localhost:9091. Proporciona:

  • Páginas API Dos especificaciones sencillas de OpenAPI, que no requieren autenticación. Una de las API descritas en las especificaciones solo es accesible con autenticación.
  • Páginas de autenticación Un conjunto creciente de páginas de autenticación, para utilizar en las pruebas del manejo de la autenticación ZAP.
  • Páginas CSRF Un conjunto de páginas con formularios y tokens CSRF que se comprueban en las solicitudes POST.
  • Páginas HTML Un conjunto de páginas que almacenan varios tipos de datos en localStorage y sessionStorage.
  • Páginas de secuencia Un conjunto de páginas para probar el complemento de secuencia.

Diferencia

El complemento Diff le permite comparar 2 mensajes (solicitudes o respuestas). Se puede acceder seleccionando dos mensajes de cualquier componente de vista que muestre más de un mensaje, por ejemplo, el árbol de sitios, y luego abriendo el menú contextual (normalmente haciendo clic derecho). Verá las opciones «Comparar 2 solicitudes» y «Comparar 2 respuestas». Al hacer clic en una de ellas, se abrirá la ventana de comparación. Aquí está la captura de pantalla de cómo se verá el menú contextual cuando selecciona dos mensajes. 

Estas dos opciones aparecen desactivadas cuando seleccionas solo un mensaje y abres el menú contextual. La ventana de diferencias muestra la diferencia entre dos mensajes resaltados en amarillo. 

Evaluar al villano

Este complemento añade la extensión Eval Villain a Firefox al iniciarse desde ZAP. Eval Villain es una extensión web para Firefox que intercepta funciones peligrosas, como eval, y te avisa de su uso. Para obtener más detalles, consulte la publicación del blog de ZAP El complemento Eval Villain y la página de inicio de Eval Villain . Haga clic en el botón Eval Villain en la barra de herramientas de Firefox para comenzar a usarlo.

Puede habilitar y deshabilitar Eval Villain y otras extensiones del navegador a través de la página Opciones de Selenium.

Guía de inicio rápido

Este complemento agrega un enlace “Guía de inicio” al menú Ayuda que abre la Guía de inicio de ZAP. La guía está en formato PDF para que sea más adecuada para su impresión.

Invocar aplicaciones

Se pueden invocar otras aplicaciones pasando información de contexto, como la URL del mensaje seleccionado. Por ejemplo, se podría invocar Nmap pasando el sitio que se desea escanear. Las aplicaciones se configuran mediante la pantalla Opciones de aplicaciones .

Pantalla de opciones de aplicaciones

Esta pantalla le permite configurar las aplicaciones que se pueden invocar. Por defecto, no hay ninguna aplicación disponible; debe agregar todas las que desee usar.

  • Nombre para mostrar El nombre que se utilizará para esta aplicación en ZAP.
  • Comando completo La ruta completa de la aplicación que desea invocar. Solo se puede especificar un comando. Si desea ejecutar varios comandos a la vez o configurar variables de entorno, debe crear un script o un archivo por lotes e invocarlo desde ZAP.
  • Parámetros Los parámetros que ZAP debe pasar al comando. Se pueden usar las siguientes etiquetas para pasar parámetros:
%url%la URL completa, por ejemplo ‘http://localhost/test?a=b
%sitio%el sitio, por ejemplo ‘http://localhost:8080/
%anfitrión%el nombre del host, por ejemplo ‘localhost’
%puerto%el puerto, por ejemplo ’80’
%galleta%el primer campo de cookie del encabezado de la solicitud (si lo hay)
%datos posteriores%los datos POST enviados, si los hay, con cualquier nueva línea reemplazada con “\n”
%msgstr%El ID del mensaje HTTP para obtener datos de la API (/JSON/core/view/message/?id=$msgid) no siempre existe, devolverá -1 si no hay ID de mensaje.
%header-{{ encabezado }}%el encabezado de la solicitud por nombre (si lo hay), por ejemplo, %header-user-agent%devolvería el valor del encabezado del agente de usuario

Entonces, si un comando acepta una URL usando ‘-u’, deberá especificar los parámetros como: ‘-u %url%’

  • Salida de captura  Si está marcada, la ejecución del comando y cualquier resultado que genere se mostrarán en la pestaña Salida . Siempre debe usar esta opción al ejecutar scripts o comandos sin interfaz de usuario. También puede usarla para solucionar problemas: si una aplicación no se ejecuta correctamente, copie la ejecución del comando e inténtelo desde la línea de comandos.
  • Salida a nota Si se marca, cualquier salida se añadirá a una nota adjunta al registro correspondiente de la pestaña Historial . Tenga en cuenta que algunos nodos de la pestaña Sitios no tienen registros asociados de la pestaña Historial ; para ellos, esta opción no tendrá efecto.

Vista JSON

Proporciona una vista de panel de Solicitud/Respuesta que muestra cuerpos JSON bien formateados.

Controladores web de Linux

El complemento WebDrivers de Linux proporciona WebDrivers para los siguientes navegadores:

  • Chrome – Controlador Chrome 141.0.7390.122
  • Firefox – GeckoDriver 0.36.0

Marcador de neón

Complemento Neonmarker, que colorea las entradas de la tabla Historial según las etiquetas. El complemento también permite colorear mensajes arbitrarios en la tabla Historial mediante un menú contextual con botón derecho. Se añaden etiquetas a los mensajes seleccionados para darles el color deseado. Las etiquetas personalizadas de Neonmarker tienen la forma neon_UUID , por ejemplo: neon_e8b1d1e6-9dd4-4996-bc02-de2213986352 . Otro elemento del menú contextual permite eliminar las etiquetas personalizadas de Neonmarker. El siguiente ejemplo de código muestra cómo agregar un mapa de color Neonmarker a través de JavaScript dentro de ZAP usando un script independiente.

                extNeon = control.getExtensionLoader().getExtension(org.zaproxy.zap.extension.neonmarker.ExtensionNeonmarker.NAME);
                
                // History items tagged “Comment” will be red
                extNeon.addColorMapping(«Comment», 0x990000);

Menú en línea

Este complemento agrega los elementos de menú «en línea» estándar que se vinculan a recursos ZAP en línea.

Conectar y hackear

Plug-n-Hack es un estándar propuesto por el equipo de seguridad de Mozilla para definir cómo las herramientas de seguridad pueden interactuar con los navegadores de una manera más útil y utilizable. Este complemento agrega un botón ‘Plug-n-Hack’ a la pestaña de Inicio rápido: hacer clic en este botón le permitirá configurar su navegador para que funcione con ZAP de manera rápida y sencilla.  También te permite controlar ZAP desde tu navegador. En Firefox, esto se realiza mediante la Barra de herramientas para desarrolladores (Mayús+F2). Escribe «help pnh» o «help zap» en la Barra de herramientas para desarrolladores de Firefox para empezar. Plug-n-Hack es compatible actualmente con Firefox 24.0 y versiones posteriores. Para más detalles sobre Plug-n-Hack, incluyendo la información más reciente sobre los navegadores y herramientas compatibles, consulte:  https://developer.mozilla.org/en-US/docs/Plug-n-Hack

Pestaña Clientes de Plug-n-Hack

Plug-n-Hack permite monitorizar eventos del cliente (navegador) para facilitar las pruebas de aplicaciones HTML5. Para ofrecer compatibilidad con la mayor variedad posible de navegadores modernos, esto se implementa inyectando JavaScript en la respuesta devuelta al navegador. Dado que esto implica cambiar la respuesta, esta funcionalidad debe habilitarse manualmente. Para recibir eventos de clientes:

  • Acceda a las páginas que desea monitorear mientras realiza el proxy a través de ZAP
  • Haga clic derecho en el nodo o nodos relevantes en el árbol de Sitios y seleccione ‘Monitorear clientes -> Incluir subárbol’
  • Obligue a su navegador a recargar esas páginas
  • Luego, los eventos del cliente (como postMessage, clic, mouseover, etc.) se enumerarán en esta pestaña: selecciónelos para ver los detalles completos.

El javascript inyectado envía un latido a ZAP, para que pueda mostrar todos los clientes «activos» en esta pestaña. En este caso, los clientes «activos» son páginas abiertas en una pestaña del navegador. Puede editar y reenviar cualquier evento mediante un elemento del menú contextual, siempre que el cliente original esté activo. También puede interceptar y modificar mensajes de correo sobre la marcha. Los mensajes de cliente se interceptan si se selecciona el botón «Interrumpir en todas las solicitudes» en la barra de herramientas superior. También puede establecer puntos de interrupción de cliente personalizados mediante un botón en la pestaña «Clientes».

Puedes fuzzear post Messages de la misma forma que cualquier otro mensaje: selecciona la cadena que quieres fuzzear en la pestaña Solicitud, haz clic derecho y selecciona «Fuzz». Esta opción solo estará disponible si el navegador en cuestión aún tiene esa página abierta, ya que PnH envía las cargas útiles al navegador. Las cargas útiles XSS estándar se pueden usar para detectar vulnerabilidades XSS del DOM, pero deberás supervisar manualmente la interfaz de usuario para comprobar si alguna de ellas funciona correctamente. PnH también añade un archivo de fuzzing personalizado llamado «PlugnHack DOM XSS Oracle».

Este archivo se basa en la hoja de trucos XSS de OWASP e invoca un método JavaScript «xss» que se inyecta en la página. Este método invoca la API ZAP, que a su vez marca el ataque relevante en la interfaz de usuario. Estas son vulnerabilidades XSS DOM confirmadas, aunque (como siempre) conviene comprobar si realmente se pueden explotar en la aplicación que se está probando sin una herramienta como ZAP.

Soporte de Postman

Este complemento le permitirá importar colecciones de Postman a través de la interfaz de usuario. La importación a través de la API y la línea de comandos está en desarrollo. También es compatible con Automation Framework .

Interfaz de usuario

Se agrega un elemento de menú al menú Importar:

  • Importar una colección de Cartero

Las variables definidas en la colección se reemplazarán con sus valores. Además, el cuadro de diálogo permite proporcionar una lista de variables separadas por comas como pares clave-valor en el formato key1=value1,key2=value2,…. Estas variables tendrán prioridad sobre las de la colección.

API

Se agregan las siguientes operaciones a la API:

  • ACCIÓN importFile (archivo)
  • ACCIÓN importUrl (url)

Línea de comandos

Se agregan las siguientes opciones de línea de comandos:

  • -postmanfile <nombre de archivo>: importa una colección de Postman desde el nombre de archivo especificado
  • -postmanurl <url> : importa una colección de Postman desde la URL especificada
  • -postmanendpointurl <url> : La URL del punto final, para anular las URL base presentes en la colección Postman

Retire.js

Este complemento incluye una regla de escaneo pasivo que implementa las comprobaciones proporcionadas por Retire.js para identificar paquetes de JavaScript vulnerables u obsoletos. El nivel de riesgo asociado con las alertas generadas por esta regla de escaneo se asigna a las clasificaciones de gravedad proporcionadas en los datos de Retire.js. Si no se coincide con ninguna gravedad, se utiliza un valor predeterminado de Riesgo medio.

Código más reciente: Complemento Retire.js

ID de alerta: 10003.

revisit

El complemento te permite indicar a ZAP que devuelva contenido del historial de ZAP entre fechas específicas en lugar de reenviar las solicitudes al sitio. Esto te permite navegar y usar aparentemente un sitio web al que ya no tienes acceso. También te permite ver cómo se veía en momentos específicos, lo cual es útil si la aplicación ha cambiado desde entonces.  Al devolver páginas del historial de ZAP, se inyectan pies de página flotantes en las páginas HTML para dar una pista visual de que estas páginas se generan a partir de ZAP. ZAP devolverá páginas que fueron el resultado de solicitudes GET y POST siempre que encuentre las que coincidan

Las páginas solo coinciden si todos los parámetros URL y POST son iguales, ignorando el orden y cualquier token CSRF conocido. Si no se encuentra ninguna página coincidente en el historial, se devuelve una página 404 personalizada que incluirá enlaces a la misma página si se ha invocado con parámetros diferentes o fuera del período de tiempo especificado. Este complemento añade menús de clic derecho al Árbol de sitios:

Habilitar revisit

Cuando se seleccion, se mostrará una ventana emergente que solicita las horas de inicio y finalización que se utilizarán. La hora de inicio predeterminada es la hora de la primera solicitud en la sesión. La hora de finalización predeterminada es la hora de la última solicitud en la sesión. Si alguno de los elementos de tiempo (por ejemplo, ‘día del mes’) no ha cambiado, esos elementos se deshabilitarán. Si se presiona el botón Aceptar del cuadro de diálogo, se habilitará la funcionalidad de revisita para el sitio seleccionado y se agregará un icono de ‘calendario’ al nodo del sitio en el Árbol de sitios.

Deshabilitar revisit

Cuando se selecciona, la funcionalidad de revisita se deshabilitará para el sitio seleccionado.

Revisit: Navega por el Pasado del Sitio Web. Configura ZAP para que sirva contenido desde su historial en un rango de fechas específico. Casos de Uso:

– Analizar un sitio que ya no está en línea.

– Realizar pruebas de regresión comparando el comportamiento de la aplicación entre diferentes despliegues.

– Navegar por una versión anterior para verificar si una vulnerabilidad fue corregida.

Nota: ZAP inyecta un pie de página visual para indicar que el contenido es del historial.

Token Generation & Analysis: Genera cientos de tokens (de sesión, CSRF) para analizar su aleatoriedad y entropía.

Plug-n-Hack: Conecta ZAP con el navegador para monitorear eventos del cliente (postMessage, clicks) y realizar fuzzing de DOM, ideal para aplicaciones HTML5 complejas.

Custom Payloads: Define y gestiona tus propias cargas útiles para reglas de escaneo, importándolas desde archivos para adaptarlas a contextos específicos.

API

El complemento admite los siguientes puntos finales de API:

revisita / vista / revisitaList Devuelve la lista de sitios habilitados para revisita

revisita / acción / revisitaSiteOn Activa la revisita para el sitio especificado. Las fechas deben usar el formato: “aaaa/MM/dd HH:mm:ss”

revisita / acción / revisitaSiteOff Desactiva la revisita para el sitio especificado

Eventos enviados por el servidor

Las aplicaciones web o los sitios web pueden utilizar los eventos enviados por el servidor para configurar un canal de comunicación unidireccional (unidireccional) a través de una única conexión TCP. Puede usarlos para notificaciones push desde un servidor a un cliente de navegador. Los eventos enviados por el servidor a veces proporcionan una alternativa a los usos de Ajax, HTTP Long Polling o Comet. En el navegador, puede utilizar los eventos enviados por el servidor a través de la API EventSource . Esta API pertenece a HTML5 y está estandarizada por el W3C:  http://www.w3.org/TR/eventsource/

ZAP puede: interceptar y mostrar eventos enviados por el servidor Los eventos enviados por el servidor se muestran dentro de la pestaña Eventos enviados por el servidor .

Desde <https://www.zaproxy.org/docs/desktop/addons/server-sent-events/>

Pestaña Eventos enviados por el servidor

La pestaña Eventos enviados por el servidor muestra todos los eventos de los flujos de eventos.

Archivos SVN Digger

Proporciona los archivos SVN Digger que se pueden usar con la navegación forzada de ZAP.

Generación y análisis de tokens

Este complemento le permite generar y analizar tokens pseudoaleatorios, como los que se utilizan para el manejo de sesiones o la protección CSRF.

Para generar y analizar tokens:

  • Busque una solicitud que contenga el token que desea generar
  • Haga clic con el botón derecho en la pestaña Sitios o en una de las pestañas inferiores y seleccione ‘Generar tokens…’
  • Elija el token que desea generar
  • Pulse el botón Generar
  • Las respuestas y los tokens se mostrarán en la pestaña ‘Generación de tokens’
  • Cuando se hayan generado todos los tokens, se mostrará el cuadro de diálogo ‘Analizar tokens’

Nota: La generación de tokens no está permitida en Safeel modo ni Protectedsi el mensaje no está dentro del alcance.

Pantalla de opciones del generador de tokens

CampoDetallesPredeterminadoArchivo de configuración
Número de subprocesosEl número de subprocesos utilizados durante la generación del token.5Clave: tokengen.threadsPerScanValor: un entero no negativo.
Retraso de solicitud (en milisegundos)El tiempo de espera antes de enviar cada solicitud, para evitar sobrecargar el servidor de destino. Nota: Dado el alto número de solicitudes enviadas durante la generación del token, aumentar el retraso podría tener un gran impacto en el tiempo que tardará la generación en completarse.  

TreeTools

Proporciona herramientas/funcionalidades para mejorar el árbol de Sitios. Agrega un elemento de menú contextual al árbol de Sitios para expandir/contraer sus nodos.

Generador de valores

Esta extensión del generador de valores permite la configuración personalizada de los valores utilizados en sitios/aplicaciones en función de los nombres de campo/entrada. La palabra «Campo» se utiliza indistintamente en esta documentación de ayuda con los términos parámetro o entrada. Con este complemento, el usuario puede crear nuevos campos para las entradas cuyo valor desee controlar. Además, el usuario puede modificar el nombre y el valor de cualquier campo existente para que se ajuste a los campos que intenta personalizar/controlar. El usuario también puede deshabilitar o eliminar cualquier campo para que no se utilicen los valores personalizados. Los nombres de campo, los valores, el estado habilitado y el estado de las expresiones regulares se almacenarán incluso después de que haya concluido una sesión ZAP

El complemento proporciona un conjunto de nombres de campo y patrones predeterminados que se pueden encontrar en una aplicación/sistema y un valor correspondiente para cada campo predeterminado. Estos valores predeterminados se pueden deshabilitar, modificar y eliminar si el usuario lo desea.  El generador de valores se puede configurar a través de las opciones de ZAP. Al seleccionar la pestaña Generador de valores, se mostrará una tabla con todas las entradas existentes que están definidas actualmente. A continuación se muestra un ejemplo.

Añadir un nuevo campo

Para definir valores de entrada adicionales, se puede hacer clic en el botón Añadir . Esto abrirá un cuadro de diálogo para que el usuario proporcione información del campo. 

Tenga en cuenta lo siguiente al añadir un nuevo campo:

  • Se debe proporcionar un nombre de campo o un patrón de expresión regular.
  • El nombre del campo no puede existir ya en la tabla o se producirá una advertencia.
  • El nombre de campo proporcionado al generador de valores debe coincidir con el ID de campo en la entrada que desea definir/controlar.
  • El nombre del campo no distingue entre mayúsculas y minúsculas, a menos que se utilicen expresiones regulares.
  • Se intentarán las coincidencias de nombres simples antes de las coincidencias de expresiones regulares.
  • No es necesario proporcionar un valor. Esto dará como resultado que se utilice una cadena vacía
  • El campo de valor distingue entre mayúsculas y minúsculas y se verá en el tráfico posterior.

Modificar un campo existente

El complemento permite al usuario modificar los valores y nombres de los campos existentes. Esto se puede hacer seleccionando el campo que desea modificar y haciendo clic en el botón Modificar

Al modificar un campo, el usuario está restringido por las mismas reglas que al crear uno nuevo. La restricción más común al modificar un campo es que el nombre no puede ser el mismo que el de un campo existente (es decir, no se permiten campos duplicados).

Eliminación de campos

El usuario puede eliminar campos en cualquier momento. Para hacerlo, simplemente seleccione el campo que desea eliminar y haga clic en el botón Eliminar . Tenga en cuenta que se le pedirá que confirme la eliminación antes de continuar, a menos que la casilla Eliminar sin confirmación esté marcada.

Campos/Parámetros que no están definidos

Un usuario puede descubrir que no desea definir todo, sino definir algunos dentro de la entrada esperada. Cualquier campo que no esté definido en el complemento Generador de valores utilizará un valor predeterminado de ZAP que se genera para que coincida con cada tipo de campo. (Por ejemplo: un campo de texto tendrá el valor «ZAP»).

Estadísticas

Se exponen varias estadísticas a través del complemento para las operaciones de agregar, modificar y eliminar. En los siguientes ejemplos, {name}será el nombre real del campo Generador de valores.

  • stats.formhandler.add
  • stats.formhandler.add.{nombre}
  • stats.formhandler.modify
  • stats.formhandler.modify.{nombre}
  • stats.formhandler.remove
  • stats.formhandler.remove.{nombre}

ViewState

Proporciona vistas del panel Solicitud/Respuesta para decodificar y editar ViewState ASP/JSF.

Lista de materiales del software

ZAP incluye una Lista de Materiales de Software (SBOM) en tiempo de ejecución generada por CycloneDX , tanto para el núcleo de ZAP como para todos los complementos mantenidos por el equipo de ZAP. Cada SBOM aparecerá como un archivo llamado «bom.json» incluido en la raíz de los JAR de ZAP. Tenga en cuenta que los SBOM pueden no estar disponibles si ejecuta ZAP desde el código fuente y es posible que algunos complementos de terceros tampoco los definan.

Código postal SBOM

Se puede generar un archivo zip con todos los archivos SBOM disponibles mediante las siguientes opciones. El archivo SBOM principal de ZAP se llamará «zap-core-bom.json» y los archivos SBOM complementarios se llamarán «<addon-id>-bom.json».

De oficina

El botón “Guardar zip SBOM…” del cuadro de diálogo “Información de soporte…” del menú Ayuda .

Línea de comandos

La opción de línea de comandos “-sbomzip” .

API

La acción principal de la API “createSbomZip”.

Etiquetas de Alerta para Contexto y Cumplimiento (Alert Tags) El complemento Common Library enriquece las alertas con etiquetas estandarizadas.

Ejemplos: OWASP Top 10 (2017/2021), PCI DSS, HIPAA, WSTG v4.2.

Nota de Contexto: ZAP no sabe si los datos son sensibles (PCI/HIPAA). La relevancia de la etiqueta depende del sistema evaluado.

Generación de SBOM (Software Bill of Materials) ZAP y sus complementos oficiales incluyen un SBOM en formato CycloneDX ( bom.json). Exporta un ZIP con todos los SBOMs disponibles a través de:

– UI: Menú Ayuda -> Información de Soporte.

— Línea de Comandos: Opción -sbomzips.

— API: Acción createSbomZipS

Estadísticas y Métricas: ZAP expone métricas internas de rendimiento y escaneo que pueden ser consumidas vía API o enviadas a un servidor Statsd.

Estadística

ZAP mantiene estadísticas que pueden ayudarle a comprender qué sucede realmente al interactuar con aplicaciones grandes. Las estadísticas están disponibles a través de la API y también se pueden enviar a un servidor Statsd cuando se configura a través de la pantalla Opciones de estadísticas .

Modificadores estructurales

Los modificadores estructurales son controles que cambian la forma en que ZAP representa la estructura de la aplicación. El árbol de sitios es la representación de la aplicación por parte de ZAP. Si no es una buena representación de la estructura, entonces ZAP no podrá atacar la aplicación de manera efectiva. Actualmente existen 2 tipos de modificadores estructurales:

  • Contenido basado en datos que identifica rutas URL que representan datos
  • Parámetros estructurales que identifican parámetros que representan la estructura de la aplicación en lugar de los datos del usuario

Los modificadores estructurales sólo se pueden aplicar a contextos .

Parámetros estructurales

Los parámetros estructurales son un tipo de modificador estructural que identifica parámetros que representan la estructura de la aplicación en lugar de datos del usuario. En las aplicaciones web «tradicionales», la estructura de la aplicación normalmente está definida por las rutas URL y los datos están contenidos en los parámetros URL y los datos POST. URL como:

se representan en el árbol de sitios como un ‘nodo’ en el árbol:

El árbol de sitios es muy importante, ya que refleja la comprensión que ZAP tiene de la estructura de la aplicación. Si no representa correctamente la estructura, ZAP no podrá atacar la aplicación eficazmente. En aplicaciones de página ‘única’ se utiliza un parámetro para indicar la ‘página’ lógica:

Estas 3 URL representan páginas lógicas diferentes, pero de forma predeterminada ZAP seguirá representándolas como un solo nodo:

Esto es un problema porque ZAP ahora no atacará toda la funcionalidad de la aplicación. En términos de ZAP, el parámetro URL de la página es un parámetro estructural, es decir, un parámetro que define parte de la estructura de la aplicación.

Puede definir parámetros estructurales añadiendo la aplicación a un contexto y configurándolos a través de la pantalla «Estructura del contexto de la sesión» . Una vez hecho esto, las páginas se representarán correctamente como tres nodos:

El Árbol de Sitios es la base de un buen escaneo. Si no representa correctamente la aplicación, ZAP atacará de forma ineficiente o incompleta. Los modificadores estructurales corrigen esto.

Contenido Basado en Datos (Data-Driven Content)

El Problema: URLs como /app/empresa1/’ y /app/empresa2/S son tratadas como nodos diferentes, causando escaneos redundantes.


La Solución: Marcar el segmento de la ruta (ej. ‘empresa1) como un nodo de datos. ZAP lo agrupa en un solo nodo , escaneando la lógica una sola vez.


Parámetros Estructurales (Structural Parameters)

El Problema: En SPAs, URLs como y son tratadas como un único nodo, ocultando funcionalidad.

La Solución: Definir ‘pages como un parámetro estructural. ZAP creará nodos separados para p1 yp2 , asegurando una cobertura completa del escaneo.

Etiquetas

Una etiqueta es un fragmento corto de texto que desea asociar con una solicitud. Una solicitud puede tener varias etiquetas asociadas. Se pueden agregar y cambiar etiquetas mediante el cuadro de diálogo Administrar etiquetas de historial .

También se pueden agregar automáticamente a través del escaneo pasivo : esto le permite etiquetar automáticamente las páginas que coinciden con una expresión regular particular. Las etiquetas se muestran en la pestaña Historial y se pueden filtrar mediante el cuadro de diálogo Filtro de historial .

Etiquetas de alerta

Si una etiqueta de Historial comienza con ALERT-TAG:, la etiqueta también se asociará con cualquier alerta generada en relación con esa solicitud. El prefijo se omitirá, y si la cadena restante contiene un =carácter, la clave de la etiqueta de alerta será la cadena hasta el primer carácter =y el valor será el resto de la cadena. Si no hay ningún =carácter, la clave será la cadena después del prefijo y el valor estará en blanco. Una etiqueta de Historial de ALERT-TAG:AAA=BBBresultará en una etiqueta de Alerta con una clave de AAAy un valor de BBB, mientras que una etiqueta de Historial de ALERT-TAG:CCCresultará en una etiqueta de Alerta con una clave de CCCy un valor en blanco.

Opciones…

Este botón es el mismo que el elemento de menú ‘Opciones…’ del menú Herramientas .

Restablecer valores predeterminados de fábrica : El botón «Restablecer valores de fábrica» ​​restablece todas las opciones a los valores establecidos al ejecutar ZAP por primera vez. Esto incluye restablecer el host y el puerto en los que ZAP escucha, así como la clave API. El único elemento de configuración que no cambiará es el certificado CA raíz de ZAP. Si desea cambiarlo, puede hacerlo en la pantalla «Certificados de red/servidor».

Pantalla de opciones de base de datos

Esta pantalla le permite configurar las opciones de la base de datos:

  • Compacto (a la salida) Permite compactar la base de datos cuando se cierra ZAP, compactar la base de datos asegura un uso mínimo de espacio en disco pero también tomará más tiempo salir de ZAP.
  • Registro de recuperación Controla si el registro de recuperación de la base de datos está habilitado. Mejora el rendimiento de la base de datos cuando está deshabilitado, pero podría provocar la pérdida de datos si se sale de ZAP repentinamente. Nota: La sesión actual no se verá afectada; los cambios surten efecto en las sesiones nuevas y abiertas.
  • Tamaño máximo del cuerpo de la solicitud El tamaño de cuerpo de solicitud más grande en bytes que ZAP permitirá.
  • Tamaño máximo del cuerpo de respuesta El tamaño de cuerpo de respuesta más grande en bytes que ZAP permitirá.
  • Solicitar opciones de persistencia en una nueva sesión Si está marcada, el cuadro de diálogo Persistir sesión se mostrará cuando se cree una nueva sesión.
  • Opción predeterminada Opción predeterminada para nuevas sesiones: si el mensaje anterior está habilitado, se seleccionará la opción predeterminada. Si no está habilitado, se realizará esta acción.

Opciones de Mostrar

La pantalla de visualización le permite configurar:

  • Imágenes Si ZAP procesa imágenes.
  • Mostrar solicitudes CONNECT (locales) Si las solicitudes HTTP CONNECT recibidas por los proxies de ZAP deben persistir en la sesión actual y mostrarse en la pestaña Historial . La configuración predeterminada es no mostrar estas solicitudes, ya que ocurren con frecuencia (en preparación para conexiones TLS/SSL, WebSocket, etc.) y, a menos que se inspeccione el comportamiento de la aplicación cliente, no suelen ser de gran interés.
  • Mostrar Disposición de los tres paneles principales. Están disponibles las siguientes opciones:
    • Maximizar la pestaña izquierda (Sitios): El panel de árbol que contiene la pestaña Sitios ocupa todo el lado izquierdo. Esto reduce el espacio disponible para el panel de información.
    • Maximizar las pestañas inferiores (Historial, etc.): El panel de información ocupa toda la longitud de la parte inferior. Esto reducirá el espacio disponible para el panel de árbol.
    • Diseño completo: La pestaña seleccionada ocupa toda la pantalla. Esto es útil al usar ZAP en pantallas pequeñas.
  • Posición del panel de respuesta Permite configurar la posición de la pestaña Respuesta respecto a la pestaña Solicitud. Están disponibles las siguientes opciones:
    • Pestañas en paralelo: Las pestañas Solicitud y Respuesta están en paralelo. Esto aumenta la información que se puede mostrar, pero impide ver la solicitud y la respuesta simultáneamente.
    • Lado a lado en la pestaña: Los paneles Solicitud y Respuesta se muestran uno al lado del otro en la misma pestaña. Esto reduce la información que se puede mostrar, pero permite ver la solicitud y la respuesta simultáneamente.
    • Paneles en paralelo: el panel Solicitud se muestra a la izquierda del panel Respuesta. Esto reduce la información que se puede mostrar, pero permite ver la solicitud y la respuesta simultáneamente.
    • Solicitud mostrada encima de la respuesta: el panel Solicitud se muestra encima del panel Respuesta. Esto reduce la información que se puede mostrar, pero permite ver tanto la solicitud como la respuesta simultáneamente.

La opción Posición del panel de respuesta no se aplica cuando la opción Pantalla está configurada en Diseño completo.

  • Mostrar botones de interrupción  La ubicación de los botones de freno.
  • Vista de solicitud grande tamaño mínimo El tamaño mínimo del cuerpo de una solicitud en bytes, momento en el cual se mostrará el mensaje «cuerpo de solicitud grande» en lugar del cuerpo real. Esto evita que los cuerpos muy grandes ralenticen la interfaz de usuario. Si se establece este valor en -1, la solicitud siempre se mostrará, independientemente de su tamaño.
  • Vista de respuesta grande, tamaño mínimo El tamaño mínimo del cuerpo de una respuesta en bytes, momento en el que se mostrará el mensaje «Cuerpo de respuesta grande» en lugar del cuerpo real. Esto evita que cuerpos muy grandes ralenticen la interfaz de usuario. Si se establece este valor en -1, la respuesta siempre se mostrará, independientemente de su tamaño.
  • Opciones de marca de tiempo de las pestañas de salida Una vez habilitadas las marcas de tiempo en la pestaña de salida, puede configurar el formato en el que desea que aparezcan. Seleccione un formato predefinido de la lista desplegable o introduzca uno de su elección. El formato se basa en SimpleDateFormat de Java. Tras seleccionar o introducir un formato de marca de tiempo, al pulsar Intro, el ejemplo de la derecha se actualizará para reflejar su elección. Si ZAP no puede utilizar el formato introducido, el ejemplo se mostrará con el formato predeterminado.
  • Largo y predeterminado aaaa-MM-dd HH:mm:ss ISO8601 aaaa-MM-dd’T’HH:mm:ssZ Sólo tiempo HH:mm:ss
  • Controles de fuentes La sección Fuente general controla la fuente y el tamaño predeterminados del texto que se muestra en ZAP, mientras que la sección Fuente de los paneles de trabajo controla la fuente utilizada en la sección superior derecha de la ventana principal de ZAP (p. ej., Solicitud/Respuesta, herramienta Editar y reenviar, etc.). Si se configura en -1, se utilizará el tamaño predeterminado del sistema. El campo «Ejemplo de fuente» muestra el tamaño predeterminado del texto. Esta configuración solo se aplicará al reiniciar ZAP.
  • Mira y siente Permite elegir la apariencia de ZAP. Si se deja en blanco, se usa Nimbusla apariencia nativa del sistema en macOS, la predeterminada en Windows y Linux. La propiedad del sistema swing.defaultlafprevalece sobre esta opción

Resumen del capítulo

Marketplace y gestión de add-ons

  • Arquitectura modular: instalación/actualización desde Administrar complementos (pestañas Instalado y Mercado), con estados Release/Beta/Alpha.
  • Carga manual de add-ons en entornos offline.
  • Pantalla de extensiones: habilitar/deshabilitar extensiones (con dependencias y reinicio cuando aplique).

Colecciones recomendadas

  • Paquete Pentester: control de acceso, surface detector, fuzzer + diccionarios (FuzzDB/SVN Digger), soporte JWT, subida de ficheros, Wappalyzer, vista JSON, ViewState, solicitante, Eval Villain (DOM XSS), etc.
  • Paquete de reglas de escaneo: reglas activas/pasivas (release/beta/alpha) y DOM XSS; Retire.js para JS vulnerable.

Add-ons destacados

  • Browser View (render como navegador con JavaFX).
  • Bug Tracker (crear issues en GitHub/Bugzilla desde alertas).
  • Call Graph (grafo de llamadas).
  • Software Risk Manager (generar y subir informes).
  • JSON View, Neonmarker (colorear por etiquetas).
  • Plug-n-Hack (config rápida del navegador y eventos cliente para DOM testing).
  • Postman Support (importar colecciones; anular variables/endpoint).
  • Revisit (servir desde historial por rango temporal, útil para regresiones).
  • Server-Sent Events (captura SSE).
  • Token Gen & Analysis (entropía/aleatoriedad de tokens; opciones de hilos y delay).
  • Invoke Applications (lanzar Nmap u otros con %url%, %host%, etc.).
  • Diff (comparar 2 requests/responses).
  • Dev (mini web de pruebas: auth, CSRF, OpenAPI, secuencias).
  • Form/Value Generator (valores por campo/regex para poblar formularios).
  • Custom Payloads (tabla/API para cargas por categoría, habilitar/deshabilitar/importar).
  • Data-Driven Content & Structural Modifiers (nodos basados en datos y parámetros estructurales para que el Árbol de Sitios represente la app real y el escaneo sea eficaz).
  • Labels & Alert Tags (etiquetas en historial que se propagan a alertas, incl. clave=valor).
  • SBOM (CycloneDX de core y add-ons; export ZIP por UI/CLI/API).
  • Stats (exposición vía API/StatsD).
  • DB Options (compactación, límites de cuerpo, persistencia).
  • Display Options (layouts, tamaños “large body”, fuentes, timestamps).
  • Linux WebDrivers (drivers incluidos y gestión en Selenium Options).

Flujos útiles para pentest/DevSecOps

  • Instalar Paquete Pentester + Paquete de reglas → ampliar detección rápida.
  • Ajustar modificadores estructurales (data-driven/structural params) para reducir ruido y tiempo de escaneo.
  • Importar Postman para poblar el árbol, luego active scan con payloads personalizados.
  • Usar Revisit para comparar comportamientos entre despliegues.
  • Conectar Bug Tracker / Software Risk Manager para canalizar hallazgos a equipos.
  • Generar SBOM y estadísticas para reporting continuo.
  • Neonmarker + Labels para priorización visual durante sesiones largas.

Notas de seguridad/ética

  • Instala y usa add-ons solo en entornos con permiso explícito.
  • Evita exponer credenciales/tokens en reglas de Replacer/Invoke/Labels.
  • Al usar Revisit/SSE/Plug-n-Hack, recuerda que se inyecta contenido: úsalo en labs/staging.

 

Preguntas basadas en el artículo (ZAP Marketplace y Complementos)

  1. ¿Qué tipos de estados pueden tener los complementos de ZAP y qué significa cada uno?
  2. ¿Qué métodos existen para instalar complementos desde el Marketplace, incluso sin conexión?
  3. ¿Qué es el complemento “Bug Tracker” y cómo facilita la gestión de alertas?
  4. ¿Qué es el “Paquete Pentester” y qué herramientas incluye?
  5. ¿Qué es el contenido basado en datos y por qué es importante configurarlo en ZAP?
  6. ¿Cuál es la utilidad del complemento “Retire.js”?
  7. ¿Qué funciones ofrece el complemento “Revisita”?
  8. ¿Qué se puede hacer con el complemento “Eval Villain”?
  9. ¿Qué permite hacer el complemento de “Postman” en ZAP?
  10. ¿Qué función cumple el complemento de “Plug-n-Hack”?

10 Ejercicios prácticos con los complementos

  1. Instala el paquete “Pentester” desde el Marketplace y verifica qué herramientas se han agregado.
  2. Marca un nodo como contenido basado en datos usando el menú contextual de ZAP.
  3. Configura un rastreador de errores (ej. GitHub) y plantea una alerta desde ZAP como issue.
  4. Usa el complemento de «Revisita» para reproducir contenido histórico de un sitio y analiza cómo responde ZAP.
  5. Importa una colección de Postman desde la interfaz y reemplaza variables con valores personalizados.
  6. Realiza una comparación entre dos solicitudes usando el complemento «Diff».
  7. Usa el complemento “Retire.js” para detectar librerías JavaScript vulnerables durante un escaneo pasivo.
  8. Usa el “Generador de tokens” para identificar la aleatoriedad de un token de sesión.
  9. Añade cargas útiles personalizadas desde un archivo al complemento correspondiente.
  10. Marca un parámetro como “estructural” para mejorar la representación del árbol de sitios.

Respuestas completas a las 10 preguntas

1. ¿Qué tipos de estados pueden tener los complementos de ZAP?

  • Release (Liberado): Están listos para producción y se consideran estables.
  • Beta: Tienen una funcionalidad razonable, pero pueden necesitar más pruebas.
  • Alpha: Están en una etapa temprana de desarrollo y son experimentales.

2. ¿Qué métodos existen para instalar complementos desde el Marketplace, incluso sin conexión?

  • Desde la interfaz de ZAP, usando el botón “Administrar complementos”.
  • Desde la pestaña Marketplace, buscando actualizaciones e instalando.
  • Carga manual, descargando el complemento desde la página oficial del Marketplacey cargándolo vía “Archivo”.

3. ¿Qué es el complemento “Bug Tracker”?

Permite crear tickets automáticamente a partir de alertas de ZAP en herramientas como GitHub, Bugzilla, etc. Se configura con URL, credenciales y repositorio, y permite enviar alertas seleccionadas como issues.

4. ¿Qué es el “Paquete Pentester” y qué herramientas incluye?

Es una colección de complementos útiles para pruebas de penetración, como:

  • Cargas útiles personalizadas
  • Detector de superficie de ataque
  • Eval Villain
  • Subida de archivos
  • JWT, ViewState, SVN Digger
  • Fuzzer y soporte para FuzzDB
  • Vista JSON y más

5. ¿Qué es el contenido basado en datos y por qué es importante?

Permite identificar partes de una URL que representan datos en lugar de estructura (por ejemplo, IDs en la ruta). Ayuda a reducir la cantidad de nodos en el árbol de sitios y optimiza el escaneo evitando redundancias innecesarias.

6. ¿Cuál es la utilidad del complemento “Retire.js”?

Incluye una regla de escaneo pasivo que detecta bibliotecas JavaScript vulnerables u obsoletas, usando el proyecto Retire.js.

7. ¿Qué funciones ofrece el complemento “Revisita”?

Permite a ZAP responder con contenido histórico almacenado en lugar de reenviar solicitudes reales, útil cuando el sitio ya no está disponible o ha cambiado.

8. ¿Qué se puede hacer con el complemento “Eval Villain”?

Intercepta y detecta el uso de funciones peligrosas de JavaScript (como eval) al integrarse en Firefox. Es útil para descubrir vulnerabilidades DOM XSS.

9. ¿Qué permite hacer el complemento de “Postman”?

Permite importar colecciones de Postman desde archivos o URLs y reemplaza variables definidas automáticamente. Tiene soporte en UI, API y línea de comandos.

10. ¿Qué función cumple el complemento de “Plug-n-Hack”?

Permite conectar ZAP con navegadores (como Firefox) para interceptar eventos del cliente, fuzzear mensajes DOM y controlar ZAP desde el navegador. Se basa en inyectar JS en la respuesta HTTP.

Respuestas a los 10 ejercicios prácticos

1. Instalar Paquete Pentester

  • Ve a “Administrar complementos” → pestaña Marketplace.
  • Busca “Pentester” → Instalar.
  • Verifica la instalación en la pestaña «Instalados».

2. Marcar contenido basado en datos

  • Haz clic derecho en el nodo de la ruta con datos → “Marcar como contexto” → “Nodo basado en datos”.
  • Configura el nombre del nodo como “empresa”, “usuario”, etc.

3. Configurar rastreador de errores

  • Herramientas → Opciones → Rastreador de errores.
  • Agrega una cuenta de GitHub.
  • Selecciona una alerta → clic derecho → “Plantear como problema”.

4. Usar “Revisita”

  • Clic derecho en el nodo → “Habilitar Revisita”.
  • Establece un rango de fechas.
  • Navega dentro de ZAP como si el sitio estuviera activo.

5. Importar colección Postman

  • Menú → Importar → “Importar colección de Postman”.
  • Proporciona archivo o URL.
  • Sustituye variables en formato: token=123,host=localhost.

6. Comparar solicitudes

  • Selecciona dos solicitudes en el historial → clic derecho → “Comparar 2 solicitudes”.
  • Se abrirá una ventana resaltando las diferencias.

7. Usar “Retire.js”

  • Ejecuta un escaneo pasivo sobre una app que incluya JS.
  • Ve a la pestaña “Alertas” → Filtra por ID 10003.
  • Examina los paquetes JS detectados y su riesgo.

8. Generar y analizar tokens

  • Selecciona una solicitud con un token → clic derecho → “Generar tokens”.
  • Elige token → ZAP enviará múltiples solicitudes y mostrará resultados en pestaña “Generación de tokens”.

9. Añadir cargas útiles personalizadas

  • Herramientas → Opciones → Cargas útiles personalizadas.
  • Botón “Agregar múltiples cargas útiles” → selecciona archivo .txt (una carga por línea).
  • Asócialas a la categoría correcta.

10. Definir parámetro estructural

  • Asigna un contexto a tu app.
  • Opciones → “Estructura del contexto de la sesión”.
  • Agrega page (o similar) como parámetro estructural.
  • ZAP reorganizará el árbol para mostrar la estructura lógica correctamente.

 

Despedida — qué te llevas y cómo te potencia como hacker

Ahora sabes encontrar, instalar y orquestar add-ons del Marketplace para que ZAP se adapte a cada objetivo: desde ampliar reglas y diccionarios, importar colecciones y visualizar flujos modernos, hasta etiquetar, comparar, generar SBOMs y abrir issues automáticos.

Esto te convierte en un/a hacker más eficiente y reproducible: reduces tiempo de análisis, mejoras cobertura técnica, priorizas mejor y entregas resultados accionables para desarrollo y cumplimiento. Mantén siempre prácticas responsables y documenta tu configuración: tu stack de add-ons será tu ventaja competitiva en cada evaluación.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *