Saltar al contenido
Portada » Blog – Laprovittera Carlos » Escaneo con OWASP ZAP

Escaneo con OWASP ZAP

En este capítulo, Escaneo con OWASP ZAP, aprenderás a planificar y ejecutar escaneos con OWASP ZAP: desde la configuración inicial (persistir sesión, modos, alcance y contextos) hasta el uso práctico de las arañas (tradicional y AJAX), exploración manual, navegación forzada (directory brute), escaneo pasivo y escaneo activo. Verás cómo seleccionar y ajustar políticas de escaneo, cómo usar el Requester, configurar usuarios y autenticación (formularios, JSON, NTLM, scripts), manejar sesiones, definir parámetros estructurales / nodos controlados por datos, y aprovechar el HUD y la detección de tecnologías. También aprenderás buenas prácticas: cuándo usar cada herramienta, cómo evitar afectar terceros (rate-limit, exclusiones, modo protegido) y cómo integrar ZAP en procesos automatizados (línea de comandos / ZAPit / CI).

Table of Contents

Escaneo ZAP

Antes de mostrarle las funciones de escaneo de ZAP, recuerde que solo debe usar el escaneo activo de ZAP para atacar una aplicación para la cual tenga permiso explícito para probar. La forma más rápida de comenzar a utilizar ZAP es utilizar el complemento de inicio rápido, que se instala de forma predeterminada. Esto le permite ingresar una URL que ZAP primero rastreará y luego escaneará activamente. Para una prueba más profunda, debe explorar su aplicación usando su navegador o pruebas de regresión automatizadas mientras realiza el proxy a través de ZAP.

En esencia, ZAP es un intermediario que actúa como manipulador . Para aprovechar al máximo ZAP, debe configurar su navegador o pruebas funcionales para conectarse a la aplicación web que desea probar a través de ZAP. Si es necesario, también puede configurar ZAP para conectarse a través de otro proxy; esto suele ser necesario en un entorno corporativo. Puede iniciar rápida y fácilmente navegadores preconfigurados para usar ZAP como proxy desde la pestaña Inicio rápido. Esto permite iniciar cualquiera de los navegadores más comunes que tenga instalados con nuevos perfiles. Si desea utilizar cualquiera de sus navegadores con un perfil existente, por ejemplo con otros complementos de navegador instalados, deberá configurar manualmente su navegador para que actúe como proxy a través de ZAP.

Una vez que haya configurado ZAP como proxy de su navegador, intente conectarse a la aplicación web que probará. Si no puede conectarse, revise la configuración de su proxy. Deberá revisar la configuración de su navegador y la de ZAP.

¡También vale la pena comprobar que la aplicación que estás intentando probar se esté ejecutando! Cuando se haya conectado correctamente a su aplicación a través de su navegador, vuelva a revisar ZAP. Debería ver una o más líneas en las pestañas Sitios e Historial . Si es así, estamos listos. Si no, deberás volver a revisar la configuración de tu proxy. El siguiente paso es iniciar una prueba de penetración básica.

Iniciando ZAP

Puede iniciar ZAP en Kali de una de dos maneras: ingresando zaproxyen la terminal o ábralo desde el menú de aplicaciones en “Análisis de aplicaciones web”. En Windows desde el buscador, acceso directo o lista de programas.

Al iniciar ZAP por primera vez, se le preguntará si desea conservar la sesión. De forma predeterminada, las sesiones de ZAP siempre se graban en el disco, en una base de datos HSQLDB, con un nombre y una ubicación predeterminados. Si no conserva la sesión, esos archivos se eliminarán al salir de ZAP.

Si elige persistir una sesión, la información de la sesión se guardará en la base de datos local para que pueda acceder a ella más tarde y podrá proporcionar nombres y ubicaciones personalizados para guardar los archivos. La persistencia guardará todo en una base de datos HSQL a la que podrá acceder para ver su contenido o volver a cargarla en ZAP para ver todo el historial de solicitudes, información del sitio, etc. Elegiremos “No, no quiero continuar con esta sesión en este momento”

Persistir sesión

Este cuadro de diálogo se muestra de forma predeterminada al iniciar una nueva sesión, lo que siempre ocurre al iniciar ZAP. Permite especificar cómo desea que se mantenga la sesión. También puede configurar la opción predeterminada para que no se vuelva a preguntar. Persistir una sesión significa que se almacenará en una base de datos local a la que podrás acceder en una fecha posterior. No es necesario seguir «guardando» una sesión, ya que todo lo que sucede en ella se graba continuamente. Es mucho más rápido persistir una sesión al principio, pero siempre puedes persistir una sesión más tarde si es necesario. Si cierra ZAP sin persistir su sesión, no podrá acceder a él nuevamente.

  • Sí, quiero persistir esta sesión con un nombre basado en la marca de tiempo actual Elija esta opción si desea que ZAP almacene la sesión en el directorio predeterminado con un nombre basado en la hora actual.
  • Sí, quiero persistir esta sesión pero quiero especificar el nombre y la ubicación Elija esta opción si desea especificar exactamente dónde ZAP debe almacenar la sesión.
  • No, no quiero persistir en esta sesión en este momento. Seleccione esta opción si no desea que ZAP guarde la sesión. Puede guardarla posteriormente con la opción «Persistir sesión… «.
  • Recuerda mi elección y no me preguntes más. Marque esta casilla si desea que ZAP recuerde su decisión y no vuelva a preguntarle. Puede cambiar su decisión a través de la pantalla de opciones de la base de datos .

 Inicio rápido

La forma más rápida de comenzar a utilizar ZAP es utilizar el complemento de inicio rápido, que se instala de forma predeterminada. Esto le permite ingresar una URL que ZAP primero rastreará y luego escaneará activamente . Para una prueba más profunda, debe explorar su aplicación usando su navegador o pruebas de regresión automatizadas mientras realiza el proxy a través de ZAP. En esencia, ZAP es un intermediario que actúa como manipulador .

Para aprovechar al máximo ZAP, debe configurar su navegador o pruebas funcionales para conectarse a la aplicación web que desea probar a través de ZAP. Si es necesario, también puede configurar ZAP para conectarse a través de otro proxy; esto suele ser necesario en un entorno corporativo. Puede iniciar rápida y fácilmente navegadores preconfigurados para usar ZAP como proxy desde la pestaña Inicio rápido. Esto permite iniciar cualquiera de los navegadores más comunes que tenga instalados con nuevos perfiles.

Si desea utilizar cualquiera de sus navegadores con un perfil existente, por ejemplo con otros complementos de navegador instalados, deberá configurar manualmente su navegador para que actúe como proxy a través de ZAP. Una vez que haya configurado ZAP como proxy de su navegador, intente conectarse a la aplicación web que probará. Si no puede conectarse, revise la configuración de su proxy. Deberá revisar la configuración de su navegador y la de ZAP.

¡También vale la pena comprobar que la aplicación que estás intentando probar se esté ejecutando! Cuando se haya conectado correctamente a su aplicación a través de su navegador, vuelva a revisar ZAP. Debería ver una o más líneas en las pestañas Sitios e Historial . Si es así, estamos listos. Si no, deberás volver a revisar la configuración de tu proxy.

La pantalla superior muestra 3 botones que le llevan a las siguientes pantallas.

Escaneo automatizado

La pantalla Análisis automatizado le permite iniciar un análisis automatizado contra una aplicación; simplemente introduzca su URL a continuación y pulse ‘Atacar’. Tenga en cuenta que solo debe atacar las aplicaciones para las que se le ha dado permiso específico para probar.

  • URL para atacar Esta es la URL de la aplicación que desea atacar, que comienza con ‘http://’ o ‘https://’. ZAP debe poder acceder a esta URL para que el ataque continúe.
  • Usar la araña tradicional La araña tradicional explora la aplicación encontrando enlaces en páginas HTML. Es muy rápida, pero no puede manejar aplicaciones que hacen un uso intensivo de JavaScript.
  • Usar la araña ajax La araña ajax explora la aplicación iniciando el navegador que hayas elegido y haciendo clic en los enlaces que encuentre. Es más lenta que la araña tradicional, pero gestiona bien JavaScript. Esta opción solo se muestra si el complemento de la araña ajax está instalado. Si no está disponible, puedes descargarlo e instalarlo gratis desde ZAP Marketplace. Las opciones disponibles son:
  • Nunca: entonces necesitarás usar la araña tradicional
  • Si es moderna: se ejecutará si ZAP identifica el destino como una aplicación moderna; para esto necesitas usar la araña tradicional
  • Siempre: si eliges esta opción, no necesitas ejecutar la araña tradicional

Exploración manual

La pantalla Exploración manual te permite iniciar el navegador que elijas para que puedas explorar tu aplicación mientras usas el proxy a través de ZAP. Selecciona el navegador que quieras en el menú desplegable y pulsa el botón ‘Iniciar navegador’. Los navegadores iniciados de esta manera se configurarán para hacer proxy a través de ZAP e ignorarán los errores de certificado, por lo que no necesitarás importar el certificado de CA raíz de ZAP.

ZAP recordará el último navegador que elegiste cuando lo reinicies. También se añadirá un botón a la barra de herramientas que iniciará el último navegador elegido. El icono cambiará para representar el navegador correspondiente. Tenga en cuenta que los navegadores iniciados dejarán de funcionar si cambia la dirección o el puerto en el que ZAP está escuchando. Si no tiene instalado el complemento Selenium, verá instrucciones para configurar manualmente su navegador para que actúe como proxy a través de ZAP.

  • URL para explorar Esta es la URL de la aplicación que desea explorar, que comienza con ‘http://’ o ‘https://’. ZAP debe poder acceder a esta URL.
  • Habilitar HUD La pantalla de visualización frontal (HUD) de ZAP incorpora toda la funcionalidad esencial de ZAP a su navegador. Es ideal para quienes se inician en pentesting web y también permite a los evaluadores de penetración experimentados centrarse en las características de una aplicación, a la vez que proporciona información y funcionalidades clave de seguridad. Esta opción está habilitada si el complemento HUD está instalado. Si no está disponible, puede descargarlo e instalarlo gratuitamente desde ZAP Marketplace.

Más información

La pantalla Más información proporciona enlaces a recursos locales y en línea para que pueda obtener más información sobre ZAP.

Noticias: Se mostrarán noticias ocasionales debajo de los 3 botones. Al hacer clic en la ‘x’ roja, se ocultará la noticia actual.

Página de inicio

Esto controla la página que se muestra al iniciar un navegador que se va a usar como proxy a través de ZAP.

Hay 3 opciones:

  • Página ZAP predeterminada
  • Página en blanco
  • URL (especifique a continuación)

La página ZAP predeterminada se lee desde una página en línea al iniciar. Si no desea que se solicite la página en línea, puede elegir una de las otras opciones.

URL: La URL de la página que desea que muestren los navegadores iniciados desde ZAP.

Línea de comandos

El complemento de Inicio rápido admite las siguientes opciones de línea de comandos:

  • quickurl: Especifica la URL de la aplicación de destino que será atacada.
  • quickout: Especifica el archivo en el que se escribirá el informe. El formato del informe dependerá de la extensión del archivo; las extensiones de archivo compatibles son .html, .json, .md, .xml. Si no se utiliza ninguna de estas extensiones, el formato será XML. Si no se configura en los modos ‘en línea’ y demonio, el informe se escribe en el flujo de salida predeterminado.
  • quickprogress: Mostrar barras de progreso ASCII, si se inicia con el indicador -cmd.
  • zapit: Realizar un escaneo rápido de ‘reconocimiento’ ‘ZAPit ‘ de la URL especificada; el indicador -cmd también debe estar configurado.

