Saltar al contenido
Portada » Blog – Laprovittera Carlos » Dominando el tráfico de red con ZAP

Dominando el tráfico de red con ZAP

En este capítulo, Dominando el tráfico de red con ZAP, profundizarás en las capacidades de red de OWASP ZAP: aprenderás a gestionar certificados (CA raíz, certificados emitidos y certificados de cliente PKCS#11/PKCS#12), configurar proxies y servidores locales, definir exclusiones y reglas de limitación de velocidad, y usar las opciones de conexión (timeouts, DNS, TLS/ALPN, proxies HTTP/SOCKS). También veremos el Requester —la herramienta para editar y reenviar peticiones manualmente—, el sistema de puntos de interrupción para interceptar y manipular tráfico, y el soporte completo de WebSockets (captura, puntos de interrupción, fuzzing y scripting).

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. Todo esto es imprescindible para un hacker ético porque te da control total sobre el flujo de tráfico entre cliente y servidor: podrás reproducir peticiones complejas, testar autenticaciones mutuas (mTLS), inspeccionar canales bidireccionales (WebSockets) y realizar ataques controlados sin depender del navegador. Dominar estas funciones te permitirá descubrir fallos que pasan desapercibidos con herramientas más superficiales.

Table of Contents

Dominando el Tráfico de Red con OWASP ZAP

De la Interceptación Pasiva a la Manipulación Experta del Tráfico. Una guía de referencia para hackers éticos, pentesters y desarrolladores de seguridad que buscan un control absoluto sobre la comunicación entre cliente y servidor. ¿Por Qué Obsesionarse con el Tráfico? Para un hacker ético, el control total sobre el flujo de tráfico es la diferencia entre un análisis superficial y el descubrimiento de vulnerabilidades críticas. Te permite:

Reproducir peticiones complejas que el navegador no permite manipular.

Testear autenticaciones avanzadas como la mutua (mTLS).

Inspeccionar y atacar canales bidireccionales como los WebSockets.

Ejecutar ataques controlados con una precisión quirúrgica, sin depender del navegador.

«Dominar estas funciones te permitirá descubrir fallos que pasan desapercibidos con herramientas más superficiales.»

El Corazón del MITM: Tu Propia Autoridad Certificadora

Para descifrar el tráfico HTTPS, ZAP actúa como un intermediario (Ml TM). Genera su propio Certificado de CA Raíz para firmar certificados de servidor «al vuelo» para cada dominio que visitas.

Pro-Tip

Cada certificado de CA raíz generado por ZAP incluye un identificador único (hash del nombre de usuario y directorio) para que puedas identificar tu propio certificado en entornos compartidos.

Advertencia de Seguridad Crítica

Instala la CA Raíz de ZAP únicamente en entornos de prueba seguros! Cualquiera con acceso a este certificado raíz puede realizar ataques MITM en tu sistema.

Dominando el mTLS con Certificados de Cliente

Para aplicaciones que requieren autenticación mutua (mTLS), el cliente debe presentar su propio certificado al servidor. ZAP puede gestionar este proceso.

Congelando el Tiempo: Manipulación en Vivo con Puntos de Interrupción

Un punto de interrupción detiene una petición (antes de enviarla al servidor) o una respuesta (antes de enviarla al navegador), permitiéndote modificarla en la pestaña Interrumpir.

El Taller del Artesano: Creación y Reenvío de Peticiones con el Requester

La pestaña ‘Solicitante’ (Requester) permite crear, editar y reenviar peticiones HTTP/S manualmente, ya sea desde cero o modificando una existente Ctrl+W o clic derecho > ‘Abrir en la pestaña derecho > ‘Abrir en en la pestaña Solicitante…)

Características Clave para el Pentester

Utilizar la sesión de seguimiento actual e Seguir redirección

Actualizar la longitud del contenido / Actualizar encabezado de host

Regenerar token anti-CSRF

Vistas Flexibles: Paneles divididos o combinados para encabezados/cuerpo, y vistas de petición/respuesta apiladas o lado a lado.

Más Allá de HTTP: Interceptando y Manipulando WebSockets

ZAP gestiona el ciclo de vida completo de las comunicaciones WebSocket, desde el handshake HTTP inicial hasta el cierre del canal.

Capacidades Clave en la Pestaña ‘WebSockets’

Visibilidad: Muestra todos los mensajes WebSocket entrantes y salientes en tiempo real.

Filtrado por Canal: Aísla la comunicación de un canal WebSocket específico para un análisis limpio.

Puntos de Interrupción: Establece breakpoints en mensajes WebSocket basados en opcodes o patrones de contenido.

Fuzzing: Envía cargas útiles inesperadas o malformadas para descubrir vulnerabilidades.

Scripting y Escaneo Pasivo: Utiliza scripts para analizar pasivamente el tráfico o modificar mensajes sobre la marcha.

Ajuste Fino del Proxy: Control Total sobre las Conexiones Entrantes

Ubicación: ‘Opciones > Servidores locales/proxies’

Servidores/Proxies Adicionales: Configura ZAP para que escuche en múltiples direcciones IP y puertos simultáneamente. Ideal para testear aplicaciones móviles en una red Wi-Fi mientras se analiza el backend desde una conexión cableada.

Eliminar Encabezado ‘Accept-Encoding’: Una opción crucial. Fuerza al servidor a enviar respuestas sin comprimir (sin gzip, br, etc.). Actívala para evitar que ZAP no pueda analizar respuestas con codificaciones no soportadas.

Paso a través (Passthrough): Define dominios/lPs cuyo tráfico pasará a través de ZAP sin ser desencriptado. Más eficiente que las exclusiones para dominios irrelevantes o que usan certificate pinning (ej. .*/google//.com)

Proxy Transparente:  ZAP puede configurarse como un proxy transparente, capturando el tráfico de aplicaciones que no tienen configuración de proxy.

iptables -t nat -A OUTPUT -p tcp –dport 443 -j DNAT –to-destination <ZAP_IP> : <ZAP_PORT>

Automatización y Escalabilidad: La API de Red al Mando

IBM Plex Sans: Casi todas las funciones de red de ZAP son accesibles a través de su API, permitiendo la automatización de la configuración y la integración en flujos de trabajo de CI/CD.

Ejemplos de Endpoints de la API Potentes


Gestión por Línea de Comandos (CLI)

También se pueden gestionar certificados y configuración del proxy principal al iniciar ZAP.

-certload <file> : Carga un certificado CA raíz.

-certfulldump <file> : Exporta el certificado CA raíz y la clave privada.

-host <host> y -port <port> : Sobrescriben la configuración del proxy principal.

Conclusiones y Prácticas Esenciales

1. Visibilidad es Poder: La CA Raíz de ZAP es la llave para desencriptar y analizar el tráfico HTTPS. Instálala solo en entornos seguros.

2. Intercepta con Precisión: Usa puntos de interrupción personalizados en lugar de globales para enfocarte en peticiones específicas y ser más eficiente.

3. El Requester es tu Mejor Amigo: Domina la opción «Utilizar la sesión de seguimiento actual» para realizar pruebas manuales realistas y efectivas.

4. No Olvides los WebSockets: La comunicación en tiempo real es un vector de ataque creciente. ZAP te da las herramientas para analizarlo.

5. Automatiza para Escalar: Integra ZAP en tus scripts y pipelines usando la API para una seguridad continua. 

Complemento de red

Un complemento que proporciona capacidades de red básicas.

Opciones

El complemento de red proporciona las siguientes pantallas de opciones:

Certificados de clientePermite configurar los certificados de cliente, PKCS#11 y PKCS#12.
ConexiónPermite configurar la conexión.
Exclusiones globalesPermite configurar las exclusiones globales.
Servidores locales/proxiesPermite administrar y configurar los servidores/proxies locales.
Límite de velocidadPermite configurar la limitación de velocidad para dominios y hosts.
Certificados de servidorPermite administrar y configurar el certificado CA raíz y los certificados emitidos.

Certificados de cliente

Esta pantalla permite agregar un certificado de cliente para probar aplicaciones protegidas con SSL mutuo. Tras agregar el certificado, puede activarse en la pestaña Almacén de claves. A diferencia de otras pantallas de opciones, los cambios realizados en el almacén de claves no se deshacen al cerrar el cuadro de diálogo Opciones.

Usar certificado

Permite agregar y utilizar el certificado activo.

PKCS#12

Esta pestaña le permite agregar un certificado PKCS#12 al almacén de claves.

Archivo

La ruta del sistema de archivos al archivo PKCS#12.

Contraseña

La contraseña para desbloquear los certificados. No se admiten archivos PKCS#12 con contraseñas vacías.

Configuración de la tienda

Permite almacenar la configuración PKCS#12 en el archivo de configuración. Si se almacena, ZAP cargará los certificados automáticamente y activará el primer certificado disponible.

PKCS#11

Esta pestaña le permite agregar un certificado PKCS#11 al almacén de claves.

Conductor

El controlador para acceder al certificado PKCS#11.

Administrar…

Permite agregar, modificar y eliminar los controladores disponibles.

Utilice el índice de lista de ranuras

Indica que se debe utilizar el índice de lista de ranuras configurado del controlador en lugar de la ranura.

Almacén de claves

Esta pestaña le permite ver los almacenes de claves agregados y sus certificados, y activarlos.

Certificados de servidor

Esta pantalla permite administrar y configurar el certificado CA raíz y los certificados emitidos. ZAP permite descifrar  conexiones SSL de forma transparente. Para ello, ZAP debe cifrar cada solicitud antes de enviarla al servidor y descifrar cada respuesta. Sin embargo, el navegador ya realiza esta acción. Por lo tanto, la única forma de descifrar o interceptar la transmisión es mediante un intermediario.

 

Descripción general

En resumen, todos los datos enviados y recibidos del servidor se cifran y descifran mediante el certificado del servidor original dentro de ZAP. De esta forma, ZAP reconoce el texto plano. Para establecer una sesión protegida por SSL desde su navegador, ZAP utiliza su propio certificado. Este es el que usted puede crear. Todos los certificados creados por ZAP se firmarán con el mismo nombre de servidor. En el ejemplo anterior, ZAP creará un certificado para el nombre del servidor www.example.com. De esta forma, su navegador realizará el cifrado SSL habitual.

Certificado de CA raíz

Imagina que visitas varios sitios web protegidos con SSL. Cada vez que tu navegador se conecta a uno de ellos, se crea un nuevo certificado SSL. Sin embargo, nadie confía en estos certificados (ya que ZAP los creó automáticamente). En otras palabras, tu navegador no los aceptará. Quizás estés familiarizado con estas situaciones, cuando tu navegador indica un error de certificado, pero puedes crear manualmente una regla de excepción para ese servidor.

Cada certificado creado por ZAP se encuentra en la cadena de confianza directa del certificado de la CA raíz de ZAP. (Para más detalles sobre la cadena de confianza, usa tu buscador favorito ;-)). Esto significa que tú (tu navegador) solo tienes que confiar en la CA raíz de ZAP una vez, y cualquier certificado posterior se confiará automáticamente. En otras palabras, una vez que hayas añadido el certificado de la CA raíz de ZAP a tu lista de CA raíz de confianza, tu navegador no reconocerá al intermediario.

Nota:

En iOS 10.3 y posteriores, también debe habilitar la confianza plena para el certificado raíz: Vaya a Ajustes > General > Acerca de > Ajustes de confianza del certificado. En «Habilitar confianza plena para certificados raíz», active la confianza para el certificado.

Generar