Ejemplos:

  • Inicie ZAP en modo ‘en línea’ con barras de progreso ASCII, acceda a la aplicación de destino  http://example.com/ y escriba el informe en el flujo de salida predeterminado:
    -cmd -quickurl http://example.com/ -quickprogress
  • Inicie ZAP con la interfaz de usuario, acceda a la aplicación de destino  http://example.com/ y guarde el informe en un archivo:
    -quickurl http://example.com/ -quickout /path/to/report.xml

El complemento de Inicio rápido admite la siguiente opción de línea de comandos para realizar un escaneo rápido de «reconocimiento» de la URL especificada.

Puede especificar varias URL especificando la opción varias veces:

La -cmdopción debe especificarse; si no lo está, -zapitse ignorará. Si no especifica una URL que comience con ninguno de los dos http://o https://con ninguno, ZAP escaneará ambos esquemas. El escaneo ZAPit iniciará una nueva sesión ZAP antes de realizar un escaneo, así que no inicie ZAP con una sesión que desee conservar. El escaneo ZAPit actualmente:

  1. Realiza una solicitud a la URL de destino
  2. Informa detalles clave sobre todas las solicitudes y respuestas realizadas (por ejemplo, debido a redirecciones)
  3. Informa sobre cualquier tecnología encontrada por el complemento de Detección de tecnología (si está instalado)
  4. Informa un resumen de las alertas encontradas
  5. Informa algunas estadísticas de la URL raíz

Ejemplo de salida:

ZAPit scan of https://www.example.com
Requests:
        https://www.example.com
                Request took 325 msec
                Response code 200 (OK)
                Response body size 1,256 bytes
                No request cookies
                No response cookies
Technology:
        Amazon ECS
        Amazon Web Services
        Azure
        Azure CDN
        Docker
Number of alerts: 9
        Medium: Content Security Policy (CSP) Header Not Set : «»
        Medium: Missing Anti-clickjacking Header : «x-frame-options»
        Low: Permissions Policy Header Not Set : «»
        Low: Server Leaks Version Information via «Server» HTTP Response Header Field : «ECS (dcb/7EC9)»
        Low: Strict-Transport-Security Header Not Set : «»
        Low: X-Content-Type-Options Header Missing : «x-content-type-options»
        Informational: Re-examine Cache-control Directives : «max-age=604800»
        Informational: Retrieved from Cache : «HIT»
        Informational: Storable and Cacheable Content : «max-age=604800»
Root page stats:
        Content type: text/html; charset=UTF-8
        Number of HTML tags: 24
        Number of HTML links: 1
        Number of HTML forms: 0
        Number of HTML input fields: 0

Esta función se encuentra en una etapa inicial y se planean más mejoras.

Modos

ZAP tiene un ‘modo’ que puede ser:

  • Seguro: no se permiten operaciones potencialmente peligrosas.
  • Protegido: solo puedes realizar acciones (potencialmente) peligrosas en las URL dentro del alcance .
  • Estándar: no restringe nada.
  • ATAQUE: los nuevos nodos que están dentro del alcance se escanean activamente tan pronto como se descubren.

Se recomienda que utilice el modo protegido para asegurarse de atacar únicamente los sitios que desea atacar. El modo se puede cambiar a través de la barra de herramientas (o la API ZAP) y se mantiene entre sesiones. Ejemplos de cosas que no serán posibles ni en el modo seguro ni en el modo protegido cuando no se actúa sobre las URL en el ámbito:

  • Arañas
  • Escaneo activo
  • Fuzzing
  • Navegación forzada
  • Rompiendo (interceptando)
  • Reenvío de solicitudes

Alcance

El alcance es el conjunto de URL que estás probando y está definido por los contextos que has especificado. De manera predeterminada, no hay nada dentro del alcance. El alcance puede cambiar potencialmente:

  • Qué puedes hacer cuando estás en modo protegido
  • Qué se muestra en la pestaña Historial
  • Protegido: el usuario solo puede realizar acciones (potencialmente) peligrosas en las URL dentro del ámbito
  • Estándar: como en versiones anteriores, el usuario puede hacer cualquier cosa
  • ATAQUE: los nuevos nodos que están dentro del alcance se escanean activamente tan pronto como se descubren

Se recomienda que defina un nuevo contexto para cada aplicación web que conforma el sistema que está probando y que los establezca en el alcance a medida que prueba cada uno.

 

Reglas del escáner

ZAP admite reglas de escaneo tanto activas como pasivas . Todas las reglas están contenidas en complementos para que se puedan actualizar de forma rápida y sencilla. De manera predeterminada, ZAP se entrega solo con las reglas de estado ‘Lanzamiento’, pero puede instalar las reglas de estado ‘Beta’ y ‘Alfa’ a través del cuadro de diálogo Administrar complementos . Las políticas de escaneo definen qué reglas se ejecutan y cómo se ejecutan. Puede tener tantas políticas de escaneo como desee para cubrir diferentes situaciones. Para administrar las políticas de escaneo, abra el cuadro de diálogo Administrador de políticas de escaneo.

Política de escaneo

Una política de escaneo define exactamente qué reglas se ejecutan como parte de un escaneo activo . También define cómo se ejecutan estas reglas, influyendo en la cantidad de solicitudes que se realizan y la probabilidad de que se marquen problemas potenciales. Puede definir tantas políticas de escaneo como desee y seleccionar la más adecuada cuando inicie el escaneo a través del Cuadro de diálogo de escaneo activo . Puede definir la política de escaneo predeterminada que se utilizará para los escaneos activos y para el modo de ataque a través de la pantalla Opciones de escaneo activo .

El escaneo activo es un ataque a esos objetivos. NO debes usarlo en aplicaciones web que no sean de tu propiedad. Cabe señalar que el escaneo activo solo puede encontrar ciertos tipos de vulnerabilidades. Ningún análisis de vulnerabilidades activo o automatizado detectará vulnerabilidades lógicas, como un control de acceso dañado. Siempre se deben realizar pruebas de penetración manuales además del escaneo activo para encontrar todo tipo de vulnerabilidades. El escaneo activo se configura mediante la pantalla Opciones de escaneo activo . También puede definir tantas políticas de escaneo como desee: estas definen exactamente qué reglas se ejecutan y cómo funcionan.

 

Opciones de Políticas de análisis

Este complemento proporciona un conjunto de políticas de análisis optimizadas para diferentes propósitos. Estas políticas se inicializan como se detalla en las páginas correspondientes, pero puede ajustarlas según sea necesario.

  • Política predeterminada : la política predeterminada, todas las reglas activas instaladas habilitadas
  • Política CICD para desarrolladores : una política diseñada para uso de CI/CD, centrada en problemas rápidos pero de mayor riesgo
  • Política estándar para desarrolladores : una política dirigida a los desarrolladores, diseñada para funcionar con bastante rapidez y, al mismo tiempo, proporcionar un mayor conjunto de resultados que la política CICD (diseñada para su uso en un entorno de desarrollo)
  • Política completa para desarrolladores : una política centrada en los desarrolladores, que incluye un superconjunto del estándar de desarrollo con una mayor variedad de hallazgos potenciales y solo reglas mínimas relacionadas con el entorno/servidor (diseñada para su uso en un entorno de desarrollo)
  • Política estándar de control de calidad : una política centrada en el control de calidad, diseñada para funcionar con bastante rapidez y, al mismo tiempo, proporcionar un mayor conjunto de resultados que las políticas para desarrolladores, diseñada para su uso en un entorno de control de calidad/ensayo.
  • Política completa de control de calidad : una política más completa centrada en el control de calidad, que incluye un superconjunto del estándar de control de calidad con una mayor variedad de hallazgos potenciales y más reglas relacionadas con el entorno/servidor, diseñada para su uso en un entorno de control de calidad/ensayo.
  • Política de API : una política centrada en los problemas que probablemente afecten a las API y no a la interfaz de usuario.
  • Política de prueba de penetración : una política que incluye todas las reglas de escaneo activas instaladas (excepto los ejemplos).

Política de API

Una política centrada en los problemas que probablemente afecten a las API y no a la interfaz de usuario.

Política predeterminada

Una política que habilita todas las reglas de análisis activas instaladas.

Política de CI/CD para desarrolladores

Esta política está diseñada para ser utilizada por desarrolladores en una canalización de CI/CD.

  • Recomendada para ejecutarse en CI/CD
  • Sin reglas relacionadas con el entorno/servidor
  • Sin reglas de larga duración
  • Sin reglas con muchos falsos positivos
  • Sin ataques de temporización
  • Sin reglas solo informativas
  • Superposición mínima

Política completa para desarrolladores

Una política centrada en el desarrollador, que incluye un superconjunto del estándar de desarrollo con una mayor variedad de hallazgos potenciales y solo reglas mínimas relacionadas con el entorno/servidor, diseñada para su uso en un entorno de desarrollo.

  • Un superconjunto del estándar para desarrolladores
  • Diseñado para ejecutarse en un entorno de desarrollo
  • Sin reglas con muchos falsos positivos
  • Sin ataques de tiempo
  • Reglas mínimas relacionadas con el entorno/servidor

Política estándar para desarrolladores

Una política centrada en el desarrollador diseñada para funcionar con bastante rapidez y, al mismo tiempo, proporcionar un mayor conjunto de resultados que la política CICD, diseñada para su uso en un entorno de desarrollo.

  • Un superconjunto de CICD para desarrolladores
  • Diseñado para ejecutarse en un entorno de desarrollo
  • Sin reglas relacionadas con el entorno/servidor
  • Sin reglas con muchos falsos positivos
  • Sin ataques de tiempo
  • Sin reglas solo informativas
  • Puede incluir reglas de ejecución más larga

Política de prueba de penetración

Una política que habilita todas las reglas de análisis activas instaladas, con la excepción de las reglas de ejemplo.

Política de CI/CD de control de calidad

Una política centrada en el control de calidad diseñada para funcionar con bastante rapidez, a la vez que proporciona un mayor conjunto de resultados que las políticas de desarrollador, diseñada para su uso en una canalización de CI/CD para un entorno de control de calidad/ensayo.

  • Recomendada para ejecutarse en CI/CD
  • Diseñada para ejecutarse en un entorno de control de calidad/ensayo cercano a producción
  • Un superconjunto de CI/CD de desarrollador, pero con importantes reglas de entorno/servidor habilitadas
  • Sin reglas de larga duración
  • Sin reglas con muchos falsos positivos
  • Sin ataques de temporización
  • Sin reglas solo informativas
  • Superposición mínima

Política completa de control de calidad

Una política centrada en el control de calidad, que incluye un superconjunto del estándar de control de calidad con una mayor variedad de hallazgos potenciales y más reglas relacionadas con el entorno/servidor, diseñada para su uso en un entorno de control de calidad/ensayo.

  • Diseñado para ejecutarse en un entorno de control de calidad/ensayo cercano a la producción
  • Un superconjunto de Developer Full (y QA Standard) pero con más reglas de entorno/servidor habilitadas

Política estándar de control de calidad

Una política centrada en el control de calidad diseñada para funcionar con bastante rapidez y, al mismo tiempo, proporcionar un mayor conjunto de resultados que las políticas de desarrollador, diseñada para su uso en un entorno de control de calidad/ensayo.

  • Diseñada para ejecutarse en un entorno de control de calidad/ensayo cercano a la producción
  • Un superconjunto del Estándar para desarrolladores, pero con importantes reglas de entorno/servidor habilitadas
  • No son problemas de entorno que todos deberían haber solucionado

Una prueba de penetración básica

Una prueba de penetración básica se compone de los siguientes pasos:

Explorar

Utilice su navegador para explorar todas las funciones de la aplicación. Siga todos los enlaces, pulse todos los botones y complete y envíe todos los formularios. Si la aplicación admite varios roles, haga lo mismo para cada uno. Para cada rol, guarde la sesión ZAP en un archivo diferente e inicie una nueva sesión antes de usar el siguiente rol.

Araña

Usa la araña para encontrar URLs que no hayas detectado o que estén ocultas. También puedes usar el complemento AJAX Spider para mejorar los resultados y rastrear los enlaces dinámicos. Explora los enlaces que encuentres.

Navegación forzada

Utilice el escáner de exploración forzada para encontrar archivos y directorios no referenciados (requiere el complemento “Exploración forzada”).

Escaneo activo

Utilice el escáner activo para encontrar vulnerabilidades básicas.

Prueba manual

Los pasos anteriores detectarán vulnerabilidades básicas. Sin embargo, para encontrar más vulnerabilidades, deberá probar la aplicación manualmente.

Escaneo pasivo

El escáner pasivo lo proporciona el complemento Passive Scanner , que permite escanear pasivamente mensajes (por ejemplo, HTTP, WebSocket) enviados mediante/proxy ZAP. El escaneo pasivo solo implica observar las solicitudes y respuestas sin procesar. ZAP en realidad no hace nada; solo observa el tráfico que pasa a través de él. Analiza este tráfico para identificar vulnerabilidades potenciales sin enviar nuevas solicitudes.  El escaneo pasivo es seguro de usar en cualquier aplicación web.  Este complemento es compatible con Automation Framework .

  • De forma predeterminada, ZAP escanea pasivamente todos los mensajes (por ejemplo, HTTP, WebSocket) enviados a la aplicación web que se está probando.
  • El escaneo pasivo no modifica los mensajes de ninguna manera y, por lo tanto, es seguro de utilizar.
  • El escaneo se realiza en segundo plano para garantizar que no ralentice la exploración de una aplicación.
  • El comportamiento (principal) del escáner pasivo se puede configurar utilizando la pantalla Opciones del escáner pasivo .
  • El escaneo pasivo también se puede utilizar para agregar etiquetas automáticamente y generar alertas sobre posibles problemas.
  • Se proporciona un conjunto de reglas para el etiquetado automático por defecto. Estas se pueden modificar, eliminar o añadir mediante la pantalla Opciones de Etiquetas de Escaneo Pasivo .
  • Las alertas generadas por las reglas de escaneo pasivo se pueden configurar mediante la pantalla Opciones de reglas de escaneo pasivo .

El complemento Passive Scanner proporciona las siguientes pantallas de opciones:

  • Escáner pasivo: Permite configurar el escáner pasivo.
  • Reglas de escaneo pasivo: Permite configurar las reglas de escaneo pasivo.
  • Etiquetas de escaneo pasivo: Permite configurar las etiquetas que se agregan mediante el escáner pasivo.

Opciones de configuración

CampoDetallesPor defectoArchivo de configuración
Escanear únicamente los mensajes dentro del alcanceEstablece si el escaneo pasivo debe realizarse o no solo en los mensajes que están dentro del alcance.DeseleccionadoClave: pscans.scanOnlyInScopeValores: trueofalse
Incluir tráfico del Fuzzer durante el escaneo pasivoEstablece si se debe realizar o no el escaneo pasivo en los mensajes generados por el Fuzzer.DeseleccionadoClave: pscans.scanFuzzerMessagesValores: trueofalse
Max alerta que cualquier regla puede generarEstablece el número máximo de alertas que debe generar una regla de análisis pasivo. Este valor puede superarse ligeramente debido al subproceso. Esta configuración suele ser útil solo para análisis automatizados. Las reglas de análisis que superen este valor se deshabilitarán y deberán habilitarse manualmente al iniciar una nueva sesión.0 (sin establecer)Clave: pscans.maxAlertsPerRuleValores: 0: no establecido o el número máximo de alertas
Tamaño máximo del cuerpo en bytes para escanearEstablece el tamaño máximo en bytes del cuerpo de la solicitud o respuesta que analizará el escáner pasivo. Esto se puede usar si las reglas de análisis pasivo tardan demasiado en analizar solicitudes o respuestas muy grandes. Si se configura, el número de solicitudes y respuestas ignoradas se registra en las estadísticas mediante las claves stats.pscan.reqBodyTooBigy, stats.pscan.respBodyTooBigrespectivamente.0 (sin establecer)Clave: pscans.maxBodySizeInBytesValores: 0: no establecido o el tamaño máximo del cuerpo en bytes
Limpiar colaVacía la cola de escaneo pasivo sin escanear pasivamente los mensajes. Las reglas en ejecución se ejecutarán hasta su finalización, pero las nuevas reglas solo se ejecutarán cuando se agreguen nuevos mensajes a la cola.  

Reglas de escaneo pasivo

Esta pantalla le permite configurar las reglas de escaneo pasivo.

  • Anti-clickjacking Header
  • Application Error Disclosure
  • Big Redirect Detected (Potential Sensitive Information Leak)
  • Cache Control
  • Charset Mismatch
  • Content-Security-Policy Missing
  • Content-Type Missing
  • Cookie HttpOnly
  • Cookie Loosely Scoped
  • Cookie without SameSite Attribute
  • Cross-Domain Script Inclusion
  • Cross-Domain Misconfiguration
  • Content Security Policy (CSP) (análisis de la cabecera, no solo que falte)
  • CSRF Countermeasures
  • Directory Browsing
  • Information Disclosure – Debug Errors
  • Information Disclosure – In URL
  • Information Disclosure – Referrer
  • Information Disclosure – Suspicious Comments
  • Insecure Authentication
  • Insecure JSF ViewState
  • Mixed Content
  • Modern Web Application (detección de tecnologías modernas)
  • Out-of-site Redirect
  • PII Disclosure (datos personales)
  • Private Address Disclosure (IPs privadas en la respuesta)
  • Retrieved from Cache
  • Reverse Tabnabbing
  • Script Served From Malicious Domain (polyfill)
  • Server Leaks Information via “X-Powered-By” HTTP Response Header Field(s)
  • Session ID in URL Rewrite
  • Strict-Transport-Security Header
  • Timestamp Disclosure
  • User Controllable Charset
  • User Controllable HTML Element Attribute (Potential XSS)
  • User Controllable JavaScript Event (XSS)
  • Username Hash Found
  • VIEWSTATE (varias comprobaciones)
  • X-AspNet-Version Response Header
  • X-Backend-Server Header Information Leak
  • X-ChromeLogger-Data Header Information Leak
  • X-Content-Type-Options (Anti-MIME-Sniffing)
  • X-Debug-Token Information Leak (Symfony)
  • ZAP is Out of Date

Reglas de escaneo pasivo – Beta

  • Content Cacheability
  • Dangerous JS Functions
  • In-Page Banner Information Leak
  • Java Serialization Object
  • Permissions-Policy Header Not Set
  • Site Isolation (COOP/COEP/CORP)
  • Servlet Parameter Pollution
  • Source Code Disclosure
  • Sub-Resource Integrity (SRI) Attribute Missing

Reglas de escaneo pasivo – Alpha

  • An Example Passive Scan Rule Which Loads Data From a File
  • Base64 Disclosure
  • Example Passive Scan Rule: Denial of Service
  • Fetch Metadata Request Headers Scan Rule
  • Full Path Disclosure Scan Rule

Límite

Esto controla la probabilidad de que ZAP informe vulnerabilidades potenciales.

  • Si selecciona Desactivado, la regla de escaneo no se ejecutará.
  • Si selecciona Bajo, surgirán más problemas potenciales que pueden incrementar la cantidad de falsos positivos.
  • Si selecciona Alto, se plantearán menos problemas potenciales, lo que puede significar que se pasen por alto algunos problemas reales (falsos negativos).

Escaneo activo

El análisis activo intenta encontrar otras vulnerabilidades mediante ataques conocidos contra los objetivos seleccionados. Solo puede encontrar ciertas vulnerabilidades, como XSS , inyección SQL , desbordamientos de búfer, Log4Shell e inclusión remota de archivos.  El escáner activo no puede encontrar vulnerabilidades lógicas, como un control de acceso dañado.

Puede establecer políticas para sus análisis. Estas políticas le permiten establecer el umbral para la cantidad de problemas detectados y las opciones de intensidad determinan la cantidad de ataques realizados por parámetro. Al igual que con la mayoría de las herramientas de ZAP, puede configurar las opciones para el escaneo activo. Estas incluyen la cantidad de hosts escaneados simultáneamente, la duración máxima del escaneo y si se deben manejar tokens CSRF.

Seleccione “Escaneo automático” en el menú de inicio rápido para comenzar. 

El escaneo activo es un ataque a esos objetivos. NO debes usarlo en aplicaciones web que no sean de tu propiedad. Para facilitar la identificación del tráfico ZAP y las excepciones del Firewall de aplicaciones web, ZAP viene acompañado de un script “AddZapHeader.js” que se puede usar para agregar un encabezado específico a todo el tráfico que pasa a través o se origina en ZAP. p.ej: X-ZAP-Initiator: 3

Reglas de escaneo activo (Release / estables)

  • .env Information Leakage
  • .htaccess Information Leak
  • Buffer Overflow
  • Cloud Metadata Attack
  • Code Injection
  • Command Injection
  • Command Injection – Timing
  • Cross Site Scripting (Persistent)
  • Cross Site Scripting (Reflected)
  • CRLF Injection
  • Directory Browsing
  • ELMAH Information Leak
  • External Redirect
  • Format String Error
  • GET for POST
  • Heartbleed OpenSSL Vulnerability
  • Hidden Files and Directories (Hidden File Finder)
  • Log4Shell (JNDI Injection)
  • Padding Oracle
  • Parameter Tamper
  • Path Traversal
  • Remote Code Execution – PHP CGI Argument Injection (CVE-2012-1823)
  • Remote File Inclusion
  • Server Side Include (SSI) Injection
  • Server Side Template Injection (SSTI)
  • Server Side Template Injection (Blind)
  • Source Code Disclosure – PHP (CVE-2012-1823)
  • Source Code Disclosure – /WEB-INF/
  • Spring4Shell
  • Spring Actuator
  • SQL Injection
  • SQL Injection – Hypersonic (Time Based)
  • SQL Injection – Microsoft SQL Server (Time Based)
  • SQL Injection – MySQL (Time Based)
  • SQL Injection – Oracle (Time Based)
  • SQL Injection – PostgreSQL (Time Based)
  • SQL Injection – SQLite (Time Based)
  • trace.axd Information Leak
  • User Agent Fuzzer
  • XPath Injection
  • XSLT Injection
  • XML External Entity (XXE) Injection

 Reglas de escaneo activo – Alpha

  • LDAP Injection
  • MongoDB Injection
  • MongoDB Injection (Time Based)
  • Web Cache Deception
  • Suspicious Input Transformation

Reglas de escaneo activo – Beta

  • Backup File Disclosure
  • Cookie Slack Detector
  • CORS Misconfiguration
  • Cross-Domain Misconfiguration (Active) (esta es la versión activa, distinta de la pasiva)
  • CSRF Token Scanner
  • Exponential Entity Expansion (Billion Laughs)
  • Expression Language Injection
  • HTTP Only Site (detecta cuando el sitio solo está en HTTP)
  • HttPoxy
  • HTTPS-as-HTTP (contenido HTTPS servido como si fuera HTTP)
  • HTTP Parameter Pollution (HPP)
  • Insecure HTTP Method
  • Integer Overflow Error
  • Out-of-Band XSS
  • Proxy Disclosure
  • Relative Path Confusion
  • Session Fixation
  • ShellShock
  • Source Code Disclosure – SVN
  • Source Code Disclosure – File Inclusion
  • Source Code Disclosure – Git
  • Server-Side Request Forgery (SSRF)
  • Text4Shell
  • Username Enumeration

Iniciando el Escaneo activo

Cabe señalar que el escaneo activo solo puede encontrar ciertos tipos de vulnerabilidades. Ningún análisis de vulnerabilidades activo o automatizado detectará vulnerabilidades lógicas, como un control de acceso dañado. Siempre se deben realizar pruebas de penetración manuales además del escaneo activo para encontrar todo tipo de vulnerabilidades. El escaneo activo se configura mediante la pantalla Opciones de escaneo activo . Las reglas que se ejecutan se configuran a través de Políticas de escaneo : puede tener tantas como desee.