Al ejecutar ZAP por primera vez, se generará un certificado de CA raíz exclusivamente para usted. Si no utiliza la función de inicio del navegador, deberá instalarla en su navegador o aplicación cliente HTTP. Consulte la sección de instalación para obtener más información. El certificado de CA raíz generado tiene una validez predeterminada de un año. Transcurrido ese período, deberá crear uno nuevo. Cada certificado CA raíz generado tiene una resistencia de 2048 bits (RSA con SHA1).

Cada certificado de CA raíz generado comienza con el número de serie «1» y Cada certificado de CA raíz generado consta de los siguientes identificadores:

CN = Zed Attack Proxy Root CA

L = 87b77fe834b0a301

O = ZAP Root CA

OU = ZAP Root CA

C = XX

Como puede ver, hay un identificador de ubicación (L), que es simplemente un número hexadecimal. Este número se compone de dos códigos hash de 32 bits: el nombre del usuario y su directorio personal. De esta forma, puede identificar su propio certificado al usar varias instalaciones. Sin embargo, nadie podrá averiguar su nombre a partir de este código hash.

Importar

Si utiliza varias instalaciones de ZAP y desea usar el mismo certificado de CA raíz, puede importarlo. Simplemente use una instalación de ZAP para generar un certificado de CA raíz. Copie el archivo ‘config.xml’ del directorio de inicio de ZAP a la PC donde desea utilizar el mismo certificado y presione ‘importar’ para importarlo. Alternativamente puede utilizar las opciones de la línea de comando :

  • -certfulldump <ruta> para volcar el certificado de una instancia ZAP
  • -certload <ruta> para cargar el certificado en otra instancia ZAP

También puede importar certificados almacenados en archivos pem siempre que incluyan tanto el certificado como la clave privada sin cifrar en el siguiente formato:

—–BEGIN CERTIFICATE—–

MIIC9TCCAl6gAwIBAgIJANL8E4epRNznMA0GCSqGSIb3DQEBBQUAMFsxGDAWBgNV

BAoTD1N1cGVyZmlzaCwgSW5jLjELMAkGA1UEBxMCU0YxCzAJBgNVBAgTAkNBMQsw

CQYDVQQGEwJVUzEYMBYGA1UEAxMPU3VwZXJmaXNoLCBJbmMuMB4XDTE0MDUxMjE2

MjUyNloXDTM0MDUwNzE2MjUyNlowWzEYMBYGA1UEChMPU3VwZXJmaXNoLCBJbmMu

MQswCQYDVQQHEwJTRjELMAkGA1UECBMCQ0ExCzAJBgNVBAYTAlVTMRgwFgYDVQQD

Ew9TdXBlcmZpc2gsIEluYy4wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOjz

Shh2Xxk/sc9Y6X9DBwmVgDXFD/5xMSeBmRImIKXfj2r8QlU57gk4idngNsSsAYJb

1Tnm+Y8HiN/+7vahFM6pdEXY/fAXVyqC4XouEpNarIrXFWPRt5tVgA9YvBxJ7SBi

3bZMpTrrHD2g/3pxptMQeDOuS8Ic/ZJKocPnQaQtAgMBAAGjgcAwgb0wDAYDVR0T

BAUwAwEB/zAdBgNVHQ4EFgQU+5izU38URC7o7tUJml4OVoaoNYgwgY0GA1UdIwSB

hTCBgoAU+5izU38URC7o7tUJml4OVoaoNYihX6RdMFsxGDAWBgNVBAoTD1N1cGVy

ZmlzaCwgSW5jLjELMAkGA1UEBxMCU0YxCzAJBgNVBAgTAkNBMQswCQYDVQQGEwJV

UzEYMBYGA1UEAxMPU3VwZXJmaXNoLCBJbmMuggkA0vwTh6lE3OcwDQYJKoZIhvcN

AQEFBQADgYEApHyg7ApKx3DEcWjzOyLi3JyN0JL+c35yK1VEmxu0Qusfr76645Oj

1IsYwpTws6a9ZTRMzST4GQvFFQra81eLqYbPbMPuhC+FCxkUF5i0DNSWi+kczJXJ

TtCqSwGl9t9JEoFqvtW+znZ9TqyLiOMw7TGEUI+88VAqW0qmXnwPcfo=

—–END CERTIFICATE—–

—–BEGIN PRIVATE KEY—–

MIICXgIBAAKBgQDo80oYdl8ZP7HPWOl/QwcJlYA1xQ/+cTEngZkSJiCl349q/EJV

Oe4JOInZ4DbErAGCW9U55vmPB4jf/u72oRTOqXRF2P3wF1cqguF6LhKTWqyK1xVj

0bebVYAPWLwcSe0gYt22TKU66xw9oP96cabTEHgzrkvCHP2SSqHD50GkLQIDAQAB

AoGBAKepW14J7F5e0ppa8wvOcUU7neCVafKHA4rcoxBF8t+P7UhiMVfn7uQiFk2D

K8gXyKpLcEdRb7K7CI+3i8RkoXTRDEZU5XPMJnZsE5LWgNQ+pi3HwMEdR0vD2Iyv

vIH3tq6mNKgDu+vozm8DWsEP96jrhVbo1U1rzyEtX46afo79AkEA/VXanGaqj4ua

EsqfY6n/7+MTm4iPOM7qfoyI4EppJXZklc/FbcV2lAjY2Jl9U6X7WnqCPn+/zg44

6lKWTnhAawJBAOtmi6nw8WjY6uyXZosE/0r4SkSSo20EJbBCJcgdofKT+VCGB4hp

h6XwGdls0ca+qa5ZE1a196dpwwVre0hm88cCQQDrUm3QbHmw/39uRzOJs6dfYPKc

vlwz69jdFpQqrFRBjVlf4/FDx3IfjpxHj0RgiEUUxcnoXmh/8qwh1fdzCrbjAkB4

afg/chTLQUrKw5ecvW2p9+Blu20Fsv1kcDHLb/0LjU4XNrhbuz+8TlmqstOMCrPZ

j48o5+RLKvqrpxNlMeS5AkEA6qIdW/yp5N8b1j2OxYZ9u5O//BvspwRITGM60Cps

yemZE/ua8wm34SKvDHf5uxcmofShW17PLICrsLJ7P35y/A==

—–END PRIVATE KEY—–

Y sí, ese ejemplo funcionará: ¡es el certificado Superfish!

Vista

En el cuadro de diálogo de opciones de ZAP, verá el certificado en formato PEM. La opción «Ver» intenta usar la herramienta de visualización predeterminada del sistema para archivos «.CER». En Windows, esto suele ocurrir al exportar el certificado y hacer doble clic en él.

Ahorrar

En el cuadro de diálogo de opciones de ZAP, verá los bytes sin procesar (codificados en hexadecimal) del certificado. Muchos programas utilizan este formato simple para importar y exportar. Al hacer clic en Guardar, estos bytes se guardan en el disco. Esto equivale a seleccionar todo y copiar al portapapeles con Ctrl+C para guardarlo en un nuevo archivo .CER (que es texto simple, como se ve en el cuadro de diálogo).

Certificados emitidos

Cada instancia de ZAP usa su propio certificado raíz. Por supuesto, puede importar certificados raíz para usarlos en varias máquinas. Durante la ejecución, se creará un subcertificado cada vez que se solicite un recurso HTTPS. Esto significa que el certificado de la CA raíz se utiliza como emisor.

  • Los certificados emitidos tienen una validez, por defecto, de 368 días.
  • Los certificados emitidos tienen una seguridad de 2048 bits (RSA con SHA1).
  • Los certificados emitidos tienen un número de serie aleatorio. Constan de los siguientes identificadores:

CN = www.example.com

E = zaproxy-develop@googlegroups.com

C = XX

O = ZAP

OU = Zed Attack Proxy Project

Nota al margen: Cada vez que inicia ZAP, se genera internamente un desplazamiento aleatorio del número de serie. Los certificados emitidos usarán este desplazamiento más un contador creciente. Por ejemplo, el primer certificado emitido tiene el número de serie 2314, el segundo 2315, el tercero 2316 y así sucesivamente.

La razón de esto es simple: los navegadores también almacenan certificados en caché. Cuando reinicia ZAP pero no reinicia su navegador, podría suceder que el navegador vea el mismo certificado pero con un número de serie diferente. Al final, el navegador se quejaría y rechazaría el certificado. Al usar el desplazamiento aleatorio (número aleatorio interno de 48 bits), las probabilidades son de 1 a 281.474.976.710.656 de que al reiniciar ZAP, el desplazamiento del número de serie sea diferente. Entonces, en el raro caso de que descubra que su navegador se queja de un número de serie roto dentro del certificado, simplemente reinicie su navegador 😉 .

Punto de distribución de CRL

A veces, un certificado válido no es suficiente para tener un TLS MITM funcional. Por ejemplo, libcurlen Windows, se usa schannelcomo backend, que, de forma predeterminada, comprobará si se proporciona un Punto de Distribución de Lista de Revocación de Certificados (CRL) válido en el certificado e intentará contactar y recuperar esta CRL. Con suerte, el binario es detallado y el mensaje de error será bastante claro:

PS C:\Users\alice> curl.exe https://ifconfig.me/

curl: (35) schannel: next InitializeSecurityContext failed: Unknown error (0x80092012) – The revocation function was unable to check revocation for the certificate.

Esto también puede manifestarse como una falla del protocolo de enlace TLS a nivel de red:

6 0.023470 192.168.56.104 1.2.3.4 TLSv1.2 273 Client Hello

8 0.033465 1.2.3.4 192.168.56.104 TLSv1.2 144 Server Hello

11 0.033875 1.2.3.4 192.168.56.104 TLSv1.2 527 Certificate

13 0.084581 1.2.3.4 192.168.56.104 TLSv1.2 401 Server Key Exchange, Server Hello Done

16 0.158961 1.2.3.4 192.168.56.104 TLSv1.2 61 Alert (Level: Fatal, Description: Handshake Failure)

Esta opción permite especificar un punto de distribución de CRL que se añadirá a cada certificado generado. Obviamente, es necesario crear una autoridad de certificación raíz personalizada, por ejemplo, usando  https://github.com/kaysond/spki , un contenedor para OpenSSL que genera y administra una PKI simple, adecuada para implementaciones pequeñas, compatible con CRL y OCSP, y que pone la CRL a disposición del cliente víctima, por ejemplo, usando un pequeño servidor HTTP.

Instalar el certificado CA raíz ZAP

Esto ya lo vimos ampliamente en el primer capítulo así que solo lo repasaremos. Cualquier cliente HTTPS que desee utilizar debe reconocer el certificado de CA raíz ZAP como «certificado raíz de confianza». Normalmente, debe instalar manualmente el certificado ZAP en la lista de certificados raíz de confianza de su navegador.

Windows

La forma más sencilla es hacer clic en «Ver» y seleccionar «Instalar certificado». También puede guardar el certificado generado y hacer doble clic en el archivo .CER. Al hacerlo, se abrirá el asistente habitual de Windows para la instalación de certificados. En este asistente, seleccione manualmente el almacén de certificados. NO permita que Windows lo seleccione automáticamente. Seleccione «Certificados raíz de confianza» como almacén y finalice el asistente.

También puede copiar el archivo guardado e instalarlo en otras computadoras según sea necesario.

Después de la instalación exitosa, puede verificar el certificado.

  1. Ir a opciones de Internet
  2. Contenido de la pestaña
  3. Haga clic en certificados
  4. Haga clic en la pestaña Certificados raíz de confianza
  5. La CA raíz ZAP debería estar allí

Mozilla Firefox