Esto abrirá la pantalla de inicio del análisis automático. Aquí, deberás configurar la URL, el rastreador y el navegador que deseas utilizar. Una vez que estés listo, selecciona «Atacar» para comenzar.

 

Ejecución de un análisis automatizado

La forma más sencilla de empezar a usar ZAP es a través de la pestaña Inicio rápido. Este complemento se incluye automáticamente al instalar ZAP.

Para ejecutar un análisis automatizado de inicio rápido:

  1. Inicie ZAP y haga clic en la pestaña Inicio rápido de la ventana del espacio de trabajo.
  2. Haga clic en el botón grande de escaneo automatizado.
  3. En el cuadro de texto URL para atacar , ingrese la URL completa de la aplicación web que desea atacar.
  4. Haga clic en el ataque

 

ZAP rastreará la aplicación web con su araña y escaneará pasivamente cada página que encuentre. Luego, usará el escáner activo para analizar todas las páginas, funciones y parámetros detectados. ZAP proporciona 2 arañas para rastrear aplicaciones web, puedes usar una de ellas o ambas desde esta pantalla.

La araña ZAP tradicional, que descubre enlaces examinando el HTML en las respuestas de la aplicación web, es rápida, pero no siempre eficaz al explorar una aplicación web AJAX que genera enlaces mediante JavaScript.

Para aplicaciones AJAX, la araña AJAX de ZAP probablemente sea más efectiva. Esta araña explora la aplicación web invocando navegadores que siguen los enlaces generados. La araña AJAX es más lenta que la araña tradicional y requiere configuración adicional para su uso en un entorno sin interfaz gráfica.

ZAP escaneará pasivamente todas las solicitudes y respuestas que se transmitan a través de él. Hasta ahora, ZAP solo ha realizado escaneos pasivos de su aplicación web. El escaneo pasivo no modifica las respuestas de ninguna manera y se considera seguro. El escaneo también se realiza en segundo plano para no ralentizar la exploración. El escaneo pasivo es útil para detectar vulnerabilidades y para comprender el estado básico de seguridad de una aplicación web y determinar dónde se requiere una investigación más exhaustiva.

Sin embargo, el análisis activo intenta encontrar otras vulnerabilidades mediante ataques conocidos contra los objetivos seleccionados. El análisis activo constituye un ataque real contra dichos objetivos y puede ponerlos en riesgo, por lo que no lo utilice contra objetivos que no tenga permiso para probar.

Pestaña Sitios

La pestaña de sitios contiene dos árboles, uno para Contextos y el otro para el Árbol de sitios .

Árbol de contextos

Muestra los contextos de la sesión actual. Permite acceder rápidamente a sus propiedades haciendo doble clic en ellas y proporciona acceso a otras funciones mediante el menú contextual del componente.

  • Menú de clic derecho Al hacer clic derecho en un contexto aparecerá un menú que le permitirá:
  • Escaneo activo… Esto iniciará el cuadro de diálogo Escaneo activo que le permite iniciar un escaneo activo con el punto de inicio establecido en el contexto que seleccionó.
  • Araña… Esto iniciará el cuadro de diálogo Araña, que le permitirá iniciar la araña con el punto de inicio establecido en el contexto que seleccionó.
  • Agregar al alcance/Eliminar del alcance Permite agregar o eliminar el contexto seleccionado del alcance .
  • Borrar Permite eliminar el contexto seleccionado.
  • Contexto de exportación… Permite exportar el contexto seleccionado.
  • Exportar URL para contexto Permite exportar las URL del contexto seleccionado.

Árbol de sitios


El Árbol de Sitios es la representación interna de ZAP de los sitios a los que accede y se muestra en la pestaña Sitios . Si no refleja con precisión los sitios, ZAP no podrá atacarlos eficazmente. Cada nodo del árbol representa una funcionalidad diferente de un sitio. De forma predeterminada, ZAP creará nodos únicos en el árbol según el método HTTP y los nombres de los parámetros. Esto significa que las siguientes solicitudes terminarán teniendo diferentes nodos de árbol:

Y las siguientes solicitudes terminarán teniendo el mismo nodo:

Esto funciona bastante bien en muchos casos: diferentes métodos HTTP y nombres de parámetros generalmente significan acciones diferentes, mientras que los valores de los parámetros normalmente no cambian el resultado.

Excepciones

Siempre hay excepciones.

Parámetros estructurales

Tomemos el caso en el que la acción a realizar está realmente definida en un valor de parámetro:

En este caso, ambas URL terminarán en el mismo nodo del Árbol de Sitios, lo que significa que, en la práctica, solo una de ellas será atacada. La otra URL no será atacada, por lo que no se encontrarán vulnerabilidades específicas de esa acción.

En ZAP, la solución es definir el parámetro «acción» como un parámetro estructural ; es decir, un parámetro cuyo valor afecta la estructura de un sitio. Una vez hecho esto (y revisadas las URL), aparecerán como dos nodos diferentes y ZAP los atacará por separado.

Nodos controlados por datos

Por el contrario, tenemos el caso en el que un elemento de ruta URL forma parte de los datos y no de la estructura del sitio. Por ejemplo, las siguientes URL podrían representar la misma funcionalidad si el segundo elemento de ruta (empresaX) fueran datos:

En este caso, las tres URL terminarán en nodos únicos y ZAP atacará cada uno de ellos, aunque no sea realmente necesario. Esto probablemente no sea un gran problema si solo hay tres instancias, pero en la mayoría de los casos, estos datos provendrán de una base de datos, por lo que podría haber una gran cantidad de nodos de este tipo.

La solución es definir el elemento de ruta relevante como Contenido Basado en Datos , lo que significa que los elementos de ruta contienen datos en lugar de representar parte de la estructura del sitio. Una vez hecho esto (y revisadas las URL), todos se representarán como un solo nodo y ZAP solo los atacará una vez.

Necesitará definir manualmente los parámetros estructurales y los nodos controlados por datos: ZAP actualmente no tiene la capacidad de detectar automáticamente estas situaciones.

Parámetros personalizados

Finalmente, existen casos en los que los sitios web definen parámetros personalizados que ZAP no comprende de forma nativa. Como resultado, ZAP podría no poder dividir correctamente las solicitudes en los nodos adecuados.

En estos casos, puede utilizar scripts de vectores de entrada que pueden representar la solicitud en el árbol de sitios de cualquier forma que desee. Muestra todas las URL visitadas en una estructura de árbol. Puede seleccionar cualquiera de los nodos del árbol para mostrar la solicitud y la respuesta de esa URL en las pestañas correspondientes.

Menú de clic derecho

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

  • Ataque El menú Ataque tiene los siguientes submenús:
  • Escaneo activo… Esto iniciará el cuadro de diálogo Escaneo activo que le permite iniciar un escaneo activo con el punto de inicio establecido en la solicitud que seleccionó.
  • Araña… Esto iniciará el cuadro de diálogo Spider, que le permitirá iniciar el spider con el punto de inicio establecido en la solicitud que seleccionó.
  • Incluir en contexto Este menú le permite incluir los nodos seleccionados y todos sus subordinados en el contexto especificado . También puede crear un nuevo contexto. Se mostrará el cuadro de diálogo Contextos de sesión para que pueda realizar cambios adicionales.
  • Excluir del contexto Este menú permite excluir los nodos seleccionados y todos sus subordinados del contexto especificado . Se mostrará el cuadro de diálogo Contextos de sesión para que pueda realizar cambios adicionales.
  • Marcar como contexto Este menú tiene los siguientes submenús para cada uno de los contextos que haya definido:
  • Nombre del contexto Solicitud de inicio de sesión de autenticación basada en formulario Esto identifica el nodo especificado como una solicitud de inicio de sesión para el contexto especificado. Solo se puede tener un nodo identificado como tal en cada contexto. Se mostrará la pantalla «Autenticación del contexto de sesión» para que pueda realizar cambios adicionales.
  • Nombre de contexto Solicitud de inicio de sesión de autenticación basada en JSON Esto identifica el nodo especificado como una solicitud de inicio de sesión para el contexto especificado. Solo se puede tener un nodo identificado como tal en cada contexto. Se mostrará la pantalla «Autenticación del contexto de sesión» para que pueda realizar cambios adicionales.
  • Nombre del contexto Nodo controlado por datos Esto identifica el nodo especificado como contenido basado en datos para el contexto especificado. Se mostrará la pantalla «Estructura del contexto de la sesión» para que pueda realizar cambios adicionales.
  • Excluir de Este menú tiene los siguientes submenús:
  • Apoderado Esto excluirá los nodos seleccionados del proxy. Seguirán siendo proxyizados mediante ZAP, pero no se mostrarán en ninguna de las pestañas. Esto permite ignorar las URL que no son relevantes para el sistema que se está probando. Los nodos se pueden volver a incluir mediante el cuadro de diálogo Propiedades de la sesión .
  • Escáner Esto evitará que los nodos seleccionados se escaneen activamente. Los nodos se pueden volver a incluir mediante el cuadro de diálogo Propiedades de la sesión .
  • Araña Esto evitará que los nodos seleccionados sean rastreados. Los nodos pueden volver a incluirse mediante el cuadro de diálogo Propiedades de la sesión .
  • Borrar Esto eliminará el nodo y todos sus elementos secundarios de ZAP. Sin embargo, se pueden volver a agregar. Para evitarlo, utilice los menús «Excluir de».
  • Romper… Se abrirá una nueva ventana que le permitirá establecer un punto de interrupción en esa URL. Este punto se define mediante una expresión regular. Si visita una URL que coincida con esta expresión, ZAP la interceptará y le permitirá modificar la solicitud o la respuesta.
  • Alertas para este nodo Si la URL seleccionada tiene alertas asociadas, estas se mostrarán en este menú. Al seleccionar una de ellas, se mostrará.
  • Nueva alerta… Esto abrirá el cuadro de diálogo Agregar alerta , que le permitirá registrar manualmente una nueva alerta para esta solicitud.
  • Mostrar en la pestaña Historial Esto mostrará el nodo seleccionado en la pestaña Historial .
  • Abrir URL en el navegador Esto abrirá la URL del nodo seleccionado en su navegador predeterminado.
  • Generar formulario de prueba anti CSRF Esto abrirá una URL que te proporcionará un formulario generado para probar problemas de CSRF. Solo estará habilitado para solicitudes POST si la API está habilitada y si Java admite la apertura de URL en un navegador de tu plataforma.
  • Actualizar el árbol de sitios Ocasionalmente, el árbol de Sitios puede mostrarse incorrectamente: esta opción lo redibujará.

Gestión de sesiones

ZAP gestiona varios tipos de gestión de sesiones (denominados métodos de gestión de sesiones ) que pueden utilizarse para sitios web y aplicaciones web. Cada contexto tiene definido un método de gestión de sesiones que determina cómo se mantienen las sesiones.

  • Gestión de sesiones basada en cookies En este método, la sesión se rastrea mediante cookies. Actualmente, los tokens de sesión utilizados se importan desde la extensión de sesiones HTTP .
  • Gestión de sesiones de autenticación HTTP En el caso de este método la sesión se gestiona con el encabezado de solicitud HTTP Authorization.
  • Gestión de sesiones basada en scripts Este método es útil para sitios web o aplicaciones web donde la gestión de sesiones es más compleja y resulta beneficioso contar con scripts personalizados que gestionen el proceso. Para usar este método, primero debe definir un script de gestión de sesiones que analice los mensajes o realice otras acciones según las necesidades de su aplicación web. Este script se selecciona para un contexto determinado y se invoca cada vez que se realizan acciones de gestión de sesiones. La configuración se realiza mediante el cuadro de diálogo Contextos de sesión y requiere tener instalado el complemento ZAP de la Consola de Scripts desde Marketplace.