Firefox usa su propio almacén de certificados. Por eso, debes importarlo dos veces al usar ambos navegadores en Windows. La instalación y la validación posterior se realizan en el mismo cuadro de diálogo de preferencias:

  1. Ir a Preferencias
  2. Pestaña Avanzada
  3. Pestaña Criptografía/Certificados
  4. Haga clic en Ver certificados
  5. Haga clic en la pestaña Autoridades
  6. Haga clic en Importar y elija el archivo zap_root_ca.cer guardado
  7. En el asistente, seleccione confiar en este certificado para identificar sitios web (marque las casillas)
  8. Finalizar el asistente

Riesgos

¡Atención, existen riesgos!

Al agregar certificados de CA raíz autogenerados a su lista de certificados raíz de confianza, cualquier persona con el certificado raíz puede introducir datos de forma ilegal en su sistema (navegador). En otras palabras, si no realiza pruebas en un entorno seguro, sino en equipos productivos, tenga en cuenta que está abriendo un vector de ataque adicional a su sistema.

Conexión

General

Esta pestaña le permite configurar las opciones generales de conexión.

Tiempo de espera (en segundos)

Permite configurar el tiempo de espera de conexión y lectura. Un tiempo de espera más alto permite probar aplicaciones más lentas.

Valor predeterminado: 20.

Agente de usuario predeterminado

El agente de usuario que se debe utilizar al crear mensajes HTTP (por ejemplo, mensajes de araña o solicitudes CONNECT al proxy HTTP).

Usar estado HTTP global

  • Permite el uso de un estado HTTP global para el seguimiento de cookies y autenticación HTTP.
  • Esta opción debe estar seleccionada para habilitar la opción «Usar sesión de seguimiento actual» en los diálogos del Editor de Solicitudes Manuales.
  • El seguimiento de sesiones garantiza que todas las solicitudes se envíen con los detalles más recientes de la sesión.
  • Por ejemplo, puede registrar una sesión iniciada con un usuario y luego cerrar sesión e iniciar sesión con otro.
  • Si reenvía una solicitud de la primera sesión sin seguimiento de sesiones, se utilizarán las cookies de la primera sesión.
  • Si reenvía la misma solicitud con seguimiento de sesiones, se utilizarán las cookies de la segunda sesión.

Valor predeterminado: unselected.

DNS

Consultas exitosas TTL (en segundos)

Define durante cuánto tiempo se deben almacenar en caché las consultas DNS exitosas:

  • Número negativo, caché para siempre;
  • Cero, deshabilita el almacenamiento en caché;
  • Número positivo, la cantidad de segundos que se almacenarán en caché las consultas.

Predeterminado: 30.

Nota: Los cambios se aplican después de reiniciar.

Protocolos de seguridad

Permite elegir las versiones de SSL/TLS habilitadas para conexiones salientes (por ejemplo, a servidores). Se debe habilitar al menos una versión; las versiones no compatibles con JRE se desmarcarán y deshabilitarán.

La opción SSLv2Hello debe seleccionarse junto con al menos una versión de SSL/TLS.

Valor predeterminado: Se admiten todos los protocolos.

Habilitar la renegociación SSL/TLS no segura

Permite renegociaciones SSL/TLS inseguras ( CVE-2009-3555 ) para compatibilidad con servidores antiguos.

Nota: Esta opción debe configurarse antes de establecer cualquier conexión HTTPS; podría ser necesario reiniciar ZAP.

Valor predeterminado: unselected.

Proxy HTTP

Esta pestaña permite configurar un proxy HTTP saliente. Esto suele ser necesario en entornos corporativos.

Activado

Habilita el uso del proxy HTTP configurado.

Valor predeterminado: unselected.

Anfitrión

El nombre de host o la dirección del proxy HTTP.

Valor predeterminado: localhost.

Puerto

El puerto del proxy HTTP.

Predeterminado: 8090.

Autenticar

Habilita el uso de las credenciales de autenticación, para autenticarse en el proxy HTTP.

Reino

El ámbito de autenticación.

Predeterminado: ninguno.

Nombre de usuario

El nombre de usuario. Es obligatorio.

Predeterminado: ninguno.

Contraseña

La contraseña.

Predeterminado: ninguna.

Nota: Se almacena en texto sin cifrar en el archivo de configuración, si está permitido.

Contraseña de la tienda

Permite almacenar la contraseña en el archivo de configuración. Si no se permite, ZAP solicita la contraseña durante el inicio, pero se puede cambiar en este panel.

Valor predeterminado: selected.

Exclusiones

Los hosts que deben excluirse del proxy HTTP. Se hosttrata de una expresión regular que coincide con el nombre de host solicitado.

Proxy SOCKS

Esta pestaña le permite configurar un proxy SOCKS saliente, por defecto la configuración del proxy SOCKS se aplica a todas las conexiones realizadas por ZAP, teniendo prioridad sobre el proxy HTTP.

Las propiedades del sistema proxy SOCKS (p. ej socksProxyHost., socksProxyPort) prevalecen sobre las configuraciones persistentes para garantizar la compatibilidad con versiones anteriores de ZAP. ZAP usará y mostrará los valores de las propiedades del sistema definidos al inicio; las configuraciones aún se pueden modificar en este panel.

Nota: Las direcciones de bucle invertido (por ejemplo localhost, , 127.0.01, ::1) no se envían a través del proxy SOCKS, las conexiones se realizarán directamente.

Activado

Habilita el uso del proxy SOCKS configurado.

Valor predeterminado: unselected, a menos que se definan las propiedades del sistema del proxy SOCKS, en cuyo caso es selected.

Anfitrión

El nombre o la dirección del host del proxy SOCKS.

Valor predeterminado: localhost.

Puerto

El puerto del proxy SOCKS.

Valor predeterminado: 1080.

Versión

La versión del proxy SOCKS.

Valor predeterminado: 5.

Utilice el DNS de SOCKS

Si el proxy SOCKS debe resolver los nombres de host. Requiere un proxy SOCKS versión 5.

Esto podría provocar fallos de conexión si el proxy SOCKS no puede resolver el nombre de host (por ejemplo, al usar nombres definidos en un hostsarchivo).

Valor predeterminado: selected.

Autenticación

Los siguientes campos permiten configurar las credenciales de autenticación para el proxy SOCKS.

Nombre de usuario

El nombre de usuario.

Predeterminado: ninguno.

Contraseña

La contraseña.

Predeterminado: ninguna.

Nota: Se almacena en texto sin cifrar en el archivo de configuración.

Exclusiones globales

Las URL/dominios que los proxies locales y los escáneres/herramientas deben ignorar.

Esta es la nueva ventana

Límite de velocidad

La función Límite de Velocidad limita la tasa de solicitudes de tráfico HTTP/HTTPS (no web sockets) a hosts o dominios para evitar la sobrecarga o el bloqueo del destino. El límite se aplica mediante un comparador con el host de la solicitud para seleccionar un host individual, un dominio completo o cualquier valor intermedio. Si un host cumple varias reglas, se utiliza la regla con la tasa más restrictiva. Se pueden añadir rápidamente límites para un dominio o host mediante el menú contextual. Abra el menú contextual en un mensaje para añadir una regla que limite por host o dominio. Cada regla está definida por los siguientes campos:

Descripción

Una descripción que permite identificar la regla. Cada regla debe tener una descripción única.

Cadena de coincidencia

La cadena que se usará para identificar los hosts que estarán limitados. Si se trata como una expresión regular, el host debe coincidir completamente. Si la opción «Coincidir con Regex» no está marcada, la cadena de coincidencia se gestiona según las convenciones DNS y si la cadena tiene uno o dos componentes, por ejemplo, «example.com» o «localhost», se obtendrá una coincidencia exacta o componentes adicionales. «host1.example.com» y «sub1.host1.example.com» coincidirán con «example.com». «localhost.localhost» coincidirá con «localhost». Una cadena de coincidencia de «host1.example.com» solo coincidirá con «host1.example.com».

Coincidencia de expresiones regulares

Si se configura, la cadena de coincidencia se tratará como una expresión regular.

Solicitudes por segundo

El número máximo de solicitudes por segundo.

Agrupar por

Cómo agrupar hosts al aplicar la limitación de velocidad. La regla predeterminada limita la velocidad a todos los hosts que cumplen la regla como una sola unidad. El valor de host aplicará el límite de velocidad a cada host individualmente.

Permitir

Si no se configura, la regla no se aplicará.

Panel de estado

Se proporciona un panel de estado para mostrar cómo se limitan las solicitudes a los hosts. Se muestran los siguientes campos:

Grupo

El nombre del host o regla, según la configuración «Agrupar por» de la regla. Si se agrupa por hosts, habrá una fila para cada host.

Regla

El nombre de la regla.

Solicitudes

La cantidad de solicitudes procesadas por la regla para este host o grupo.

Tasa efectiva

La tasa de solicitudes efectiva se basa en la hora de la primera solicitud, la hora de la última solicitud y el número de solicitudes. El valor puede ser inferior al límite de solicitudes, pero nunca superior.

Último

La hora de la última solicitud procesada por la regla.

Servidores locales/proxies

Esta pestaña le permite configurar las direcciones y los puertos en los que ZAP acepta conexiones entrantes.

Proxy principal

De manera predeterminada, ZAP escuchará en una dirección y puerto local y, generalmente, éstas deberían ser la dirección y el puerto que debe configurar su navegador para usar como proxy.

Servidores/proxies adicionales

Puedes agregar tantas direcciones y puertos adicionales como desees para que ZAP escuche. Esto puede ser útil al probar aplicaciones móviles: puedes usar un proxy para la aplicación móvil a través de una interfaz Wi-Fi y, al mismo tiempo, usar el sitio web backend directamente mediante un navegador que usa ZAP emulando un agente de usuario móvil.

Propiedades del servidor/proxy

Tanto el Proxy Principal como los servidores/proxies adicionales permiten configurar las siguientes propiedades.

DIRECCIÓN

La dirección local a la que se vinculará. Todas las direcciones disponibles se identifican automáticamente.

Puerto

El puerto en el que escuchará el servidor/proxy.

Protocolos de seguridad

Permite elegir las versiones de SSL/TLS habilitadas para las conexiones entrantes (por ejemplo, desde navegadores). Se debe habilitar al menos una versión; las versiones no compatibles con JRE se desmarcarán y deshabilitarán. La opción SSLv2Hello debe seleccionarse junto con al menos una versión de SSL/TLS.

ALPN

Permite habilitar y seleccionar los protocolos de aplicación negociados durante un protocolo de enlace TLS (extensión ALPN). El protocolo recurre a HTTP/1.1 si el cliente que establece la conexión no admite ALPN ni ninguno de los protocolos seleccionados.

Modo

Permite especificar si la API debe estar expuesta o si se le debe permitir enviar solicitudes por proxy. Por ejemplo, se puede configurar un servidor que exponga solo la API a direcciones externas (es decir, control remoto) y tenga un proxy solo para direcciones locales.

Detrás de NAT

Indica que el servidor/proxy (ZAP) está protegido por NAT. Al seleccionar esta opción, ZAP intentará determinar la dirección IP pública para detectar y gestionar correctamente las solicitudes con dicha dirección (por ejemplo, para ser atendidas por la API de ZAP). También puede agregar manualmente la dirección IP como alias (consulte la sección «Alias»). Esta opción solo es compatible cuando ZAP se ejecuta en una instancia de AWS EC2. ZAP obtendrá la dirección IP pública de los metadatos de la instancia de AWS EC2.  ZAP debe iniciarse con esta opción habilitada si se requiere acceso a la API, a través de la dirección IP pública:

zap.sh -daemon -port 8080 -host 0.0.0.0 -config network.localServers.mainProxy.behindNat=true

Además, la API debe configurarse para aceptar direcciones IP externas (es decir, la dirección IP desde donde se accede a ZAP).