Pantallas de contexto de sesión

Estas pantallas le permiten administrar contextos. Hay un conjunto de pantallas para cada contexto que defina.

Pantalla superior

Esto le permite establecer el nombre y la descripción del contexto.

Incluir en contexto

Esto le permite administrar las URL que se incluirán en el contexto. Las URL que no coincidan con ninguna de las expresiones regulares no se incluirán en el contexto. Las expresiones regulares deben coincidir con toda la URL. Al probar objetivos que operan en puertos predeterminados (80 para http, 443 para https), no se debe incluir la porción del puerto de dos puntos de la URL. Incluir esa porción (por ejemplo: http://example.com:80 ) puede resultar en la incapacidad de rastrear o probar el objetivo. Si se especifica un puerto «predeterminado», tanto los navegadores como ZAP lo tratan sin que se incluya el puerto predeterminado, entonces no coincide con la expectativa dentro del Contexto y no hay nada con lo que interactuar como parte del Contexto.

Excluir del contexto

Esto le permite administrar las URL que se excluirán del contexto. Solo necesita especificar expresiones regulares para las URL que no desea incluir, pero que coinciden con una o más de las expresiones regulares de «include». Las expresiones regulares deben coincidir con toda la URL.

Estructura

Consulte la pantalla Estructura del contexto de la sesión .

Tecnología

Esto le permite especificar las tecnologías utilizadas en el contexto, si se conocen. Por defecto, se incluyen todas las tecnologías. Si excluye tecnologías que sabe que no se utilizan, puede acelerar el análisis activo , ya que se pueden omitir las reglas específicas de las tecnologías excluidas.

Autenticación

Consulte la pantalla Autenticación de contexto de sesión .

Gestión de sesiones Esto le permite gestionar la forma en que se realiza la Gestión de Sesiones para el Contexto. Tras seleccionar el tipo de Método de Gestión de Sesiones, las opciones que deben configurarse dependen de este.

Gestión de sesiones basada en cookies No se requiere configuración para este método de gestión de sesiones.

Gestión de sesiones de autenticación HTTP No se requiere configuración para este método de gestión de sesiones.

Gestión de sesiones basada en scripts

Para usar este método de gestión de sesiones, primero debe escribir (y guardar) un script de gestión de sesiones mediante la pestaña Scripts (consulte los ejemplos y plantillas proporcionados para este tipo de script en la pestaña Scripts). A continuación, introduzca el nombre del script en la lista desplegable. Tras seleccionar el script, pulse el botón Cargar para cargar todos los requisitos. Los parámetros que haya especificado como obligatorios u opcionales en el script se mostrarán en la interfaz que se definirá. Sus valores estarán disponibles para su uso en el script durante la gestión de sesiones, como se muestra en los ejemplos de scripts de gestión de sesiones. Asegúrese de volver a cargar el script tras realizar cualquier cambio en los parámetros requeridos por el script de gestión de sesiones. De lo contrario, los parámetros mostrados en la interfaz podrían no ser los utilizados durante la gestión de sesiones y podrían producirse errores.

Pantalla de autenticación del contexto de sesión

Esta es una de las pantallas de Contexto de sesión que le permite administrar la forma en que se realiza la autenticación para el contexto.

Método de autenticación

Después de seleccionar el tipo de método de autenticación , las opciones que deben configurarse dependen del método de autenticación. Nota: Cambiar el método de autenticación después de definir los usuarios podría provocar que se restablezcan sus credenciales, ya que el tipo de credenciales de usuario debe coincidir con el esquema de autenticación. Se mostrará un cuadro de diálogo de confirmación cuando esto ocurra.

Autenticación manual

Este método de autenticación no requiere configuración.

Autenticación basada en formularios

Para configurar este método de autenticación, debe proporcionar la URL de inicio de sesión donde se realiza la solicitud, el cuerpo de la solicitud (datos POST), si es necesario, e identificar los parámetros utilizados para proporcionar el nombre de usuario y la contraseña. Si no se proporciona el cuerpo de la solicitud, la solicitud de inicio de sesión se realiza mediante HTTP GET; de lo contrario, se utiliza HTTP POST. Las credenciales se configuran en la pestaña Usuarios .  La página de inicio de sesión también se puede proporcionar para indicar dónde obtener una nueva sesión (por ejemplo, cookies) y regenerar los tokens anti-CSRF presentes en el cuerpo de la solicitud . Si no se proporciona la página de inicio de sesión, se utiliza la URL de inicio de sesión .

Autenticación basada en JSON

Para configurar este método de autenticación, debe proporcionar la URL de inicio de sesión donde se realiza la solicitud, el objeto JSON (datos POST application/json) e identificar los parámetros utilizados para proporcionar el nombre de usuario y la contraseña. Las credenciales se configuran en la pestaña Usuarios . También se puede proporcionar la página de inicio de sesión para indicar dónde obtener una nueva sesión (por ejemplo, mediante cookies). Si no se proporciona la página de inicio de sesión , se utiliza la URL de inicio de sesión .

Ejemplos de datos POST:

  • {«username»:»{%username%}»,»password»:»{%password%}»}
  • {«user»:{«mail»:»{%username%}»,»password»:»{%password%}»}}

donde {%username%}e {%password%}indican dónde se establecen las credenciales de autenticación.

Autenticación HTTP/NTLM

Para configurar este método de autenticación, debe proporcionar el nombre de host y el puerto del servidor donde se realiza la autenticación, así como el dominio al que se aplican las credenciales. Las credenciales se configuran en la pestaña Usuarios.

Autenticación basada en scripts

Para usar este método de autenticación, primero debe escribir (y guardar) un script de autenticación en la pestaña «Scripts» (consulte los ejemplos y plantillas para este tipo de script en la pestaña «Scripts»). A continuación, introduzca el nombre del script en la lista desplegable. Tras seleccionar el script, pulse el botón «Cargar» para cargar todos los requisitos. Los parámetros especificados como obligatorios u opcionales se mostrarán en la interfaz.

Sus valores estarán disponibles para su uso en el script durante la autenticación, como se muestra en los ejemplos de scripts de autenticación. Asegúrese de volver a cargar el script después de realizar cualquier cambio en los parámetros requeridos por el script de autenticación. De lo contrario, los parámetros mostrados en la interfaz podrían no ser los utilizados durante la autenticación y podrían producirse errores. Las credenciales utilizadas para cada usuario durante el proceso de autenticación también se pueden especificar en el script de autenticación y se configuran en la pestaña «Usuarios».

Estrategia de verificación

Seleccione la estrategia de verificación de autenticación requerida.

Patrón de expresión regular utilizado para identificar mensajes de inicio de sesión

Si se especifica este patrón de expresión regular y coincide con cualquier cadena en el mensaje especificado, entonces ZAP tratará este mensaje como si hubiera iniciado sesión. Por ejemplo, el patrón podría usarse para hacer coincidir un enlace  http://example.com/logout o la presencia de un mensaje de «Bienvenido, Usuario X».

Patrón de expresión regular utilizado para identificar mensajes de desconexión

Si se especifica este patrón de expresión regular y coincide con cualquier cadena del mensaje especificado, ZAP considerará que el mensaje se ha cerrado. Por ejemplo, el patrón podría usarse para buscar coincidencias con un enlace a http://example.com/login o con la presencia de un mensaje de «Bienvenido, invitado».

Frecuencia de la encuesta

Esto controla la frecuencia con la que ZAP sondeará para verificar si un usuario sigue autenticado. El número entero representará el número de solicitudes que se realizarán antes de que ZAP vuelva a sondear o el número de segundos antes de que vuelva a sondear, según el menú desplegable seleccionado.

Esta opción solo es relevante si se ha seleccionado la estrategia de verificación «Sondear la URL especificada».

URL para sondear para verificación

Esta es la URL que ZAP sondeará para comprobar si un usuario sigue autenticado.

Esta opción solo es relevante si se ha seleccionado la estrategia de verificación «Sondear la URL especificada».

Solicitud de encuesta de datos POST

Si se proporciona, se enviará como POST en la solicitud de sondeo. Si está vacío, ZAP realizará una solicitud GET.

Esta opción solo es relevante si se ha seleccionado la estrategia de verificación «Sondear la URL especificada».

Encabezados de solicitud de encuesta adicionales

Un conjunto opcional de encabezados que se enviarán con la solicitud de sondeo. Cada línea debe contener un encabezado y un valor separados por dos puntos, por ejemplo:

Content-Type: application/json
X-Requested-With: XMLHttpRequest

La opción solo es relevante si se ha seleccionado la estrategia de verificación “Sondear la URL especificada”.

Pantalla de estructura del contexto de la sesión

Esta es una de las pantallas de Contexto de sesión que le permite administrar la comprensión de ZAP de la estructura de la aplicación.

  • Separadores de pares clave-valor de URL Los caracteres que separan pares de claves y valores en las URL, por defecto ‘&’.
  • Separadores de valores de clave de URL Los caracteres que separan claves y valores en las URL, por defecto ‘=’.
  • Separadores de pares clave-valor POST Los caracteres que separan pares de claves y valores en los datos POST, por defecto ‘&’.
  • Separadores de clave-valor POST Los caracteres que separan claves y valores en los datos POST, por defecto ‘=’.
  • Modificadores estructurales Los Modificadores Estructurales que se aplican a este contexto, los cuales pueden ser:
    • 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

Usuarios

Los usuarios son las representaciones ZAP de los usuarios de sitios web/aplicaciones web. Permiten realizar ciertas acciones desde la perspectiva del usuario de las aplicaciones web. Para cada contexto , se puede definir un conjunto de usuarios, que luego se pueden usar en acciones relacionadas con el contexto. Normalmente, durante varios escaneos, los mensajes de solicitud se pueden enviar desde la perspectiva del usuario.

El concepto de Usuario está estrechamente vinculado a los conceptos de Gestión de Sesiones y Autenticación . Cuando un Usuario se utiliza por primera vez en ZAP, se realiza una autenticación (según el Método de Autenticación definido para el Contexto) y se crea y configura una Sesión para este usuario (según la Gestión de Sesiones definida para el Contexto). Posteriormente, las solicitudes enviadas desde la perspectiva de un Usuario se modifican (si es necesario) y se envían de forma que el servidor web las identifique como enviadas por un usuario autenticado de la aplicación web o el sitio web. Si en algún momento un Usuario parece no estar autenticado (según lo determinado por la Estrategia de Verificación de Autenticación ), se realiza una nueva autenticación y la Sesión se actualiza en consecuencia.

Para realizar la autenticación de un usuario en un sitio web / en una webapp, el Método de Autenticación define cómo se realiza la autenticación (el proceso), mientras que las credenciales necesarias (los identificadores exactos) dependen del usuario, por lo que, en ZAP, se configuran en los Usuarios. 

Esto le permite configurar un conjunto de usuarios que pueden usarse para diversas otras acciones en toda la aplicación. La sección de credenciales de los Usuarios depende del Método de Autenticación configurado para el Contexto.

Página personalizada

Esta funcionalidad permite gestionar situaciones en las que el destino no devuelve una respuesta de error conforme a RFC o esperada en condiciones como 404 – No encontrado, 500 – Error interno del servidor, etc. A menudo, los desarrolladores implementan la gestión personalizada de errores 404 o 500, pero no devuelven un código de estado adecuado. Aprovechando las definiciones de páginas personalizadas, se pueden definir URL o contenido de respuesta que identifiquen las respuestas de error, independientemente del código de estado asociado a la respuesta.

Expresiones regulares de URL

En los paneles Incluir en * , Excluir de * y los indicadores de inicio/cierre de sesión del panel Autenticación , etc., puede introducir expresiones regulares para definir las URL excluidas. Si bien puede escapar un metacarácter con una barra invertida, también puede usar la secuencia de escape \Q…\E . Todos los caracteres entre \Q y \E se interpretan como literales. Por ejemplo, \Q*\d+*\E coincide con el texto literal *\d+*. Esta secuencia de escape se utiliza en ZAP al excluir URL mediante algunos menús contextuales.

Nota: Si su URL contiene un «\E», debe seguir estos pasos al usar la secuencia de escape \Q…\E :

  • Abrir la secuencia de escape
  • Cierra la secuencia de escape antes del “carácter” \E
  • Escapar de la barra invertida
  • Abra después de “\E” otra secuencia de escape;
  • Cierre la secuencia de escape como lo haría normalmente.

Ejemplo: subdomain.example.com/path?a= \E &moredata=2 debería aparecer como \Qsubdomain.example.com/path?a=\E \\E \Q&moredata=2\E

Contexto Practico

Esta función permite utilizar expresiones regulares para definir y agrupar un conjunto de recursos;  por ejemplo, un subdominio concreto de determinado servicio web, un directorio de cierta URL, etc. 

Tras definir un contexto es posible aplicar acciones concretas únicamente a los recursos web incluidos en dicho contexto. Por ejemplo, a la hora de realizar un escaneo activo contra determinado dominio, podemos previamente definir mediante un contexto, un subconjunto de recursos de dicho dominio y limitar el escaneo a los mismos. De esta manera acotamos las peticiones y los test de seguridad reduciendo significativamente el ruido generado por este tipo de prueba. 

Veamos un ejemplo de una web online, no en un laboratorio. Vamos a poder construir un mapa del sitio basado en la URL que hemos visitado. Ahora digamos que Acunetix nos contrató para testear su sitio ttps://testasp.vulnweb.com/.

Bien, vemos que tenemos todo estos otros sitios que son de terceros y no son parte de nuestro objetivo

Estos sitios vienen en forma de bibliotecas ya sean JS, CSS, API, etc. Lo cual puede ser confuso pero además es importante de que nuestro análisis no escape de nuestro objetivo, claramente no queremos que se termine auditando un sitio para el cual no tenemos permiso (muchos de estos sitios bloquearan tu IP, por lo cual ya no podrás acceder desde ningún otro dispositivo desde la red en la que compartas esa IP publica). Así que es ideal identifica el sitio que esta dentro del alcance y que quieres incluir en el contexto particular

Piensa en el contexto como pequeños espacios en donde tenes diferentes sitios. Es una forma de organizar los sitios realmente útil.

Puede ver aquí el dominio que incluiste, también podes excluir sitios o sub dominios.

Una vez que hagas eso aun podes ver todos esos sitios. Entonces podemos habilitar el default context para solo ver lo que nos interesa. Y desde ahí puede ejecutar directamente una Active Scan.

Una vez que la función está abierta, puede escanear toda la solicitud o especificar el parámetro/campo/ubicación que desea escanear. El primer caso es el comportamiento predeterminado, por lo que todo lo que tiene que hacer es iniciar el escáner haciendo clic en «Iniciar escáner».

En el segundo caso, vaya a la pestaña Vectores personalizados, seleccione un campo resaltándolo (o un espacio vacío) y luego haga clic en Agregar. Marque también la opción ‘Deshabilitar vectores de entrada no personalizados’ para que el escáner solo se aplique a los campos seleccionados.

Cuando se inicia el escaneo, se abre la pestaña Escaneo activo y muestra todas las solicitudes enviadas por el escáner. Si selecciona una de ellas, verá que las cargas útiles se envían solo al campo solicitado. Los resultados se muestran en la pestaña Alertas:

Navegación predefinida

Otra funcionalidad de especial interés es la navegación predefinida. Mediante esta opción es viable localizar recursos web que no han sido identificados durante la fase de spidering. En ocasiones algunos de estos recursos ofrecen información sobre las tecnologías del sitio web, por ejemplo, el tipo de CMS utilizado, la versión del servicio web, etc. O incluso revelar directorios y ficheros que, por descuido, se han hecho públicos.

Para identificar estos recursos es común apoyarse en diccionarios de palabras que recopilan multitud de nombres de ficheros y directorios comúnmente empleados por multitud de tecnologías. Para ejecutar la navegación predefinida basta con hacer clic con el botón derecho sobre la URL correspondiente, dentro de la ventana de sitios, y dentro del menú “Atacar”, seleccionar la opción “Directorio de navegación predefinido.

Veamos un ejemplo práctico de cómo utilizar la funcionalidad “Directorio de navegación predefinido” en determinado sitio web. Como se observa en la ventana de sitios, solo se aprecia uno de los recursos identificados tras acceder al dominio principal desde el navegador. Para descubrir nuevos recursos a partir del directorio raíz haremos uso de uno de los diccionarios incluidos, por defecto, en la instalación de ZAP.

 Inmediatamente después podremos observar el progreso de las peticiones siendo de gran utilidad el código de estado devuelto por el servicio web ya que éste nos informa sobre la existencia o no del recurso solicitado,

si se trata de un acceso no permitido, si la petición genera una redirección a otro recurso, etc.

A modo de ejemplo, podemos ver que uno de los recursos identificados a partir del directorio raíz es /admin/. Si navegamos al mismo podemos comprobar que se trata de una URL válida que nos lleva a una nueva área del portal.

Explorar una aplicación manualmente

El escaneo pasivo y la funcionalidad de ataques automatizados son una excelente manera de comenzar una evaluación de vulnerabilidades de una aplicación web, pero presentan algunas limitaciones. Entre ellas se encuentran:

  • Cualquier página protegida por una página de inicio de sesión no se puede descubrir durante un escaneo pasivo porque, a menos que haya configurado la funcionalidad de autenticación de ZAP, ZAP no manejará la autenticación requerida.
  • No se tiene mucho control sobre la secuencia de exploración en un análisis pasivo ni sobre los tipos de ataques realizados en un ataque automatizado. ZAP ofrece muchas opciones adicionales para la exploración y los ataques fuera del análisis pasivo.

Las arañas web son una excelente manera de explorar tu sitio web básico, pero deben combinarse con la exploración manual para ser más efectivas. Por ejemplo, las arañas web solo introducen datos básicos predeterminados en los formularios de tu aplicación web, pero el usuario puede introducir información más relevante que, a su vez, expone más información de la aplicación web a ZAP. Esto es especialmente cierto en formularios de registro, donde se requiere una dirección de correo electrónico válida. La araña web puede introducir una cadena aleatoria, lo que provocará un error. El usuario podrá reaccionar ante ese error y proporcionar una cadena con el formato correcto, lo que puede exponer más información de la aplicación al enviar y aceptar el formulario.

Debe explorar toda su aplicación web con un navegador proxy a través de ZAP. Al hacerlo, ZAP escanea pasivamente todas las solicitudes y respuestas realizadas durante la exploración en busca de vulnerabilidades, continúa construyendo el árbol del sitio y registra alertas sobre posibles vulnerabilidades detectadas durante la exploración.

Es importante que ZAP explore cada página de su aplicación web, ya sea que esté enlazada a otra página o no, en busca de vulnerabilidades. La oscuridad no es sinónimo de seguridad, y las páginas ocultas a veces se activan sin previo aviso. Por lo tanto, sea lo más minucioso posible al explorar su sitio.

Puede iniciar rápida y fácilmente navegadores preconfigurados para usar ZAP como proxy desde la pestaña Inicio rápido. Los navegadores iniciados de esta manera también ignorarán las advertencias de validación de certificados que se informarían de otro modo.

Antes de explorar la interfaz, comencemos capturando el tráfico web. Esto será más significativo una vez que tengamos datos para analizar. ZAP tiene dos modos de funcionamiento:

  • Escaneo automático: escanea el sitio y busca vulnerabilidades basándose en una URL simple. Este enfoque es rápido, pero carece de precisión y control. Por lo tanto, no se recomienda
  • Exploración manual: ZAP actúa como proxy entre el navegador y el servidor. El auditor puede observar y manipular los intercambios y, a continuación, ejecutar pruebas específicas utilizando las herramientas integradas.

ZAP simplifica el uso al integrar un navegador preconfigurado (Chrome o Firefox). No se requiere configuración de proxy ni de certificado. Para empezar, vaya a «Exploración manual», introduzca la URL del sitio que desea probar y, a continuación, haga clic en «Iniciar navegador»

Para explorar manualmente su aplicación:

  1. Inicie ZAP y haga clic en la pestaña Inicio rápido de la ventana del espacio de trabajo.
  2. Haga clic en el botón grande Exploración manual.
  3. En el cuadro de texto URL para explorar , ingrese la URL completa de la aplicación web que desea explorar.
  4. Seleccione el navegador que desea utilizar
  5. Haga clic en Iniciar navegador

Esta opción lanzará cualquiera de los navegadores más comunes que tengas instalados con nuevos perfiles. Si desea usar alguno de sus navegadores con un perfil existente, por ejemplo, con otros complementos instalados, deberá configurar manualmente su navegador para que actúe como proxy a través de ZAP e importar y confiar en el certificado CA raíz de ZAP. Consulte la Guía del usuario de ZAP Desktop para obtener más información. Si ZAP muestra el error ‘no se encontró el navegador proporcionado’, puede definir la ruta a su navegador a través de Herramientas > Opciones > Selenium > Binarios.

El navegador se abre y carga el sitio. Si la opción ‘Habilitar HUD’ está activada, se muestra una interfaz interactiva. Puede salir haciendo clic en ‘Continuar al destino’.

El HUD (Heads Up Display) ZAP estará habilitado de forma predeterminada. Desmarcar la opción correspondiente en esta pantalla antes de iniciar el navegador desactivará el HUD.

La pantalla de visualización frontal

El Heads Up Display (HUD) es una interfaz innovadora que proporciona acceso a la funcionalidad ZAP directamente en el navegador. ZAP ofrece una segunda interfaz gráfica, integrada directamente en el navegador del usuario. Esta interfaz (HUD) es una herramienta muy útil, ya que permite realizar acciones sin tener que alternar entre el navegador y el proxy.

Para activar la interfaz, simplemente marque «Habilitar HUD» al iniciar el navegador a través de ZAP o haga clic en «Habilitar la interfaz ZAP» en la barra de herramientas. Es ideal para quienes se inician en pentesting y también permite a los expertos en pruebas de penetración centrarse en la funcionalidad de las aplicaciones, a la vez que proporciona información y funciones de seguridad clave. Una vez activada, la interfaz se agrega automáticamente al navegador. Debería ver la siguiente página de inicio:

El HUD se superpone a la aplicación de destino en el navegador al habilitarlo mediante la opción «Exploración manual» en la pantalla o la barra de herramientas. Solo es compatible con navegadores modernos como Firefox y Chrome. Los usuarios de Firefox podrían necesitar desactivar la «Protección mejorada contra rastreo» para poder ver la interfaz del HUD. Para ello, haga clic en el icono del escudo en la barra de URL. De forma predeterminada, se muestra una pantalla de presentación del HUD que incluye un enlace a un tutorial que lo guiará a través de las funciones del HUD y le explicará cómo puede usarlas.

Para mostrar el tutorial de la interfaz, haga clic en el botón de la izquierda. De lo contrario, seleccione «Continuar al destino» para ir directamente al sitio que se va a probar.

El HUD

El HUD es una interfaz completamente nueva que trae información y funcionalidad de ZAP a su navegador. 

Para más detalles véase:

Opciones de línea de comandos

El HUD funciona igual de bien con ZAP en modo escritorio y modo demonio. Dado que muchos usan ZAP en modo demonio para pruebas automatizadas, el HUD está deshabilitado por defecto en este modo. El complemento HUD añade nuevas opciones de línea de comandos de ZAP que lo habilitan en modo demonio e inician un navegador preconfigurado para usar ZAP como proxy e ignorar los errores de certificado:

  • -hud: inicia un navegador con el HUD habilitado, solo es necesario si no desea especificar un navegador o URL
  • -hudbrowser <navegador> : el navegador que utilizará ZAP, ya sea Firefox (el predeterminado) o Chrome
  • -hudurl <url> : la URL que se abrirá en el navegador, por defecto ninguna

Cualquier combinación de estos parámetros iniciará un navegador con el HUD habilitado. También puedes habilitar el HUD en modo demonio sin iniciar un navegador usando la opción de línea de comando ZAP:

-config hud.enabledForDaemon=true

Advertencias

Este complemento aún está en sus primeras etapas 🙂 Algunos problemas conocidos incluyen:

  • Solo está disponible una cantidad limitada de funciones ZAP
  • Todavía usamos Vue.js en modo de desarrollo, por lo que no podemos aplicar un CSP lo suficientemente fuerte.
  • El código JavaScript debe estar formateado y revisado correctamente.
  • Firefox ha sido probado más que Chrome, pero ambos deberían funcionar
  • El código para soportar el HUD en múltiples pestañas del navegador es muy nuevo, por lo que podría tener errores.
  • En particular, no cierre la primera pestaña en Firefox o el HUD dejará de funcionar.
  • La documentación podría, por supuesto, ser mejor.

Pantalla de opciones del HUD

Habilitar al usar ZAP Desktop

Al configurarlo, el HUD se inyectará en las respuestas HTML al usar ZAP Desktop. El valor predeterminado es «true».

Habilitar al usar ZAP en modo demonio

Al configurarse, el HUD se inyectará en las respuestas HTML al iniciar ZAP en modo demonio o sin interfaz gráfica. El valor predeterminado es «false», ya que muchos usan ZAP para automatización. Inyectar el HUD no serviría de nada y podría provocar fallos en las pruebas existentes.

Mostrar la pantalla de bienvenida del HUD cuando se abre un navegador

Al configurar la pantalla de bienvenida del HUD, que incluye un enlace al tutorial, se mostrará al abrir un navegador que utilice ZAP como proxy. La pantalla de bienvenida incluye una opción para no volver a mostrarla; si se selecciona, es la única forma de que vuelva a aparecer.

Habilitar el HUD solo para las URL que estén dentro del alcance

Si se selecciona, solo las URL marcadas como «dentro del alcance» en ZAP tendrán el HUD incorporado. El plan es mostrar esta opción a través del HUD, pero hasta entonces, si la opción está habilitada, deberá agregar las URL al alcance a través del Escritorio ZAP. Cuando se selecciona esta opción, el ícono de HUD en la barra de herramientas del escritorio tendrá una pequeña superposición de «objetivo» en la parte inferior derecha.

Habilitar mensajes en el dominio

Permitir el envío de mensajes desde el dominio de destino al dominio ZAP. Esto es necesario para funciones como mostrar el número de campos ocultos y la alerta asociada a un campo específico. Si cree que el dominio de destino podría ser malicioso, puede desactivar esta opción. El HUD no confía en ningún mensaje del dominio de destino, pero un sitio malicioso podría causar problemas leves, como que las alertas ZAP se muestren inesperadamente. Deberá reiniciar el navegador después de cambiar esta configuración para que surta efecto.

Eliminar CSP de las páginas de destino

El HUD no funcionará actualmente si se utiliza una política CSP estricta en los sitios web de destino. Por defecto, ZAP eliminará el CSP; desactivar esta opción podría provocar fallos en el HUD.

Modo de desarrollo

Si se configura, se configuran varias opciones que pueden ser útiles al depurar el HUD, incluidas:

  • Establecer el nivel de depuración del lado del cliente en DEBUG
  • Envío del registro del lado del cliente a la pestaña de salida ZAP
  • Agregar la herramienta ‘Errores de HUD’ que muestra todos los errores registrados

Directorio base

Esto no debería cambiarse en este momento.

Permitir evaluaciones inseguras

Esto es necesario actualmente para que el HUD funcione. En el futuro, el plan es que solo sea necesario durante el desarrollo del HUD.

Omitir tareas del tutorial

Al configurar esta opción podrá ver todas las páginas del tutorial sin pasar las tareas.

Restablecer tareas del tutorial

Al hacer clic en este botón se restablecerán las tareas para que puedas realizarlas nuevamente.

Uso de HUB

La principal ventaja de esta interfaz es que puede acceder a la información de ZAP sin salir del navegador. Puede ver el historial de solicitudes y WebSockets, ver las alertas del escáner y realizar acciones como escaneo, rastreo o puntos de interrupción, todo sin tener que cambiar entre varias ventanas.

Al hacer clic en una solicitud del historial, puede ver los detalles de la solicitud y, por ejemplo, elegir modificarla y volver a enviarla o iniciar un escáner activo.

También podemos mostrar las alertas generadas por ZAP (que aparecen en tiempo real en el HUD mediante notificaciones):

Detección de tecnología

El complemento Detección de tecnología utiliza varios patrones y huellas dactilares para detectar las tecnologías utilizadas por las aplicaciones. Funciona de forma muy similar a los complementos del navegador Wappalyzer, con las siguientes excepciones:

  • No utiliza las ‘variables globales de JavaScript’, ya que son difíciles de probar sin un navegador ‘completo’
  • No muestra la confianza; esto sigue siendo
  • No coincide con las tecnologías basándose en las propiedades del DOM, ya que algunas propiedades las establece JavaScript en el navegador después de que la respuesta haya pasado por ZAP
  • Permite ver la ‘evidencia’ utilizada para detectar las tecnologías

La pestaña Tecnología

Esta pestaña muestra todas las tecnologías detectadas para el sitio seleccionado. Al hacer clic con el botón derecho en una tecnología, se mostrará el menú «Mostrar evidencia», bajo el cual se encuentran todas las expresiones regulares utilizadas para detectarla. Al seleccionar una expresión regular, se cambiará a la pestaña «Buscar» y se buscará esa expresión regular en el historial. Nota: Si se seleccionan varias filas, el menú no se mostrará. Junto al menú desplegable de selección de sitio hay un botón Exportar que se puede usar para exportar un archivo CSV (valores separados por comas) basado en la información de la tabla que se muestra actualmente.

La barra de herramientas también incluye un botón de alternancia para habilitar/deshabilitar que controla si la regla de escaneo pasivo de detección de tecnología está funcionando o no. Este estado habilitado se mantiene entre sesiones ZAP. Los datos de la tecnología están disponibles para los informes a través de la clase TechJobResultData .

API de detección de tecnología

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

Vistas

  • listSites: Enumera todos los sitios reconocidos por el complemento Detección de tecnología.
  • listAll: Enumera todos los sitios y sus aplicaciones (tecnologías) asociadas.
  • listSite (sitio*): Enumera todas las aplicaciones (tecnologías) asociadas con el sitio especificado.

Pantalla Opciones de detección de tecnología

Esta pantalla le permite configurar las opciones de detección de tecnología :

Modo

El modo que controla el comportamiento de la regla de escaneo pasivo de detección de tecnología. Este modo persiste entre sesiones ZAP.

  • Rápido > Volver a la primera coincidencia; lo que puede significar que falta información de la versión, pero debería ser un poco más eficiente. (Este es el valor predeterminado).
  • Exhaustivo > Mantener la coincidencia y no volver antes; probablemente un poco menos eficiente.

Alertas

Permite al usuario seleccionar si la regla de escaneo pasivo de detección de tecnología debe generar alertas a medida que se identifican tecnologías (habilitado de forma predeterminada). Las alertas son informativas e incluyen el nombre de la tecnología, una descripción de la tecnología si está disponible. Otra información puede incluir detalles de CPE o de la versión, y las referencias pueden contener URL específicas de la tecnología.

Código más reciente: TechPassiveScanner.java

ID de alerta: 10004

Pestaña de salida

Esto muestra varios mensajes informativos en un conjunto de subpestañas. Hay una pestaña «General» que puede incluir los seguimientos de pila de excepciones inesperadas: incluya cualquier seguimiento de pila si informa un error. Otros complementos de ZAP pueden añadir sus propias subpestañas. En particular, el complemento «Consola de Scripts» añadirá una pestaña por cada script que genere algún resultado.

Menú de clic derecho

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

Copiar Esto copiará la cadena seleccionada al portapapeles.

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.

Resumen del capítulo

  1. Inicio y sesiones: arranque de ZAP, opción de persistir sesión (recomendado al comenzar), y uso del complemento Inicio rápido para lanzar spiders/escaneos.
  2. Modos de operación: Seguro / Protegido / Estándar / ATAQUE. Usa Protegido para limitar acciones solo a lo que esté dentro del alcance.
  3. Alcance y Contextos: define contextos por aplicación/objetivo; incluye/excluye URLs; marca parámetros estructurales y rutas basadas en datos para que el árbol de sitios represente correctamente la estructura y evitar escaneos irrelevantes.
  4. Exploración:
    • Exploración manual: proxy del navegador (o navegador preconfigurado desde ZAP) para recorrer las funcionalidades reales (formularios, roles).
    • Araña tradicional: rápida, basada en HTML.
    • Araña AJAX: más lenta pero capaz con aplicaciones JavaScript dinámicas (requiere Selenium).
    • Navegación forzada / Directory bruteforce: descubrir archivos y directorios no referenciados usando diccionarios.
  5. Escaneo pasivo: analiza tráfico que pasa por ZAP sin generar peticiones adicionales; seguro para cualquier sistema; configurable (reglas, tags, límites). Detecta cabeceras faltantes, filtrado, fugas de info, etc.
  6. Escaneo activo: ataque automatizado contra el objetivo para detectar XSS, SQLi, RCE, path traversal, SSRF, Log4Shell, etc. Muy potente pero peligroso si no tienes permiso. Se controla mediante políticas de escaneo (Default, CI/CD, Dev, QA, PenTest) que ajustan intensidad, reglas y falsos positivos.
  7. Políticas y reglas: ZAP tiene reglas categorizaras por Release/Beta/Alpha; puedes crear/editar políticas para distintos entornos (CI, dev, pentest).
  8. Gestión de sesiones y autenticación: métodos de gestión (cookies, HTTP auth, scripts), métodos de autenticación (formularios, JSON, NTLM, manual, scripts) y verificación de login (regEx / sondas). Importante para escanear áreas autenticadas con usuarios diferentes.
  9. Requester / Interacción manual: editar y reenviar peticiones, puntos de interrupción, vectores personalizados para atacar sólo campos concretos.
  10. HUD y detección tecnológica: HUD in-browser para acciones rápidas; detección de tecnologías para evidencias y etiquetado.
  11. Automatización y CLI: -quickurl, -quickout, -zapit y opciones para integrar ZAP en pipelines/daemon.
  12. Buenas prácticas y riesgos: no escanear sin permiso, usar modo protegido y exclusiones, limitar el ritmo (rate-limit), no instalar la CA en equipos productivos sin control.

OWASP ZAP: Plataforma de Escaneo de la Interfaz

|

|__ Configuración Inicial

|   |

|   |__ Inicio de ZAP (En Windows)

|   |   |__ Comando por línea de tiempo

|   |   |__ Especificar unidades y elementos

|   |   |__ Se permite (Anclaje de dominio)

|   |

|   |__ Configuración Proxy

|       |__ ZAP actúa como intermediario (Manipulador)

|       |__ Inicio de navegadores preconfigurable

|       |__ Configuración manual (Mozilla/Chromium)

|

|__ Modos de Operación y Alcance

|   |

|   |__ Modos

|   |   |__ Seguro (No ataques activos automáticos)

|   |   |__ Estándar (Dispersión solo en URL dentro del Alcance)

|   |   |__ Protegido (Sin restricciones)

|   |   |__ ATAQUE (Permite escanear en fuentes medias sin defensas)

|   |

|   |__ Alcance (Ámbito)

|       |__ Definido por Contextos

|       |__ Cualquiera motivos en mando Principal

|

|__ Exploración y Revisión

|   |

|   |__ Araña (En Manual) (Navegación Manual)

|   |   |__ Explora las Manual (Navegación Manual Art price)

|   |

|   |__ Araña (Tradicional) (Rapida, basada en HTML)

|   |

|   |__ Araña AJAX (Más lento, maneja JavaScript/Asíncronos)

|   |

|   |__ Escaneo Pasivo

|       |__ Navegación activa (como recogerse e inversiones)

|       |__ Localizar vulnerabilidades pasivas

|       |__ Tiempo (División Normal, Típico 48 nif. worker)

|

|__ Escaneo Activo y Pasivo

|   |

|   |__ Escaneo Activo

|   |   |__ Ataques automatizados (XSS, SQLI, RCE, Inyección)

|   |   |__ No detecta vulnerabilidades lógicas

|   |   |__ Solicitar con previos objetivos

|   |

|   |__ Políticas de Escaneo

|       |__ OLED para Descarrilados

|       |__ Políticas temporales para Descarrilados

|       |__ Realizar Control de Control de Calidad (QA)

|       |__ Políticas de API

|       |__ Políticas de Prueba de Vulnerables (Analizar leer rápida)

|

|__ Controles

|   |__ Temas de administración de etiquetas

|   |__ Consulta el ámbito del mediador

|   |__ Configuración (activar/Mobile URL con Regla)

|

|__ Gestión de Sesiones y Autenticación

|   |

|   |__ Autenticación (Métodos)

|   |   |__ Manual

|   |   |__ Inicio de Formularios

|   |   |__ Inicio de Inicios

|   |   |__ HTTPCRIPT M

|   |   |__ Inicio de Soporte (Personalizable)

|   |

|   |__ Verificación de Sesión

|   |   |__ Patrón Regex (Liga Logged-in)

|   |   |__ Similar por URL especificada (Polling)

|   |

|   |__ Contextos y Cualidades

|       |__ Funcionalización ZAP de usuarios

|       |__ Usuario registra forma inteligente

|

|__ Cobertura de M. Aplicación (Casos de Inicios)

|   |__ Repercibilidad común de OAuth / identifyVasils

|   |

|   |__ Derivación de Politicas

|   |

|   |__ Panorámico Especializado (Modelo exclusiones, sin demo)

|   |

|   |__ Podrás Elaborar veces (base Adquisida e rote que para clean)

|

|__ Visualización y Herramientas

|   |

|   |__ HUD (Heads-Up Display)

|   |   |__ Interfaz búsqueda (No eliminar ventanas)

|   |   |__ Opción Histórica, pf-time 2: Intensificación ZAPLatore

|   |

|   |__ Estructura de Tecnología (Patrones y Incolor Abort-line)

|   |

|   |__ Repetidor / Política de intensivo (Manipulación finalmente)

|

|__ Automatización (Long de Comercio)

|   |

|   |__ Opciones CLI

|   |   |__ rápidud (URL de Objetivo)

|   |   |__ inclienda (incluir Objetivo en <goal>) – total – read)