Eliminar el encabezado de solicitud Accept-Encoding

Permite que el proxy elimine el campo «Accept-Encoding» del encabezado de solicitud, de modo que no se realicen transformaciones de codificación (no compatibles) en la respuesta. Esta opción debe estar siempre habilitada, a menos que se prueben las transformaciones de codificación. Los mensajes codificados con codificaciones no compatibles no se analizarán correctamente (ni con analizadores pasivos ni activos). Codificaciones de contenido compatibles:

  • br, en Linux x64, macOS (Intel y Apple Silicon) y Windows x64
  • deflate
  • gzip

Respuesta de decodificación

Permite que el proxy decodifique automáticamente (p. ej., gzip, deflate) la respuesta. Esta opción es necesaria para aplicaciones que ignoran el campo «Accept-Encoding» del encabezado de solicitud.

Proxy interceptor/transparente

Los proxies locales pueden usarse como proxies de interceptación/transparentes tanto para HTTP como para HTTPS. Para HTTPS, las aplicaciones cliente (por ejemplo, el navegador) deben usar la extensión TLS » Indicación del Nombre del Servidor» . Esto permite configurar redes LAN (o máquinas virtuales) de prueba donde todo el tráfico HTTP y HTTPS se redirige mediante proxy, independientemente de la configuración del software. Por ejemplo, si tiene una máquina Linux que utiliza para realizar pruebas, puede hacer algo como lo siguiente para reenviar todo el tráfico HTTP y HTTPS a un proxy local que escucha en 192.168.0.14:8080:

iptables -t nat -A OUTPUT -p tcp –dport 443 -j DNAT –to-destination 192.168.0.14:8080
iptables -t nat -A OUTPUT -p tcp –dport 80 -j DNAT –to-destination 192.168.0.14:8080

Alias

Permite identificar los servidores/proxies locales con otros nombres (dominio o dirección). Por ejemplo, para acceder a la API ZAP con una dirección IP pública.

Paso a través

Permite configurar las autoridades (dominio/dirección y puerto) que pasarán por ZAP, enviando así los datos sin descifrarlos ni cifrarlos. Esto es útil cuando un cliente tiene un certificado fijo para ciertos hosts o el dominio/los datos son irrelevantes para el objetivo que se está probando. Requiere que el cliente envíe una solicitud CONNECT con la autoridad requerida. authoritySe interpreta como una expresión regular y debe estar presente en la autoridad solicitada. Por ejemplo, para pasar todas las conexiones a example.orgél se puede especificar simplemente example.org, coincidiendo así con cualquier puerto. El uso de transferencia directa es más eficiente que el uso de exclusiones (por ejemplo, Excluir del proxy, URL de exclusión global) cuando todo el tráfico del host no es relevante para las pruebas.

Línea de comandos

El complemento de red admite las siguientes opciones de línea de comandos:

-certloadCarga el certificado CA raíz desde el archivo especificado.
-certpubdumpVuelca el certificado de CA raíz en el archivo especificado, lo cual es adecuado para importar a navegadores.
-certfulldumpVuelca el certificado de CA raíz y la clave privada en el archivo especificado, lo cual es adecuado para importar a ZAP.
-anfitriónReemplaza el host del proxy principal, especificado en el archivo de configuración.
-puertoAnula el puerto del proxy principal, especificado en el archivo de configuración.

Servidores locales/proxies

Cuando ZAP se ejecuta en modo de línea de comandos (es decir, -cmd), solo se inicia el proxy principal, por ejemplo, para realizar pruebas de integración de proxy o acceder a la API de ZAP. Si no se puede iniciar el proxy principal en modo de línea de comandos o en modo demonio (es decir, -daemon), ZAP se cierra. Al ejecutarse con la interfaz gráfica de usuario, se muestra una advertencia.

API de red

Se agregan las siguientes operaciones a la API:

Comportamiento

  • addAlias ​​(nombre* habilitado): agrega un alias para los servidores/proxies locales.
    • nombre: El nombre del alias.
    • habilitado: El estado habilitado, verdadero o falso.
  • addHttpProxyExclusion (host* habilitado): agrega un host que se excluirá del proxy HTTP.
    • host: El valor del host, una expresión regular.
    • habilitado: El estado habilitado, verdadero o falso.
  • addLocalServer (dirección* puerto* api proxy behindNat decodeResponse removeAcceptEncoding): agrega un servidor/proxy local.
    • dirección: La dirección del servidor/proxy local.
    • puerto: El puerto del servidor/proxy local.
    • api: Si la API ZAP está disponible, verdadero o falso.
    • proxy: si el servidor local debe hacer de proxy, verdadero o falso.
    • behindNat: si el servidor local está detrás de NAT, verdadero o falso.
    • decodeResponse: Si la respuesta debe ser decodificada, verdadero o falso.
    • removeAcceptEncoding: si se debe eliminar el encabezado de solicitud Accept-Encoding, verdadero o falso.
  • addPassThrough (autoridad* habilitada): agrega una autoridad para pasar a través de los servidores proxy locales.
    • autoridad: El valor de la autoridad, puede ser una expresión regular.
    • habilitado: El estado habilitado, verdadero o falso.
  • addPkcs12ClientCertificate (filePath* password* index): agrega un certificado de cliente contenido en un archivo PKCS#12, el certificado se establece automáticamente como activo y se utiliza.
    • filePath: La ruta del archivo.
    • contraseña: La contraseña para el archivo.
    • índice: El índice del certificado en el archivo, predeterminado a 0.
  • addRateLimitRule (descripción* habilitado* matchRegex matchString requestsPerSecond* groupBy*): agrega una regla al limitador de velocidad.
    • Descripción: Una descripción que permite identificar la regla. Cada regla debe tener una descripción única.
    • habilitado: El estado habilitado, verdadero o falso.
    • matchRegex: determina si matchString es una expresión regular o una cadena simple: verdadero o falso.
    • matchString: Una coincidencia de cadena simple se gestiona según las convenciones DNS. Si la cadena tiene uno o dos componentes, si matchRegex es verdadero, se trata de una expresión regular.
    • requestsPerSecond: El número máximo de solicitudes por segundo.
    • groupBy: Cómo agrupar hosts al aplicar la limitación de velocidad: regla o host
  • generateRootCaCert: genera un nuevo certificado CA raíz, utilizado para emitir certificados de servidor.
  • importRootCaCert (filePath*): importa un certificado de CA raíz que se utilizará para emitir certificados de servidor.
    • filePath: La ruta del sistema de archivos al archivo PEM, que contiene el certificado y la clave privada.
  • removeAlias ​​(nombre*): elimina un alias.
    • nombre: El nombre del alias.
  • removeHttpProxyExclusion (host*): elimina una exclusión de proxy HTTP.
    • host: El valor del host.
  • removeLocalServer (dirección* puerto*): elimina un servidor/proxy local.
    • dirección: La dirección del servidor/proxy local.
    • puerto: El puerto del servidor/proxy local.
  • removePassThrough (autoridad*): elimina un paso a través.
    • autoridad: El valor de la autoridad.
  • removeRateLimitRule (descripción*): elimina una regla del limitador de velocidad.
    • descripción: La descripción de la regla.
  • setAliasEnabled (nombre* habilitado): establece si un alias está habilitado o no.
    • nombre: El nombre del alias.
    • habilitado: El estado habilitado, verdadero o falso.
  • setConnectionTimeout (tiempo de espera*): establece el tiempo de espera para lecturas y conexiones.
    • tiempo de espera: el tiempo de espera, en segundos.
  • setDefaultUserAgent (userAgent*): establece el agente de usuario predeterminado.
    • userAgent: El agente de usuario predeterminado.
  • setDnsTtlSuccessfulQueries (ttl*): establece el TTL de las consultas DNS exitosas.
    • TTL: El TTL, en segundos. Un número negativo significa que se almacena en caché indefinidamente. Cero significa que se deshabilita el almacenamiento en caché. Un número positivo significa que las consultas DNS exitosas se almacenarán en caché durante segundos.
  • setHttpProxy (host* puerto* reino nombre de usuario contraseña): establece la configuración del proxy HTTP.
    • anfitrión: El anfitrión, nombre o dirección.
    • puerto: El puerto.
    • reino: El reino de la autenticación.
    • nombre de usuario: El nombre de usuario.
    • contraseña: La contraseña.
  • setHttpProxyAuthEnabled (habilitado*): establece si la autenticación de proxy HTTP está habilitada o no.
    • habilitado: El estado habilitado, verdadero o falso.
  • setHttpProxyEnabled (habilitado*): establece si el proxy HTTP está habilitado o no.
    • habilitado: El estado habilitado, verdadero o falso.
  • setHttpProxyExclusionEnabled (host* enabled*): establece si una exclusión de proxy HTTP está habilitada o no.
    • host: El valor del host.
    • habilitado: El estado habilitado, verdadero o falso.
  • setPassThroughEnabled (autoridad* habilitada): establece si se habilita o no un paso a través.
    • autoridad: El valor de la autoridad.
    • habilitado: El estado habilitado, verdadero o falso.
  • setRateLimitRuleEnabled (descripción*, habilitado*): establece el estado habilitado para una regla de límite de velocidad.
    • descripción: La descripción de la regla.
    • habilitado: El estado habilitado, verdadero o falso.
  • setRootCaCertValidity (validez*): Establece la validez del certificado de CA raíz. Se utiliza al generar un nuevo certificado de CA raíz.
    • Validez: La cantidad de días que el certificado de CA raíz generado será válido.
  • setServerCertValidity (validez*): Establece la validez del certificado del servidor. Se utiliza al generar certificados de servidor.
    • Validez: El número de días que los certificados de servidor generados serán válidos.
  • setSocksProxy (host* puerto* versión useDns nombre de usuario contraseña): establece la configuración del proxy SOCKS.
    • anfitrión: El anfitrión, nombre o dirección.
    • puerto: El puerto.
    • Versión: La versión SOCKS.
    • useDns: si los nombres deben ser resueltos por el proxy SOCKS, verdadero o falso.
    • nombre de usuario: El nombre de usuario.
    • contraseña: La contraseña.
  • setSocksProxyEnabled (habilitado*): establece si el proxy SOCKS está habilitado o no.
    • habilitado: El estado habilitado, verdadero o falso.
  • setUseClientCertificate (use*): establece si se utilizará o no el certificado de cliente activo.
    • uso: El estado de uso, verdadero o falso.
  • setUseGlobalHttpState (use*): establece si se utilizará o no el estado HTTP global.
    • uso: El estado de uso, verdadero o falso.

Vistas

  • getAliases: Obtiene los alias utilizados para identificar los servidores/proxies locales.
  • getConnectionTimeout: Obtiene el tiempo de espera de la conexión, en segundos.
  • getDefaultUserAgent: Obtiene el agente de usuario predeterminado.
  • getDnsTtlSuccessfulQueries: obtiene el TTL (en segundos) de las consultas DNS exitosas.
  • getHttpProxy: Obtiene el proxy HTTP.
  • getHttpProxyExclusions: obtiene las exclusiones del proxy HTTP.
  • getLocalServers: obtiene los servidores/proxies locales.
  • getPassThroughs: obtiene las autoridades que pasarán a través de los proxies locales.
  • getRateLimitRules: obtiene las reglas de límite de velocidad.
  • getRootCaCertValidity: Obtiene la validez del certificado de CA raíz, en días. Se utiliza al generar un nuevo certificado de CA raíz.
  • getServerCertValidity: Obtiene la validez del certificado del servidor, en días. Se utiliza al generar certificados de servidor.
  • getSocksProxy: obtiene el proxy SOCKS.
  • isHttpProxyAuthEnabled: indica si la autenticación de proxy HTTP está habilitada o no.
  • isHttpProxyEnabled: indica si el proxy HTTP está habilitado o no.
  • isSocksProxyEnabled: indica si el proxy SOCKS está habilitado o no.
  • isUseGlobalHttpState: indica si se debe utilizar o no el estado HTTP global.

Otro

  • proxy.pac: proporciona un archivo PAC, que actúa como proxy a través del proxy principal.
  • rootCaCert: Obtiene el certificado de CA raíz utilizado para emitir certificados de servidor. Ideal para importar a aplicaciones cliente (p. ej., navegadores).
  • setProxy (proxy*): establece la configuración del proxy HTTP.
    • proxy: el objeto JSON que contiene la configuración del proxy HTTP.

Atajos

  • proxy.pac: proporciona un archivo PAC, que actúa como proxy a través del proxy principal.
  • setproxy: establece la configuración del proxy HTTP.
    • Cuerpo de la solicitud: el objeto JSON que contiene la configuración del proxy HTTP.

Proxy manipulador intermedio

ZAP es un proxy intermediario. Permite ver todas las solicitudes que se realizan a una aplicación web y todas las respuestas que se reciben. Entre otras cosas, esto le permite ver llamadas AJAX que de otro modo no serían obvias. También puede establecer puntos de interrupción que le permitan cambiar las solicitudes y respuestas sobre la marcha.

Pestaña de solicitud

La pestaña Solicitud muestra los datos enviados por su navegador para la solicitud que ha resaltado en la pestaña Sitios o en la pestaña Historial . El panel superior muestra el encabezado de la solicitud y el panel inferior muestra también todos los datos enviados, por ejemplo, como resultado de una solicitud POST. Los menús desplegables le permiten seleccionar diferentes vistas para el encabezado y el cuerpo de la solicitud.

Esto muestra el encabezado de la solicitud y los datos, ya sea en uno o dos paneles según las opciones elegidas. El menú desplegable «Método» permite alternar entre los métodos HTTP. Tenga en cuenta que, al cambiar el método a POST, los parámetros de la URL se mueven al cuerpo, y al cambiar de POST, los parámetros del cuerpo se mueven a la URL. Los menús desplegables le permiten seleccionar diferentes vistas para el encabezado y el cuerpo de la solicitud.

Menú de clic derecho

Al hacer clic derecho en un nodo aparecerá un menú que le permitirá:

Encontrar… Esto abrirá el cuadro de diálogo Buscar .

Copiar Esto copiará la cadena seleccionada al portapapeles.

Pestaña de respuesta

Esto muestra los datos enviados a su navegador en respuesta a la solicitud que usted envió, ya sea en uno o dos paneles dependiendo de las opciones elegidas. Los menús desplegables le permiten seleccionar diferentes vistas para el encabezado y el cuerpo de la respuesta.

La pestaña Respuesta muestra los datos enviados a su navegador para la solicitud que ha resaltado en la pestaña Sitios o en la pestaña Historial . Los menús desplegables le permiten seleccionar diferentes vistas para el encabezado y el cuerpo de la respuesta. Tenga en cuenta que las imágenes solo se muestran en la pestaña Historial si está seleccionada la bandera ‘Habilitar imagen en historial’ en el menú Ver .

Menú de clic derecho

Al hacer clic derecho en un nodo aparecerá un menú que le permitirá:

Encontrar… Esto abrirá el cuadro de diálogo Buscar .

Copiar Esto copiará la cadena seleccionada al portapapeles.

Complemento Requester

Un complemento que permite editar y enviar mensajes manualmente. De forma predeterminada, proporciona una pestaña de espacio de trabajo y un cuadro de diálogo para mensajes HTTP. Otros complementos pueden construirse sobre la infraestructura proporcionada para admitir sus propios mensajes específicos (por ejemplo, WebSocket).

Pestaña de solicitante

La pestaña Solicitante en el panel del espacio de trabajo, junto a las pestañas estándar «Solicitud» y «Respuesta». La pestaña Solicitante actúa como el cuadro de diálogo del Editor de solicitudes manuales , pero admite tantas subpestañas como necesite. Haga clic con el botón derecho en una solicitud en cualquiera de las otras pestañas de ZAP y seleccione «Abrir en la pestaña Solicitante…» para abrir esa solicitud en una nueva pestaña Solicitante. También puede usar la tecla Control/Comando + «W» para hacer lo mismo a través del teclado. 

Las pestañas están numeradas inicialmente, pero si hace doble clic en la pestaña, se mostrará un cuadro de diálogo que le permitirá cambiarle el nombre. Cada pestaña tiene un pie de página que permite encontrar cadenas en la solicitud y respuesta HTTP. El pie de página muestra el número de coincidencias sin distinguir entre mayúsculas y minúsculas y permite recorrerlas. El pie de página también muestra el tiempo empleado en la solicitud, la longitud del cuerpo y la longitud total.

Pantalla dividida para encabezado y cuerpo

Esto cambia la visualización de modo que se utilizan paneles separados para el encabezado y el cuerpo.

Pantalla combinada para encabezado y cuerpo

Esto cambia la visualización para que el encabezado y el cuerpo se muestren en un solo panel.

Utilizar la sesión de seguimiento actual

Consulte la opción ‘Usar estado HTTP global’ en la pantalla Opciones > Red > Opciones de conexión.

🍪 Aceptar cookies

Esta opción controla si las cookies encontradas deben añadirse a las solicitudes posteriores. Por ejemplo, si se envía una solicitud que genera una respuesta con encabezados Set-Cookie, ¿deberían añadirse esos valores de cookies a los intentos de envío posteriores desde el cuadro de diálogo Solicitud manual?

Seguir redirección

Si se selecciona, sigue automáticamente cualquier redirección enviada al navegador.

Actualizar la longitud del contenido

De forma predeterminada, ZAP actualizará (o añadirá) automáticamente el encabezado Content-Length para que coincida con el tamaño de los datos enviados. Si esta opción no está seleccionada, ZAP no actualizará el encabezado, lo que le permitirá especificar cualquier valor.

Actualizar encabezado de host

De forma predeterminada, ZAP actualizará (o añadirá) automáticamente el encabezado del host para que coincida con la URL especificada. Si esta opción no está seleccionada, ZAP no actualizará el encabezado, lo que le permitirá especificar cualquier valor.

Regenerar token anti-CSRF

Si se selecciona, se regeneran automáticamente los tokens anti-CSRF, si los hay. Actualmente, solo se admite en el cuerpo del mensaje y requiere que la extensión anti-CSRF esté habilitada.

Nombres de encabezado en minúsculas

Esto convertirá en minúsculas todos los nombres de encabezado, haciéndolos compatibles con HTTP/2.

Pestañas de Solicitud y Respuesta una al lado de la otra

Esto cambia la visualización para que las pestañas de solicitud y respuesta estén una al lado de la otra. Esto aumenta la información que se puede mostrar, pero significa que no se pueden ver la solicitud y la respuesta al mismo tiempo.

Solicitud mostrada arriba Respuesta

Esto cambia la visualización para que el panel de solicitud se muestre encima del panel de respuesta. Esto reduce la información que se puede mostrar, pero permite ver tanto la solicitud como la respuesta simultáneamente.

Paneles de solicitud y respuesta uno al lado del otro

Esto cambia la visualización para que el panel de solicitud se muestre a la izquierda del panel de respuesta. Esto reduce la información que se puede mostrar, pero permite ver tanto la solicitud como la respuesta al mismo tiempo.

Puntos de interrupción

Los puntos de interrupción se pueden usar para interceptar (bloquear) las solicitudes antes de que se envíen al servidor o las respuestas antes de que el navegador las interprete. Esto permite modificarlas antes de que se envíen o impedir que se envíen. Para activar los puntos de interrupción globalmente e interceptar todas las solicitudes, haga clic en el botón «Interrumpir» de la barra de herramientas:

Una vez activados, las solicitudes interceptadas aparecerán en la pestaña «Interrumpir». A continuación, puede editarlas directamente desde esta pestaña y usar los siguientes botones para transferir (o bloquear) la solicitud.

Para activar un punto de interrupción específico en un perímetro, esto se puede hacer desde el panel Sitios o mediante el botón «Agregar un punto de interrupción HTTP personalizado» de la barra de herramientas:

Luego, es posible seleccionar rutas o solicitudes específicas que coincidan con ciertos criterios mediante una expresión regular:

Pestaña Puntos de interrupción

La pestaña Puntos de interrupción le muestra todos los puntos de interrupción que ha establecido. Los puntos de interrupción se pueden configurar a través de las pestañas Historial y Sitios , así como mediante el botón «Agregar un punto de interrupción HTTP personalizado» en la barra de herramientas de nivel superior.

Un punto de interrupción le permite interceptar una solicitud de su navegador y modificarla antes de que se envíe a la aplicación web que está probando. También puedes cambiar las respuestas recibidas de la aplicación. La solicitud o respuesta se mostrará en la pestaña Salto , que le permite cambiar los campos deshabilitados u ocultos, y le permitirá omitir la validación del lado del cliente (que a menudo se aplica mediante JavaScript). Es una técnica de prueba de penetración esencial.

Puede establecer un punto de interrupción «global» en solicitudes o respuestas utilizando los botones de la barra de herramientas de nivel superior . Luego, ZAP interceptará todas las solicitudes o respuestas, lo que le permitirá cambiar cualquier cosa antes de permitir que la solicitud o respuesta continúe. También puede establecer puntos de interrupción según criterios específicos utilizando el menú de clic derecho “Interrumpir…” en las pestañas Sitios e Historial y el botón “Agregar un punto de interrupción HTTP personalizado” en la barra de herramientas de nivel superior .

ZAP sólo interceptará las solicitudes y respuestas que coincidan con esos criterios. Los puntos de interrupción personalizados se muestran en la pestaña Puntos de interrupción Las opciones de puntos de interrupción se configuran mediante la pantalla Opciones de puntos de interrupción .

Menú de clic derecho

Al hacer clic derecho en un punto de interrupción aparecerá un menú que le permitirá:

Editar… Se abrirá el cuadro de diálogo «Editar punto de interrupción», que permite editar los criterios que definen el punto de interrupción. Al hacer doble clic en el punto de interrupción, también se mostrará este cuadro de diálogo.

Eliminar Esto eliminará el punto de interrupción.

La pestaña Interrupción le permite cambiar una solicitud o respuesta cuando ha sido capturada por ZAP a través de un punto de interrupción . Le permite cambiar elementos que normalmente no podría cambiar a través de su navegador, incluidos:

  • El encabezado
  • Campos ocultos
  • Campos deshabilitados
  • Campos que utilizan javascript para filtrar caracteres ilegales

Esta funcionalidad es clave para realizar pruebas de penetración de su aplicación de manera efectiva. Los 2 paneles solo contendrán información si ZAP ha capturado una solicitud o respuesta. Puede cambiar cualquier cosa en estos 2 paneles y luego reenviar la solicitud o respuesta utilizando los botones de la barra de herramientas de nivel superior . Los menús desplegables le permiten seleccionar diferentes vistas para el encabezado y el cuerpo de la solicitud o respuesta. Cuando la pestaña Salto no está en uso su ícono es una cruz gris: 

Cuando se alcanza un punto de interrupción , el icono de la pestaña cambia a una cruz roja: 

Si ha seleccionado «Mostrar botones para seleccionar las solicitudes que no desea que ZAP interrumpa» en el menú de opciones, podrá seleccionar si solo desea interrumpir las solicitudes que están dentro del alcance y podrá seleccionar las extensiones de archivo que no desea interrumpir:

Archivos Javascript
Archivos CSS y fuentes
Archivos multimedia
Sólo en el ámbito de aplicación

Actualizar la longitud del contenido

De forma predeterminada, ZAP actualizará (o añadirá) automáticamente el encabezado HTTP(S) Content-Length para que coincida con el tamaño de los datos enviados. Si esta opción no está seleccionada, ZAP no actualizará el encabezado, lo que le permitirá especificar cualquier valor. Este botón solo se mostrará para mensajes HTTP(S).

Menú de clic derecho

Al hacer clic derecho en un nodo aparecerá un menú que le permitirá:

Encontrar… Esto abrirá el cuadro de diálogo Buscar .

Copiar Esto copiará la cadena seleccionada al portapapeles.

Encontrar diálogo

Esto le permite encontrar el texto que ingresa en la pestaña seleccionada.

Cuadro de diálogo Agregar/Editar punto de interrupción

Este diálogo le permite agregar y editar puntos de interrupción HTTP .

Un punto de interrupción se define mediante los siguientes campos:

  • Ubicación : donde Stringse verifica en el mensaje HTTP: URL, Request Header, Request Body, Response Header, o Response Body.
  • Coincidencia : cómo Stringse interpreta el [nombre del elemento], Regexo Contains[nombre del elemento], para expresiones regulares o coincidencia exacta, respectivamente, en el [nombre del elemento Location]. La expresión regular no necesita coincidir con todo el contenido del [nombre del elemento Location].
  • Cadena : la cadena que activa el punto de interrupción.
  • Inversa – si el resultado de Matchdebe ser el inverso.
  • Ignorar mayúsculas y minúsculasString : si se debe ignorar el caso del texto .

Si utiliza un proxy para enviar un mensaje HTTP que coincide con un punto de interrupción, ZAP lo interceptará y le permitirá cambiar la solicitud o la respuesta.