|   |

|   |__ integración CLOUD (Mérito Automático)

|   |

|   |__ Zesta (Función lógica de Acondicionante)

Diez preguntas sobre el escaneo con ZAP

  1. ¿Cuál es la diferencia entre un escaneo activo y uno pasivo en ZAP?
  2. ¿Qué es el HUD de ZAP y qué ventajas ofrece?
  3. ¿Qué es un «contexto» en ZAP y para qué sirve?
  4. ¿Qué tipos de autenticación soporta ZAP?
  5. ¿Cuál es la función del árbol de sitios en ZAP?
  6. ¿Qué políticas de escaneo existen en ZAP y para qué escenarios están recomendadas?
  7. ¿Cómo se configura ZAP para escanear solo URLs dentro del alcance?
  8. ¿Qué tipos de vulnerabilidades puede detectar ZAP durante un escaneo activo?
  9. ¿Cuál es la utilidad del escaneo por línea de comandos con las opciones -quickurl y -quickout?
  10. ¿Qué pasos componen una prueba de penetración básica con ZAP?

Diez ejercicios prácticos basados en el contenido

  1. Ejecuta un escaneo activo básico sobre un sitio vulnerable como testphp.vulnweb.com usando el botón «Inicio Rápido».
  2. Configura un contexto que incluya solo URLs del dominio https://testasp.vulnweb.com y excluya dominios externos como CDNs.
  3. Usa el escaneo pasivo para detectar encabezados de seguridad ausentes en un sitio web.
  4. Realiza una autenticación basada en formulario para un entorno con login y configura usuarios.
  5. Configura ZAP para mostrar solo URLs dentro del alcance definido en el contexto.
  6. Ejecuta un escaneo activo utilizando la política “Penetration Test Policy” y analiza las alertas generadas.
  7. Define un parámetro estructural para separar acciones diferentes dentro de una misma URL.
  8. Ejecuta un análisis automatizado utilizando el modo línea de comandos:
    -quickurl http://example.com -quickout ./reporte.html
  9. Realiza una navegación forzada para descubrir recursos ocultos como /admin, /backup, etc.
  10. Explora manualmente una aplicación con HUD activado y revisa las alertas generadas en tiempo real.