Nota: ZAP advertirá y evitará la adición de puntos de interrupción con un componente de identificador de fragmento ( #), si el punto de interrupción tiene coincidencia Containsy ubicación URL. Dicho punto de interrupción no funcionaría porque el identificador de fragmento no se envía al servidor.

Pantalla de puntos de interrupción de opciones

Esta pantalla le permite configurar las opciones del punto de interrupción :

  • 0Confirmar mensaje de trampa de caída Solicita confirmación cuando se descarta una solicitud o respuesta.
  • Solo interrumpir los mensajes dentro del alcance El punto de interrupción «global» solo se activará con las solicitudes dentro del alcance . Los puntos de interrupción personalizados no se verán afectados. ZAP siempre en la parte superior cuando se alcanza el punto de interrupción Si se selecciona esto, significará que ZAP permanecerá encima de todas las demás ventanas cada vez que se alcance un punto de interrupción.
  • Muestra botones para seleccionar las solicitudes en las que no quieres que ZAP interrumpa Esto controla si los botones para seleccionar los tipos de archivos que no desea que ZAP divida y el filtro de alcance aparecen en el panel de división.
  • Expresión regular de URL de Javascript Esto establece la expresión regular utilizada para predecir si el contenido de la respuesta será un archivo Javascript.
  • Expresiones regulares de URL de CSS y fuentes Esto establece la expresión regular utilizada para predecir si el contenido de la respuesta será un CSS o un archivo de fuente.
  • Expresión regular de URL multimedia Esto establece la expresión regular utilizada para predecir si el contenido de la respuesta será un archivo multimedia (imágenes, videos o sonidos).
  • Modo de botones de interrupción Esto controla si hay un solo botón de salto combinado en la barra de herramientas de nivel superior o botones separados para solicitudes y respuestas.

Mediante esta opción, es posible establecer, mediante expresiones regulares, condiciones para que se pare temporalmente ciertas peticiones sin que éstas se remitan a su destino.  De este modo se delega al analista la elección de enviar o no las peticiones al servidor.  Esta funcionalidad es realmente útil cuando el analista desea modificar determinados datos generados por el navegador. Para ello, establece en primer lugar un punto de interrupción para el recurso en concreto que desea modificar y posteriormente, desde el navegador visita dicho recurso.

ZAP parará la petición y dará la oportunidad al analista de modificar cualquier dato de la solicitud. Posteriormente, el analista instruirá a ZAP para que reenvíe dicha petición a su destino. Veamos un ejemplo práctico de esta funcionalidad. Disponer de la opción de parar las solicitudes generadas por el navegador  es realmente útil para modificar al vuelo algunos de los parámetros remitidos. En el ejemplo, se puede observar un intento de login fallido en BWAPP

Tras autenticarse con ciertas credenciales. Se observa que tanto el usuario como la contraseña se envían, vía POST, al servicio web. Veamos cómo podemos modificar la contraseña utilizando las opciones de parada que ofrece OWASP ZAP.

En primer lugar, se hace clic en el icono de la barra de tareas responsable de parar todas las solicitudes web.  Esta opción parará todas las solicitudes recibidas desde el navegador. Posteriormente se volverá a forzar la autenticación desde el portal web haciendo clic en el botón login.

Tras hacer clic se observa que el navegador intercepta dicha solicitud desde la que podremos modificar el argumento password.

Una vez modificado se hará clic en el icono de reenvió, situado a la derecha del botón de parada,  para reanudar el envío al servidor destino.

Se observa, por la respuesta recibida, que el password introducido de forma manual, es el correcto en este caso.

Efectivamente ha funcionado

Editor de solicitudes manual

Para reproducir una solicitud, simplemente use la opción «Abrir/Reenviar con el editor de solicitudes», disponible en el menú contextual.

En la ventana que se abre, puede editar la solicitud y luego hacer clic en «Enviar» (o presionar ALT+Entrar) para reenviarla. Este cuadro de diálogo le permite crear una solicitud HTTP desde cero que se enviará al destino especificado o reenviar una solicitud HTTP existente después de realizar los cambios que desee.

La respuesta se muestra directamente en la pestaña de respuesta:

WebSockets

Las aplicaciones web o los sitios web pueden utilizar WebSockets para configurar un canal de comunicación bidireccional (bidireccional) y dúplex completo a través de una única conexión TCP. Cuenta con un protocolo ligero que permite a los desarrolladores implementar casos de uso en tiempo real. Los WebSockets también proporcionan una alternativa al uso intensivo de Ajax, HTTP Long Polling o Comet. Después de un protocolo de enlace inicial basado en HTTP, la conexión TCP se mantiene abierta, lo que permite a las aplicaciones enviar y recibir datos arbitrarios. A menudo se utilizan los puertos 80 o 443 para canales WebSocket cifrados. El estándar WebSocket se define en

La API de WebSocket (http://www.w3.org/TR/websockets/)

especifica la interfaz en los navegadores

El protocolo WebSocket (RFC6455) (https://tools.ietf.org/html/rfc6455)

describe la estructura de las tramas WebSocket en TCP

ZAP puede:

  • interceptar y mostrar mensajes WebSocket
  • establecer puntos de interrupción en tipos específicos de mensajes WebSocket
  • fuzzear mensajes WebSocket (enviar muchos datos no válidos o inesperados a un navegador o servidor)
  • escanear pasivamente los mensajes WebSocket y generar alertas con scripts

Los mensajes WebSocket se muestran dentro de la pestaña WebSockets . El complemento WebSocket agrega nuevos scripts y puntos finales adicionales a la API de ZAP

Pestaña WebSocket

La pestaña WebSockets muestra todos los mensajes de las conexiones WebSocket. Mientras ZAP esté activo, visite, por ejemplo, BrowserQuest de Mozilla para ver WebSockets en acción.

Filtros

Selector de canal

Puede restringir la visualización de mensajes a un canal WebSocket específico o a todos. Si selecciona un canal específico, se habilita el botón Mostrar protocolo de enlace ( ). Al hacer clic en él, se muestra el protocolo de enlace HTTP correspondiente en la pestaña Solicitud/Respuesta.

Cuadro de diálogo de filtro

En el cuadro de diálogo de filtro ( 

) puede controlar aún más qué mensajes se muestran.

Puntos de interrupción

Puede establecer puntos de interrupción personalizados utilizando el botón Agregar puntos de interrupción personalizados ( 

).

Alternativamente, puede utilizar el menú contextual .

Menú contextual

Al hacer clic derecho en un mensaje de WebSocket, aparecerá un menú que le permitirá:

Excluir de WebSocket

Las conexiones WebSocket se pueden excluir de la pestaña WebSockets añadiendo una URL excluida a las Propiedades de la sesión . Al hacer clic en este elemento, aparecen las propiedades de la sesión con la URL precargada. Excluir una conexión WebSocket no provocará el cierre de la conexión, sino su reenvío sin más procesamiento.

Interrumpir…

Esto abrirá el cuadro de diálogo Añadir punto de interrupción , que le permite configurar un punto de interrupción personalizado.

 

Opciones específicas de WebSocket

Esta pantalla le permite configurar las opciones de WebSocket:

Reenviar todo

Si no le interesa la comunicación WebSockets, pero desea permitir que sus mensajes se envíen de ida y vuelta a través de ZAP, debe habilitar esta opción. Como resultado, no se almacenará ningún mensaje en la base de datos de la sesión. demás, no aparecerá ningún mensaje en la pestaña WebSockets. Esta configuración puede ser útil si tiene que lidiar con conexiones WebSocket de rendimiento crítico y no le interesa lo que se envía. Si desea ignorar solo un canal específico, consulte las Propiedades de sesión específicas de WebSocket .

Interrumpir en todo

En la barra de herramientas Interrumpir , hay dos botones:

 Establecer interrupción en todas las solicitudes

 Establecer interrupción en todas las respuestas

Cuando habilita esta opción, todos los mensajes WebSocket salientes (respectivamente entrantes) también son capturados por estos botones de control. De forma predeterminada, esta opción está deshabilitada. En este caso, solo se capturan los mensajes HTTP, pero puede agregar puntos de interrupción explícitos en la comunicación WebSocket en la pestaña WebSocket .

Interrupción en mensajes Ping y Pong

Los servidores WebSocket suelen utilizar los mensajes PING y PONG para determinar el estado de la conexión actual. Si captura un mensaje PING entrante , el navegador no puede devolver un mensaje PONG inmediatamente, lo que resulta en un valor de latencia incorrecto. Si esta opción está deshabilitada, no se captura ningún mensaje PING o PONG cuando:

  • establece un punto de interrupción en ++todas las solicitudes++ o ++todas las respuestas++, o
  • pasa a la siguiente solicitud o respuesta y llega un mensaje PING o PONG

Esta configuración no afecta a los puntos de interrupción que se establecen explícitamente en los mensajes PING o PONG . Puede ver dichos puntos de interrupción explícitos en la pestaña Puntos de interrupción 

Eliminar Sec-WebSocket-Extensionsencabezado

Permite eliminar el encabezado HTTP Sec-WebSocket-Extensionsde los mensajes de protocolo de enlace, por lo que no se realizan transformaciones en los mensajes WebSocket enviados/recibidos. Esta opción siempre debe estar habilitada a menos que el cliente o el servidor bajo prueba lo requieran. Es posible que ZAP no procese correctamente los mensajes WebSocket cuando se utilizan extensiones.

API de WebSocket

Vistas

Canales

Devuelve todos los canales de web socket registrados.

Mensaje

Parámetros obligatorios:

  • channelId: el identificador del canal
  • messageId: el identificador del mensaje

Devuelve todos los detalles del mensaje especificado. El ‘channelId’ y el ‘messageId’ se pueden descubrir a través de la vista ‘mensajes’.

Mensajes

Parámetros opcionales:

  • channelId: el identificador del canal
  • inicio: el desplazamiento desde el que empezar a devolver mensajes, empezando desde 0.
  • recuento: el número de mensajes a devolver.
  • payloadPreviewLength: el número máximo de bytes a devolver para el contenido de la carga útil

Devuelve una lista de todos los mensajes que cumplen los criterios dados; de forma predeterminada, se devuelven todos los mensajes. El channelId se puede descubrir a través de la vista ‘canales’. Los parámetros ‘inicio’ y ‘conteo’ se pueden usar para navegar por los mensajes. El ‘payloadPreviewLength’ se puede usar para restringir el tamaño de los datos devueltos.

Acciones

enviarMensajeDeTexto

Parámetros obligatorios:

  • channelId: el identificador del canal
  • saliente: ‘Verdadero’ si el mensaje se va a enviar al servidor y ‘Falso’ si se va a enviar al cliente
  • mensaje: el mensaje a enviar

Envía el mensaje especificado en el canal especificado.

El channelId se puede descubrir a través de la vista ‘canales’.

Scripts de WebSocket

Remitente de WebSocket

Los scripts de Remitente de WebSocket se llaman antes de reenviar el marco del mensaje WebSocket al servidor o cliente y pueden acceder y modificar cualquier mensaje WebSocket que se envíe por proxy a través de ZAP. Inicialmente están deshabilitados; para habilitarlos, haga clic con el botón derecho en el script correspondiente en el árbol de scripts y seleccione «habilitar». Se proporciona un script de plantilla que detalla los métodos y parámetros admitidos.

Procesador de WebSocket Fuzzer

Los scripts del Procesador de WebSocket Fuzzer se llaman antes de reenviar un mensaje WebSocket fuzzeado al cliente/servidor. Las cargas útiles ya se habrán inyectado en este punto. Se proporciona un script de plantilla que detalla los métodos y parámetros admitidos.

Reglas pasivas de WebSocket

Los scripts de escaneo pasivo de WebSocket se llaman cada vez que se transmite un marco de mensaje de WebSocket a través de una conexión WebSocket. Los scripts pueden acceder a los mensajes de WebSocket para examinar la carga útil y generar una alerta. Todos los scripts predeterminados se registran y habilitan al iniciar. Si no desea que se ejecuten de forma predeterminada, haga clic con el botón derecho en los scripts correspondientes y seleccione «deshabilitar». Si los elimina, se agregarán y habilitarán de nuevo cuando reinicie ZAP. Se proporcionan scripts de plantilla que detallan los métodos y parámetros admitidos. 

Propiedades de sesión específicas de WebSocket

Excluir de WebSocket

Esto le permite administrar las URL donde la comunicación de WebSocket no se procesa en ZAP. Aunque se reenvían todos los mensajes de las URL excluidas, no se almacena nada ni puede verlo en la interfaz de usuario. Esta función es útil para conexiones WebSocket de alto volumen y rendimiento crítico. Puede diferenciar el puerto para un dominio determinado, utilizando, por ejemplo: ejemplo.com:443 para excluir las conexiones WebSocket de ejemplo.com solo en el puerto 443.

Reglas de escaneo e Informes & AUTO

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.

El Ecosistema de Escaneo

Detección de Fugas de Información

Identificamos y alertamos sobre la exposición accidental de archivos de configuración, credenciales, código fuente y metadatos sensibles.

Archivos de Configuración y Entorno: Detección de .env (ID 40034), .htaccess (ID 40032) y otros archivos de configuración accesibles desde la web.

Exposición de Código Fuente: Identificación de código fuente expuesto a través de repositorios ( Git, SVN – Ids 41,42) directorios (/WEB-INF – ID 10045) y vulnerabilidades específicas ( CVE-2012-1823 – ID 20017).

Fugas de Infraestructura y Depuración: Descubrimiento de errores de depuración detallados (ID 10023), información de ELMAH (ID 40028), Trace.axd (ID 40029) y direcciones IP privadas (ID 2).

Archivos Sensibles y de Respaldo: Búsqueda de archivos de respaldo (BackupFileDisclosure – ID 10095) y archivos ocultos basados en una extensa lista de cargas útiles (HiddenFilesScanRule – ID 40035)

Pilar 2: Dominio sobre las Inyecciones

Cobertura exhaustiva contra las vulnerabilidades de inyección más críticas, desde las clásicas hasta las más avanzadas y ciegas.

SQL Injection (SQLi): Detección agnóstica de RDBMS (ID 40018) y ataques basados en tiempo específicos para MySQL (40019), PostgreSQL (40022), MsSQL (40027), Oracle (40021), Hypersonic (40020) y SQLite (40024).

Cross-Site Scripting (XSS): Identificación de XSS Reflejado (ID 40012), Persistente (ID 40014) y basado en DOM (DomXssScanRule). Inyecciones a Nivel de Servidor:

Cobertura de Inyección de Comandos del SO (regular y basada en tiempo – IDs 90020, 90037), Inyección de Código (PHP, ASP — ID 90019) e Inyección de Plantillas del Lado del Servidor (SSTI, regular y ciega — IDs 90035, 90036).

Inyecciones en Fuentes de Datos y Servicios: Detección de XPath (ID 90021), LDAP (ID 40015) y NoSQL (MongoDB, regular y basada en tiempo – IDs 40033, 90039).

Pilar 3: Explotación de Configuraciones Inseguras

Identificamos debilidades en la configuración del servidor, frameworks y dependencias, incluyendo vulnerabilidades de alto impacto y de día cero.

Vulnerabilidades de Alto Perfil: Detección activa de Log4She11 (ID 40043), (ID 20015), ShellShock (ID 10048) y Spring4She11 (ID 40045), Heartbleed (ID 20015)Text4shell (ID 40047).

Configuración de Servidor y Cloud: Ataques a metadatos en la nube (AWS, GCP, Azure ID 90034) y explotación de actuadores de Spring expuestos (ID 40042).

Encabezados de Seguridad: Análisis pasivo de la implementación de Content Security (CSP – ID 10055, 10038), Policy Strict-Transport-Security (HSTS – ID 10035), X-Frame-Options (ID 10020) y CORS (ID 40040).

Métodos HTTP Inseguros: Detección de métodos como habilitados de PUT o PATCH forma insegura (ID 90028).

Pilar IV: Seguridad de Sesión y Autenticación

Verificamos la robustez de los mecanismos de gestión de sesión y autenticación para prevenir la suplantación de usuarios.

Protección de Cookies: Verificación de la ausencia de flags de seguridad críticos: ‘HttpOnly’ (ID 10010), Secure’ (ID 10011) y SameSite’ (ID 10054).

Ataques de Sesión: Detección de vulnerabilidades de ‘Session Fixation’ (ID 40013) y ausencia de tokens ‘Anti-CSRF’ en formularios (ID 20012).

Fugas en Autenticación: Identificación de Enumeración de Nombres de Usuario’ basada en las respuestas diferenciales del servidor (ID 40023).

Secuestro de Sesión Potencial: Alerta sobre la posible manipulación de cookies a través de parámetros de URL (‘UserControlledCookieScanRule’ – ID 10029).

Pilar V: Vulnerabilidades de Lógica y Bajo Nivel

Identificamos fallos complejos en la lógica de la aplicación y vulnerabilidades a nivel de manejo de memoria y datos.

Ataques de Acceso a Recursos: Detección de Path Traversal (ID 6), Server-Side (SSRF – ID 40046) e Inclusión de Archivos Remotos (RFI – ID 7).

Request Forgery Vulnerabilidades de Parseo: Explotación de XML External Entity (XXE – ID 90023) y Expansión Exponencial de Entidades («Billion Laughs» – ID 40044).

Errores de Manejo de Memoria: Identificación de indicadores de Desbordamiento de Búfer (Buffer Overflow – ID 30001) y Desbordamiento de Entero (Integer Overflow – ID 30003).

Inyecciones Avanzadas: Detección de CRLF Injection (ID 40003) y XSLT Injection (ID 90017).

El Estado del Arsenal: Madurez y Evolución de las Reglas

Una visión estructurada de los niveles de desarrollo y estabilidad de nuestras reglas de escaneo.

Capacidades Probadas (Release)

Reglas estables, bien probadas y con una baja tasa de falsos positivos. Constituyen el núcleo del arsenal de detección.

Ejemplos:

SQL Injection

Cross-Site Scripting (Reflected)

Path Traversal

Capacidades Emergentes (Beta)

Reglas que han sido probadas pero que aún pueden estar en proceso de refinamiento. Ofrecen una cobertura extendida sobre amenazas más nuevas o complejas. Ejemplos:

Server-Side Request Forgery (SSRF)

CSRF Token Scan

ShellShock

Capacidades Experimentales (Alfa)

Reglas en una fase temprana de desarrollo. Pueden generar más falsos positivos pero proporcionan una visión temprana de nuevas capacidades de detección. Ejemplos:

LDAP Injection

NOSQL Injection (MongoDB)

Web Cache Deception

El Framework de Automatización

Integre la seguridad directamente en sus flujos de trabajo de CI/CD. Defina, ejecute y reporte escaneos de forma programática y repetible con un simple archivo YAML.

Seguridad como Código, en la práctica.

Definiendo el Campo de Batalla: El Entorno

La sección en\R del plan de automatización centraliza toda la configuración del objetivo. Permite una gestión clara y versionable de los contextos de prueba.

Capacidades Clave:

  • Contextos Múltiples: Defina diferentes ámbitos (surl , SincludePaths’, ‘excludePaths’) para distintas aplicaciones o partes de una aplicación.
  • Autenticación Sofisticada: Soporte nativo para métodos ‘form, json’ ‘ http’ , script, y el innovador browser para flujos de inicio de sesión complejos.
  • Gestión de Usuarios: Especifique múltiples usuarios con diferentes credenciales para probar distintos niveles de privilegio.

Ejecutando la Misión: Los Trabajos Clave del Framework

Un plan de automatización se construye combinando trabajos («jobs»), cada uno con una función específica.

spider I spiderAjax: Descubre la superficie de ataque. El spider tradicional para velocidad, el Ajax para aplicaciones web modernas.

passiveScan-wait: Asegura que el escaneo pasivo complete su analisis de todo el tráfico descubierto.

activeScan: Lanza el arsenal de escaneo activo contra el objetivo definido.

openapi I graphql / soap: Importa definiciones de API para asegurar una cobertura completa de los endpoints.

report: Genera un informe final con los hallazgos, personalizable en formato y contenido.

Resumen del capítulo

  • Opciones de red: se presentan las pantallas de configuración (certificados de cliente, conexión, exclusiones globales, servidores locales/proxies, límite de velocidad y certificados de servidor).
    • Certificados de cliente: carga y gestiona PKCS#12 y PKCS#11 para mTLS; puedes activar un certificado en el almacén y usarlo en peticiones.
    • Certificados de servidor / CA raíz: ZAP genera una CA raíz para emitir certificados de servidor on-the-fly (MITM SSL). Se explica cómo generar, importar y distribuir la CA entre múltiples instalaciones y navegadores, la validez por defecto y riesgos (trust). También se aborda CRL/OCSP y cómo evitar problemas con comprobaciones de revocación.
  • Conexión y proxies salientes: configuración de timeouts, user-agent, estado HTTP global (seguimiento de sesiones/cookies), DNS TTL y protocolos TLS/SSL; ajuste de proxies HTTP y SOCKS (host, puerto, autenticación, DNS via SOCKS).
  • Exclusiones globales y limitador de velocidad: definir hosts/dominios que ZAP debe ignorar; crear reglas de rate-limit por host o por regla para evitar sobrecarga o bloqueo del objetivo.
  • Servidores locales / proxies: configurar en qué direcciones/puertos ZAP escucha (proxy principal y proxies adicionales), modos (API expuesta o proxy), alias, paso a través (passthrough) y eliminación de encabezado Accept-Encoding o decodificación automática de respuestas.
  • APIs de red y CLI: operaciones para automatizar carga/importación de certificados, añadir/excluir proxies, gestionar rate limits, y vistas para consultar configuración desde scripts o CI/CD.
  • Proxy manipulador intermedio: explicación general del MITM, vistas de Solicitud y Respuesta, y cómo editar encabezados y cuerpos.
  • Requester (Editor de solicitudes manuales): pestaña que permite crear/editar/enviar solicitudes HTTP(S) desde cero o reenvío; opciones útiles: usar sesión global, aceptar cookies, seguir redirecciones, actualizar Content-Length/Host, regenerar tokens anti-CSRF y vistas divididas.
  • Puntos de interrupción: interceptación global o selectiva basada en reglas (URL, headers, body; regex, contains, etc.). Panel de Interrupción para editar y decidir enviar, modificar o descartar peticiones/respuestas; configuración de preferencias de interrupción (solo ámbito, confirmaciones, tipos de archivos a ignorar).
  • WebSockets: monitorización de canales, filtrado, captura/interrupción de mensajes, fuzzing, escaneo pasivo con scripts, API específica para WebSockets y propiedades de sesión para excluir canales de alto volumen. Scripting disponible para Remitente, Procesador de Fuzzer y Reglas pasivas.
  • Buenas prácticas y advertencias: instalar la CA de ZAP únicamente en entornos controlados, no usar ZAP en sistemas productivos sin autorización, y usar rate-limit/exclusiones para evitar afectar al objetivo.

Diez preguntas clave sobre el artículo

  1. ¿Cuál es la finalidad del certificado CA raíz en ZAP y cómo se utiliza?
  2. ¿Qué diferencias hay entre un proxy HTTP y un proxy SOCKS en la configuración de ZAP?
  3. ¿Qué función cumple el límite de velocidad en el complemento de red?
  4. ¿Qué es un punto de interrupción en ZAP y para qué sirve?
  5. ¿Cómo permite ZAP el uso de certificados de cliente PKCS#12 y PKCS#11?
  6. ¿Cómo se configura un servidor/proxy local adicional en ZAP?
  7. ¿Cuál es el propósito del editor de solicitudes manual en ZAP?
  8. ¿Qué opciones ofrece ZAP para manejar conexiones WebSocket?
  9. ¿Qué precauciones se deben tomar al importar un certificado CA raíz generado por ZAP?
  10. ¿Cómo actúa ZAP como proxy MITM (man-in-the-middle) y cuál es su objetivo principal?

Diez ejercicios prácticos basados en el artículo

  1. Genera un nuevo certificado CA raíz en ZAP y expórtalo para instalarlo en un navegador.
  2. Configura ZAP para actuar como proxy en una red local utilizando un puerto diferente al predeterminado.
  3. Establece un punto de interrupción para capturar solicitudes POST con parámetros de login.
  4. Usa la pestaña «Requester» para modificar una solicitud HTTP interceptada y reenvíala.
  5. Limita el tráfico hacia un dominio específico a 1 solicitud por segundo usando la opción de “Límite de velocidad”.
  6. Crea una regla de exclusión global para omitir un dominio como example.com del análisis.
  7. Importa un certificado PKCS#12 en ZAP y actívalo para pruebas SSL.
  8. Captura y modifica un mensaje WebSocket desde la pestaña correspondiente.
  9. Configura una exclusión para archivos .js en los puntos de interrupción globales.
  10. Define un proxy SOCKS en ZAP y verifica que se utilice en las conexiones salientes.

Respuestas detalladas a las 10 preguntas

1. ¿Cuál es la finalidad del certificado CA raíz en ZAP y cómo se utiliza?

ZAP actúa como un proxy MITM para interceptar y modificar tráfico HTTPS. Para ello, genera un certificado CA raíz propio, que luego utiliza para firmar certificados SSL falsos en tiempo real. El navegador cliente debe confiar en ese certificado para evitar advertencias. Este certificado se instala manualmente en el navegador (Windows, Firefox, etc.).

2. ¿Qué diferencias hay entre un proxy HTTP y un proxy SOCKS en la configuración de ZAP?

  • Proxy HTTP: filtra solicitudes HTTP(S) salientes, requiere configuración de host/puerto y, opcionalmente, autenticación.
  • Proxy SOCKS: redirige todo el tráfico TCP, no solo HTTP. Ideal para pruebas más amplias. Admite resolución de DNS por el proxy.

3. ¿Qué función cumple el límite de velocidad en el complemento de red?

Permite restringir el número de solicitudes por segundo a dominios específicos para evitar bloqueos o sobrecargas. Se define mediante reglas que pueden aplicarse a un host individual, un dominio, o patrones por expresión regular.

4. ¿Qué es un punto de interrupción en ZAP y para qué sirve?

Es una funcionalidad que detiene solicitudes o respuestas HTTP/WebSocket antes de que lleguen al servidor o navegador. Permite al analista modificar campos, headers, parámetros, o bypass de validaciones antes de reenviar la petición. Es vital para pruebas de seguridad avanzadas.

5. ¿Cómo permite ZAP el uso de certificados de cliente PKCS#12 y PKCS#11?

ZAP permite importar certificados:

  • PKCS#12: archivo con certificado + clave privada, protegido con contraseña.
  • PKCS#11: tokens/SmartCards.
    Estos se cargan al almacén de claves para usarse en sesiones SSL mutuas.

6. ¿Cómo se configura un servidor/proxy local adicional en ZAP?

Desde Opciones > Servidores locales/proxies, puedes agregar nuevas direcciones IP y puertos. Se puede personalizar el protocolo, modo (API o proxy), eliminar encabezados y ajustar comportamiento NAT o ALPN.

7. ¿Cuál es el propósito del editor de solicitudes manual en ZAP?

Permite crear, modificar y reenviar solicitudes HTTP directamente, sin necesidad de captura previa. Es útil para simular peticiones, cambiar headers, cuerpos POST, cookies, etc., y ver la respuesta del servidor.

8. ¿Qué opciones ofrece ZAP para manejar conexiones WebSocket?

ZAP puede:

  • Interceptar mensajes WebSocket.
  • Establecer puntos de interrupción.
  • Fuzzear mensajes.
  • Filtrar canales.
  • Excluir canales de alto rendimiento.
  • Modificar mensajes en tiempo real con scripts.

9. ¿Qué precauciones se deben tomar al importar un certificado CA raíz generado por ZAP?

El certificado ZAP solo debe instalarse en entornos de prueba seguros, ya que otorga confianza total en certificados emitidos por ZAP. Si cae en manos de terceros, pueden realizar ataques MITM en tus navegadores.

10. ¿Cómo actúa ZAP como proxy MITM (man-in-the-middle) y cuál es su objetivo principal?

Intercepta tráfico HTTPS entre navegador y servidor. Crea certificados SSL falsos firmados por su CA raíz, permitiendo ver y modificar tráfico cifrado. Su objetivo es analizar y probar seguridad de aplicaciones web sin alertar al navegador del usuario.

Respuestas a los 10 ejercicios propuestos

1. Generar un nuevo certificado CA raíz en ZAP

  • Ir a Opciones > Certificados de servidor.
  • Clic en Generar.
  • Guardar el certificado.
  • Instalarlo en tu navegador siguiendo las instrucciones para Firefox o Windows.

2. Configurar ZAP como proxy en otro puerto

  • Ir a Opciones > Servidores locales/proxies.
  • En “Proxy principal”, cambia el puerto (ej. 8888).
  • Configura tu navegador para usar localhost:8888 como proxy.

3. Establecer un punto de interrupción en login

  • Activa el botón “Interrumpir” (global).
  • Realiza login desde una app vulnerable.
  • ZAP capturará la solicitud.
  • Modifica los valores username y password en la pestaña “Interrumpir”.

4. Modificar y reenviar una solicitud

  • Haz clic derecho en una solicitud y selecciona:
    «Abrir en la pestaña Solicitante».
  • Modifica los headers o el cuerpo.
  • Clic en «Enviar».

5. Límite de velocidad para example.com

  • Ir a Opciones > Límite de velocidad.
  • Agrega nueva regla:
    • Descripción: limitar example
    • Coincidencia: example.com
    • Solicitudes por segundo: 1
    • Agrupar por: Host
  • Habilita la regla.

6. Excluir example.com globalmente

  • Ir a Opciones > Exclusiones globales.
  • Agrega example.com como patrón.
  • Todas las herramientas ignorarán este dominio.

7. Importar certificado PKCS#12

  • Ir a Opciones > Certificados de cliente.
  • Pestaña PKCS#12.
  • Selecciona el archivo .p12.
  • Ingresa la contraseña.
  • Activa el certificado desde el almacén de claves.

8. Captura de WebSocket

  • En la pestaña WebSockets, selecciona un canal activo.
  • Establece punto de interrupción.
  • Modifica y reenvía un mensaje WebSocket.
  • Observa cambios en el cliente/servidor.

9. Excluir archivos .js de los puntos de interrupción

  • Ir a Opciones > Puntos de interrupción.
  • Marca “Mostrar botones para seleccionar archivos que no deseas interrumpir”.
  • Activa la casilla para Archivos JavaScript.

10. Configurar proxy SOCKS

  • Ir a Opciones > Conexión > Proxy SOCKS.
  • Activar y definir:
    • Host: localhost
    • Puerto: 1080
    • Versión: 5
    • Usar DNS de SOCKS: activado
  • (Opcional) Añadir credenciales si el proxy lo requiere.

Conclusión

En este capítulo has adquirido habilidades prácticas para controlar y manipular el tráfico de red con ZAP a un nivel técnico profundo: desde manejar certificados y proxies hasta interceptar peticiones, modificar respuestas y analizar comunicación WebSocket en tiempo real. Has visto cómo automatizar y exponer estas capacidades vía API/CLI, así como precauciones para no dañar entornos ajenos. Como hacker ético, estas competencias te permiten:

  • Realizar pruebas precisas contra autenticaciones avanzadas (p. ej. mTLS) y análisis TLS/CRL/OCSP.
  • Reproducir y modificar peticiones complejas que los navegadores no dejan tocar, lo que facilita pruebas de control de acceso, lógica de negocio y bypasses.
  • Analizar APIs en tiempo real, incluidos canales persistentes (WebSocket), detectar fallos y realizar fuzzing eficiente.
  • Integrar ZAP en pipelines (CI/CD) y automatizar escenarios de prueba para DevSecOps.

Sigue practicando con objetivos autorizados (laboratorios, CTFs, entornos de testing) y aplica las opciones de rate-limit y exclusiones para no causar impacto. Con este dominio de la capa de red y del requester, tu arsenal técnico como pentester o especialista en seguridad web será mucho más sólido.

ZAP está bien equipado para los usos clásicos de un proxy web: observar, interceptar y generar tráfico HTTP, ya sea manual o automáticamente. También incorpora un escáner activo de alto rendimiento que se puede usar con precisión. Su HUD es una ventaja notable, ya que ofrece mayor comodidad y facilita el aprendizaje para los principiantes que aún no dominan la interfaz estándar.

En comparación con la versión Community de Burp Suite, ZAP destaca. Burp no ofrece un escáner de vulnerabilidades ni copia de seguridad del proyecto, e impone restricciones en ciertas funciones, como Intruder. Sin embargo, ZAP sigue siendo limitado para uso profesional. Es más adecuado para necesidades puntuales: probar su propio sitio web, participar en CTF y otros desafíos web, etc.

Deja una respuesta

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