Respuestas completas a las 10 preguntas

1. ¿Cuál es la diferencia entre un escaneo activo y uno pasivo en ZAP?

  • Escaneo pasivo: analiza el tráfico que pasa por el proxy sin modificar nada. Es seguro y no invasivo.
  • Escaneo activo: lanza ataques automatizados (XSS, SQLi, etc.) para detectar vulnerabilidades reales. Puede ser destructivo si se usa en producción.

2. ¿Qué es el HUD de ZAP y qué ventajas ofrece?

El HUD (Heads Up Display) es una interfaz gráfica integrada en el navegador que permite interactuar con ZAP directamente. Sus ventajas:

  • No requiere alternar entre navegador y ZAP.
  • Muestra alertas, historial, solicitudes.
  • Permite lanzar escaneos y modificar peticiones.

3. ¿Qué es un «contexto» en ZAP y para qué sirve?

Un contexto es un conjunto de URLs agrupadas que define el alcance de una prueba. Permite:

  • Controlar qué analizar en escaneos activos.
  • Aplicar autenticación específica.
  • Definir parámetros estructurales y usuarios.
  • Mantener el análisis dentro de límites autorizados.

4. ¿Qué tipos de autenticación soporta ZAP?

ZAP admite:

  • Manual
  • Basada en formularios
  • Basada en JSON
  • HTTP/NTLM
  • Basada en scripts (personalizable)

Permite configurar diferentes usuarios y verificar si la sesión está activa mediante regex o sondas.

5. ¿Cuál es la función del árbol de sitios en ZAP?

Representa gráficamente todas las URLs descubiertas y permite:

  • Visualizar estructura de la aplicación.
  • Iniciar escaneos o arañas desde nodos específicos.
  • Aplicar contexto, exclusiones, autenticación.
  • Revisar solicitudes/respuestas asociadas.

6. ¿Qué políticas de escaneo existen en ZAP y para qué escenarios están recomendadas?

ZAP incluye varias políticas:

  • CICD: análisis rápido para pipelines.
  • Desarrollador estándar: equilibrio entre velocidad y profundidad.
  • QA estándar: más completo, ideal para staging.
  • Penetration Test: todas las reglas activas, ideal para pentests completos.
  • API Policy: centrada en problemas típicos de APIs.

7. ¿Cómo se configura ZAP para escanear solo URLs dentro del alcance?

Debes:

  • Crear un contexto.
  • Incluir solo las URLs objetivo (regex).
  • Activar el modo Protegido o Ataque.
  • Marcar “Escanear solo URLs en alcance” en las opciones de escaneo.

8. ¿Qué tipos de vulnerabilidades puede detectar ZAP durante un escaneo activo?

Incluye:

  • SQLi
  • XSS reflejado y persistente
  • RFI / LFI
  • Path traversal
  • Command injection
  • CSRF
  • Server Side Template Injection
  • Log4Shell, Heartbleed, etc.

9. ¿Cuál es la utilidad del escaneo por línea de comandos con las opciones -quickurl y -quickout?

Permite ejecutar análisis sin abrir la interfaz gráfica:

  • -quickurl: define el objetivo.
  • -quickout: define el archivo de reporte.
    Ideal para integración CI/CD o pruebas automatizadas.

10. ¿Qué pasos componen una prueba de penetración básica con ZAP?

  1. Exploración manual: navegar la app vía proxy.
  2. Escaneo pasivo: sin ataques, detectar problemas básicos.
  3. Araña: descubrir nuevas URLs.
  4. Navegación forzada: buscar rutas ocultas.
  5. Escaneo activo: buscar vulnerabilidades.
  6. Prueba manual adicional: para lógica de negocio y validaciones más finas.

Respuestas a los ejercicios

1. Ejecutar escaneo activo con Inicio Rápido

2. Crear un contexto solo para testasp.vulnweb.com

  • Clic derecho sobre nodo → Incluir en contexto → Nuevo contexto.
  • En configuración del contexto, incluye solo ^https://testasp\.vulnweb\.com.*$
  • Excluye: ^.*cdn.*$, ^.*googleapis.*$, etc.

3. Escaneo pasivo de headers

  • Visita un sitio web por proxy de ZAP.
  • Revisa pestaña Alertas → busca encabezados como:
    • X-Frame-Options
    • Content-Security-Policy
    • Strict-Transport-Security

4. Autenticación basada en formulario

  • Crea contexto.
  • En “Autenticación”, selecciona «Formulario».
  • Define URL, parámetros username, password.
  • Agrega usuarios con sus credenciales.

5. Mostrar solo URLs en alcance

  • Ir a Opciones > Escáner pasivo → activar “solo dentro del alcance”.
  • También desde pestaña Sitios, filtra por contexto.

6. Escaneo activo con política Pentest

  • Ir a “Escaneo activo”.
  • Selecciona política “Penetration Test Policy”.
  • Ataca URL dentro del contexto.
  • Revisa alertas generadas.

7. Definir parámetro estructural

  • Supón URL: https://app.com?accion=borrar
  • En contexto, define accion como parámetro estructural.
  • ZAP generará nodos separados y atacará cada acción.

8. Escaneo desde terminal

zap.sh -cmd -quickurl http://example.com -quickout ./reporte.html

Generará un archivo con las vulnerabilidades encontradas.

9. Navegación forzada

  • Clic derecho en URL objetivo → Atacar → Navegación forzada.
  • Usará diccionario por defecto.
  • Detecta rutas como /admin, /login, /backup, etc.

10. Explorar con HUD

  • Inicio rápido → Exploración manual.
  • URL: http://testasp.vulnweb.com
  • Activar HUD.
  • Navega por el sitio y observa alertas en tiempo real.

Despedida — Lo que aprendiste y cómo te ayudará en tu carrera

Has visto cómo transformar ZAP de un proxy a una plataforma de evaluación completa: exploración manual + automática, escaneo pasivo para reconocimiento seguro, y escaneo activo para encontrar problemas críticos — todo controlado por contextos, políticas y sesiones. Además, aprendiste a manejar autenticación y sesiones (clave para analizar áreas protegidas), a explotar Web paths ocultos con navegación forzada y a integrar ZAP en flujos automáticos (CI/CD).

Esto te convierte en un hacker ético más eficaz: sabrás cuándo automatizar y cuándo investigar manualmente, cómo limitar el impacto de tus pruebas, y cómo obtener resultados reproducibles y accionables. Practícalo siempre en objetivos autorizados (laboratorios, CTFs o entornos de pruebas) y empieza a aplicar estas técnicas en ejercicios controlados para consolidar tu pericia.

Deja una respuesta

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