Saltar al contenido
Portada » Blog – Laprovittera Carlos » Dominando la Autenticación en ZAP

Dominando la Autenticación en ZAP

En este capítulo, Dominando la Autenticación en ZAP, aprenderás a configurar, automatizar y auditar la autenticación en OWASP ZAP, junto con el manejo de sesiones, tokens CSRF y control de acceso. Dominarás los distintos métodos de autenticación (manual, formularios, JSON, HTTP/NTLM, scripts y navegador), las estrategias de verificación, el uso del Asistente de Autenticación, la detección automática, la gestión de sesiones (basada en cookies, encabezados o detección automática) y la prueba de reglas de control de acceso.

Esto es crítico para tu carrera como hacker porque la autenticación y la autorización son dos de los pilares de la seguridad web: una mala implementación puede permitir acceso indebido, escalada de privilegios o robo de sesiones. Además, saber automatizar estos procesos con ZAP te permite integrar autenticación en escaneos activos/pasivos, detectar fallos de control de acceso y realizar pruebas precisas en entornos autenticados sin intervención manual.

Table of Contents

El Desafío Central: ¿Por Qué es Crítico Dominar la Autenticación?

La autenticación y la autorización son dos pilares de la seguridad web. Una mala implementación es una puerta abierta a vulnerabilidades críticas. Saber automatizar estas pruebas con ZAP te permite realizar auditorías precisas y eficientes en entornos autenticados.

La Filosofía de ZAP: Los Cimientos de la Autenticación

Para cada «Contexto» en ZAP (un conjunto de URLs que definen tu aplicación), la autenticación se construye sobre tres componentes esenciales:

Método de Autenticación: Cómo se realiza el inicio de sesión. Es el proceso para crear una sesión web que corresponde a un usuario.

Estrategia de Verificación: Cómo ZAP sabe si una solicitud está autenticada o no. Verifica el estado de la sesión.

Usuarios: Quién está iniciando sesión. Contiene las credenciales específicas (usuario/contraseña) que el método utilizará.

El Flujo de Trabajo Esencial en 5 Pasos

  • Configurar un Contexto: Define el alcance de tu aplicación, asegurando que todas las URLs relevantes estén incluidas.
  • Configurar la Gestión de Sesiones: Especifica cómo tu aplicación maneja las sesiones (p. ej., basada en cookies, el método más común).
  • Configurar el Método de Autenticación: Elige y configura el mecanismo de login que utiliza tu aplicación (p. ej., por formulario).
  • Configurar la Estrategia de Verificación: Define los indicadores (p. ej., un enlace de ‘Cerrar Sesión’) para que ZAP reconozca una sesión activa.
  • Configurar los Usuarios: Crea uno o más usuarios con sus credenciales para que ZAP los utilice en las pruebas.

Caso Práctico: Configurando Autenticación Basada en Formularios

Un recorrido visual por el proceso más habitual.

¿Cómo Sabe ZAP si la Sesión está Activa? Estrategias de Verificación

Una vez autenticado, ZAP necesita confirmar continuamente el estado de la sesión. Elige la estrategia correcta para evitar falsos negativos. Todas las estrategias utilizan Patrones de Expresiones Regulares (Regex) para buscar indicadores de ‘sesión iniciada’ o ‘sesión cerrada’.

  • Revisar cada Respuesta: Busca el patrón en el cuerpo HTML de cada respuesta. Ideal para aplicaciones web tradicionales.
  • Revisar cada Solicitud o Respuesta: Busca en ambos lados de la comunicación.
  • Revisar cada Solicitud: Busca el patrón en cada solicitud, como un token JWT en un encabezado. Perfecto para APIs y SPAs.
  • Sondear una URL Específica: ZAP consulta periódicamente una URL (p. ej., S/api/user/status) para verificar el estado de la sesión. Muy fiable si existe un endpoint de estado.

Gestión de Sesiones: Más Allá de las Cookies

La autenticación es el inicio; la gestión de la sesión es el mantenimiento. ZAP puede manejar más que solo cookies.

Métodos Principales

Gestión Basada en Cookies (Por defecto): ZAP detecta automáticamente cookies de sesión comunes CJSESSIONID’, ‘PHPSESSIDS, etc.). Funciona de forma transparente para la mayoría de las aplicaciones web.

Gestión Basada en Encabezados (Clave para APIS) Permite definir encabezados HTTP que actúan como tokens de sesión.

Caso de uso: Tokens ‘Bearer’ (JWT), claves de API personalizadas.

Herramientas Tácticas y Consejos Clave

Modo de Usuario Forzado: Fuerza todas las solicitudes a través de ZAP desde la perspectiva de un usuario específico. iDiseñado solo para pruebas manuales! No debe usarse en automatización, ya que existen mejores alternativas.

Variables de Entorno_ para Encabezados Inyecta un encabezado de autenticación en todas las solicitudes. Ideal para automatización y scripts rápidos. Key Variables: ZAP AIJTH HEADER VALIJE( valor del token), ZAP AUTH HEADER (el nombre del encabezado, por defecto Authorization).

Gestión de Tokens Anti-CSRF: ZAP puede manejar automáticamente la regeneración de tokens anti- CSRF durante los escaneos. Action Required: Asegúrate de que los nombres de tus tokens (p. ej., csrf token, _ RequestVerificationToken) estén definidos en Opciones Anti CSRF Tokens.

La Misión Final: Poniendo a Prueba el Control de Acceso

La autenticación confirma quién eres. La autorización determina qué puedes hacer. El complemento de Control de Acceso de ZAP te permite auditar esto sistemáticamente.

Las reglas se heredan. Define una regla en un directorio padre (s /admin) y todos los subdirectorios la heredarán.

Ejecutando el Ataque de Control de Acceso:

1. Definir Usuarios y Autenticación Asegúrate de que ZAP pueda iniciar sesión como cada usuario que deseas probar (p. ej., un admin, un usuario normal, y una sesión no autenticada).

2. Explorar la Aplicación Descubre todas las URLs de la aplicación, ya sea manualmente o usando el Spider de ZAP, con un usuario de altos privilegios.

3. Definir las Reglas de Acceso Para cada usuario, ve al panel Propiedades de Sesión’ -+ ‘Control de Accesos y marca los nodos del sitio sitio como ‘Permitido’ o Denegado’.

4. Ejecutar el Ataque Ve a la pestaña ‘Estado de Control de Acceso’ , selecciona el contexto, los usuarios a probar, y haz clic en «Atacar».

5. Analizar los Resultados ZAP intentará acceder a cada URL como cada usuario y reportará si las reglas de acceso se cumplieron o se violaron.

Interpretando los Resultados: Alertas Clave y Hallazgos

La Pestaña de Estado de Control de Acceso muestra:

(Éxito) si el acceso coincidió con la regla; X (Fallo) si hubo una violación.

Usuario: El punto de vista desde el cual se realizó la solicitud.

URL y Código de Respuesta: Detalles de la solicitud.

Regla de Acceso: Si la regla fue definida explícitamente o inferida.

Alerta 10101: Problema de Control de Acceso – Autenticación Incorrecta: Se accedió a contenido sensible sin una autenticación adecuada. Un usuario no autenticado accedió a una página de administrador.

Alerta 10102: Problema de Control de Acceso – Autorización Incorrecta: Un usuario autenticado accedió a datos o funciones fuera de sus permisos. Un usuario normal accedió a una función de administrador.

Llevando las Pruebas al Siguiente Nivel:

Las pruebas manuales son para explorar. La automatización es para la consistencia y la escala. Integra estas auditorías directamente en tu pipeline.

Opciones de Automatización

• Escaneos empaquetados de Docker

• Acciones de GitHub

• Marco de Automatización (Automation Framework)

Endpoints Clave de la API de Control de Acceso

Iniciar Escaneo: …/accessControl/action/scan Parámetros: ‘contextldS , userldS

Consultar Progreso: …/accessControl/view/getScanProgress Parámetro: contextldS

Generar Informe: …./accessControl/action/writeHTMLreport Parámetros: s contextldS , s fileNames

Pro-Tip: La configuración completa de la autenticación y las reglas de acceso se puede exportar desde la GUI y luego importarse en un entorno automatizado.

Tu Nuevo Superpoder como Profesional de la Seguridad

Hoy has dominado cómo configurar, probar y automatizar la autenticación y el control de acceso en OWASP ZAR

Configurar flujos de autenticación complejos: Desde formularios simples hasta flujos multifactor con scripts.

Gestionar sesiones modernas: Manejo de tokens JWT y claves de API a través de encabezados.

Auditar permisos con precisión: Detectar fallos críticos de autorización con pruebas de control de acceso.

Automatizar pruebas en tu pipeline: Integrar estas auditorías de seguridad en tus flujos de CI/CD.

La autenticación y el control de acceso son la primera línea de defensa de una aplicación. Ahora sabes cómo ponerla a prueba de forma ética, controlada y eficaz.

Autenticación

ZAP admite una amplia gama de mecanismos de autenticación. Si no está familiarizado con la automatización de ZAP, el mejor punto de partida es el Árbol de Decisiones de Autenticación de ZAP (enlace externo).

Cada contexto tiene:

  • Un método de autenticación que define cómo se gestiona la autenticación. Esta se utiliza para crear sesiones web que corresponden a los usuarios autenticados de la aplicación web .
  • una estrategia de verificación de autenticación que define cómo ZAP debe detectar cuándo los mensajes corresponden a solicitudes autenticadas.

Puede utilizar cualquier combinación de método de autenticación y estrategia de verificación que funcione para su aplicación web. Para realizar la autenticación de un usuario en un sitio web / en una webapp, el Método de Autenticación y la Estrategia de Verificación definen 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. Los pasos principales genéricos que se necesitan para configurar la autenticación para una aplicación web son los siguientes:

  1. Configurar un contexto ZAP para la aplicación web, asegurándose de que se incluyan todas las URL requeridas
  1. Configure el método de gestión de sesiones para el contexto que se utiliza en su aplicación
  2. Configure el método de autenticación para su aplicación, especificando todos los requisitos
  3. Configure la estrategia de verificación de autenticación para su aplicación, especificando al menos uno de los indicadores de inicio de sesión o de cierre de sesión.
  4. Configurar uno o más usuarios para el contexto que correspondan directamente al método de autenticación para el contexto

ZAP es una herramienta ideal para usar en automatización y admite una variedad de opciones:

  • Escaneos empaquetados de Docker
  • Acciones de GitHub
  • Marco de automatización
  • Modo API y Daemon

Ejemplo de configuración

A continuación se muestra un ejemplo de configuración que muestra cómo configurar completamente una aplicación web que utiliza autenticación basada en formularios , gestión de sesiones basada en cookies y devuelve páginas HTML completas (incluida una indicación de si el usuario ha iniciado sesión):

  1. Configurar un contexto para la aplicación web
  2. Configurar el método de gestión de sesiones en Gestión de sesiones basada en cookies
  3. Asegúrese de que su navegador procese todo a través de ZAP e inicie sesión en su aplicación usando el navegador
  4. Vaya a ZAP e identifique la solicitud que se realizó para iniciar sesión (normalmente es una solicitud HTTP POST que contiene el nombre de usuario y la contraseña y posiblemente otros elementos)
  5. Si hay un token anti-CSRF en la solicitud de inicio de sesión, agregue el nombre del token en la pantalla Opciones Anti CSRF , si no está presente.
  6. Configurar el método de autenticación:
    1. Haga clic derecho en la solicitud de autenticación y seleccione ‘Marcar como contexto… Solicitud de inicio de sesión de autenticación basada en formulario’
    2. Se abrirá una ventana con la URL de la solicitud y los parámetros (si los hay). Utilice las opciones desplegables para seleccionar cuáles de los parámetros corresponden al nombre de usuario y a la contraseña.
  7. Configurar la estrategia de verificación de autenticación:
    1. Seleccione un mensaje que tenga un indicador adecuado de inicio o cierre de sesión, por ejemplo, un enlace de cierre de sesión o un mensaje de bienvenida.
    2. Seleccione el texto relevante, haga clic derecho sobre él y seleccione ‘Marcar como contexto… Indicador de inicio de sesión de autenticación’ o ‘Marcar como contexto… Indicador de cierre de sesión de autenticación’ según corresponda
  8. Define tantos usuarios como necesites en la sección Propiedades de sesión -> Usuarios.

Tras configurar la autenticación, ZAP dispone de varias acciones. Por ejemplo, ahora puede seleccionar el usuario en el cuadro de diálogo Spider. La mayoría de los pasos anteriores también se aplican a otros métodos de autenticación. El único cambio al intentar configurar la autenticación con un método diferente es el paso 6. En su lugar, seleccione el método de autenticación requerido en la lista desplegable y configúrelo según sea necesario. Puede encontrar más información sobre la configuración de cada tipo de autenticación en la página Métodos de autenticación y en las pantallas de Sesión de contexto .

Modo de usuario forzado

Cuando se habilita el Modo de Usuario Forzado, todas las interacciones que pasan por ZAP para un contexto determinado se actualizarán desde la perspectiva del usuario especificado. El Modo de Usuario Forzado se habilita mediante un botón en la barra de herramientas (el que muestra al usuario y el candado) y se configura en Propiedades de Sesión -> Modo de Usuario Forzado. Importante: El Modo de Usuario Forzado está diseñado únicamente para pruebas manuales y no debe usarse en automatización; existen alternativas mucho mejores.

Variables ambientales del encabezado de autenticación

Hay un conjunto de variables ambientales disponibles que le permiten agregar fácilmente un encabezado de autenticación a todas las solicitudes que se envían a través de ZAP o se inician mediante las herramientas ZAP, incluidas las arañas y el escáner activo:

  • ZAP_AUTH_HEADER_VALUE: si esto está definido, su valor se agregará como encabezado a todas las solicitudes
  • ZAP_AUTH_HEADER: si esto está definido, entonces su valor se usará como nombre del encabezado; si no está definido, se usará el encabezado de autorización estándar.
  • ZAP_AUTH_HEADER_SITE: si esto está definido, el encabezado solo se incluirá en los sitios cuyo nombre incluya su valor

Vídeos oficiales

ZAP en diez: Autenticación: básica y resumida (9:57)
ZAP en diez: Autenticación basada en formularios (12:59)
ZAP en diez: Taller de automatización y autenticación de ADDO (8 vídeos)

Métodos de autenticación

ZAP gestiona múltiples tipos de autenticación (denominados métodos de autenticación ) que pueden utilizarse para sitios web y aplicaciones web. Cada contexto tiene un método de autenticación definido que determina cómo se gestiona la autenticación. Esta autenticación se utiliza para crear sesiones web que corresponden a los usuarios autenticados de la aplicación web . Los métodos de autenticación se pueden utilizar en múltiples lugares de ZAP. Algunos ejemplos incluyen:

  • Definición de usuarios e inicio de sesión automático
  • detección de estados autenticados/no autenticados
  • realizar una reautenticación automática

Se han implementado múltiples métodos de autenticación y el sistema permite añadir fácilmente nuevos métodos según las necesidades del usuario. Los principales se describen a continuación.

Autenticación manual

Este método permite a los usuarios realizar la autenticación manualmente (por ejemplo, autenticarse en el navegador mientras se utiliza el proxy ZAP) y luego seleccionar la sesión HTTP correspondiente. Dado que la autenticación la realiza usted mismo, este método no permite la reautenticación si la aplicación web cierra la sesión del usuario. Sin embargo, si define una estrategia de verificación de autenticación , ZAP mantendrá las estadísticas de autenticación .

Al utilizar este método de autenticación, para configurar un usuario para el contexto es necesario elegir una sesión HTTP autenticada.

Autenticación basada en formularios

Este método se utiliza en sitios web/aplicaciones web donde la autenticación se realiza mediante el envío de un formulario o una solicitud GET a una URL de inicio de sesión con credenciales de autenticación de usuario/contraseña. Es posible volver a autenticarse. La configuración se puede realizar mediante la pantalla «Autenticación en contextos de sesión » o mediante el menú emergente contextual: Marcar como… Solicitud de inicio de sesión con autenticación basada en formulario .

Al utilizar este método de autenticación, para configurar un Usuario para el contexto es necesario configurar el par de credenciales nombre de usuario/contraseña que se utilizan para la autenticación basada en formulario. Si la aplicación requiere el envío del token anti-CSRF que se muestra en la página de inicio de sesión, ZAP lo gestionará automáticamente. Asegúrese de que el nombre del token esté configurado en la pantalla Opciones Anti-CSRF .

Autenticación basada en JSON

Este método se utiliza en sitios web/aplicaciones web donde la autenticación se realiza enviando un objeto JSON a una URL de inicio de sesión utilizando un par de credenciales de autenticación (nombre de usuario/contraseña). Es posible volver a autenticarse. La configuración se puede realizar mediante la pantalla «Autenticación en contextos de sesión» o mediante el menú emergente contextual: Marcar como… Solicitud de inicio de sesión con autenticación basada en JSON .

Al utilizar este método de autenticación, para configurar un Usuario para el contexto es necesario configurar el par de credenciales nombre de usuario/contraseña que se utilizan para la autenticación.

Autenticación HTTP/NTLM

Este método se utiliza en sitios web y aplicaciones web donde la autenticación se aplica mediante mecanismos de autenticación HTTP o NTLM que emplean encabezados de mensaje HTTP. Se admiten tres esquemas de autenticación: Básico, Digest y NTLM. Es posible la reautenticación, ya que los encabezados de autenticación se envían con cada solicitud autenticada. La configuración se puede realizar mediante la pantalla «Autenticación de contextos de sesión» . Al utilizar este método de autenticación, para configurar un usuario para el contexto es necesario configurar el par de credenciales de nombre de usuario/contraseña que se utilizan para la autenticación HTTP/NTLM.

Autenticación basada en scripts

Este método es útil para sitios web o aplicaciones web donde la autenticación 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 autenticación que envíe 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 realiza una autenticación. Es posible volver a autenticarse. La configuración se realiza mediante la pantalla «Autenticación de contextos de sesión» .

Al utilizar este método de autenticación, la configuración de un usuario para el contexto requiere la configuración de un conjunto de parámetros definidos en el script. Para más detalles, consulte los ejemplos de scripts de autenticación proporcionados.

Véase también: Tutorial de Youtube de las funciones de Autenticación, Gestión de Sesiones y Gestión de Usuarios de ZAP

Estrategias de verificación de autenticación

Estrategias de verificación

ZAP admite múltiples estrategias de verificación para detectar cuándo los mensajes corresponden a solicitudes autenticadas.

  • Revisa cada respuesta Al usar esta estrategia, ZAP usará los patrones de expresiones regulares especificados en cada respuesta. Esto suele ser útil para aplicaciones web tradicionales que devuelven páginas HTML completas.
  • Revisar cada solicitud Al usar esta estrategia, ZAP usará los patrones de expresiones regulares especificados en cada solicitud. Esto suele ser útil para aplicaciones web modernas que mantienen un estado de sesión en el lado del cliente, como un JWT, que se envía con cada solicitud.
  • Verifique cada solicitud o respuesta Cuando se utiliza esta estrategia, ZAP utilizará los patrones Regex especificados tanto en la solicitud como en la respuesta de cada mensaje.
  • Sondear la URL especificada Al utilizar esta estrategia, ZAP sondeará la URL especificada con la frecuencia indicada. Los mensajes se considerarán con sesión iniciada o cerrada según la última solicitud de sondeo. Los patrones de expresiones regulares especificados solo se utilizarán en la respuesta a la solicitud de sondeo. Esta estrategia suele ser útil para cualquier aplicación que tenga al menos una URL que permita detectar de forma fiable si un usuario ha iniciado o cerrado sesión.

Patrones de expresiones regulares

Todas las estrategias utilizan dos patrones de expresiones regulares para determinar si un mensaje específico está registrado o no. Puede proporcionar una o ambas expresiones regulares; si no proporciona ninguna, la estrategia de autenticación no se utilizará.

Para configurar uno de los indicadores de inicio/cierre de sesión , escriba la expresión regular directamente en el cuadro de diálogo de la pantalla Autenticación de contexto de sesión -> panel Autenticación -> campo Indicador de inicio/cierre de sesión , o busque un mensaje autenticado en el Árbol de sitios o en la pestaña Historial, selecciónelo, abra la Vista de respuesta y seleccione el texto que desea definir como indicador con el mouse y seleccione la opción del menú contextual Marcar como contexto… Indicador de inicio/cierre de sesión.

Tutorial de Youtube de las funciones de Autenticación, Gestión de Sesiones y Gestión de Usuarios de ZAP

Identificación de solicitud de autenticación

Este complemento incluye una regla de escaneo pasivo que intenta identificar las solicitudes de autenticación. Identifica las solicitudes de autenticación mediante la presencia de nombres de usuario y contraseñas comunes. También utiliza segmentos de URL comunes para identificar las solicitudes de autenticación más probables y segmentos de URL de registro comunes para ignorar las solicitudes de registro. La regla no intentará identificar solicitudes de autenticación muy inusuales: la automatización es uno de los objetivos finales, por lo que los falsos negativos (solicitudes de autenticación inusuales omitidas) son más deseables que los falsos positivos (identificar incorrectamente una solicitud de autenticación).

Si esta regla identifica una solicitud de autenticación que es parte del contexto que ha configurado para utilizar el método de autenticación de detección automática , esta regla actualizará el contexto para utilizar el método de autenticación identificado.

  • Si no se identifica una solicitud de autenticación, verifique que se realice a un sitio que esté incluido en el contexto.
  • Si no es así, agregue el sitio al contexto y autentíquese nuevamente a través de su navegador.
  • El campo «Otra información» se utiliza para informar sobre un conjunto de pares clave-valor que se pueden analizar fácilmente. Las claves admitidas actualmente son:
    • parámetro de usuario
    • valor de usuario
    • parámetro de contraseña
    • token csrf
  • Potencialmente puede haber múltiples csrfTokens. La regla actualmente identificará:
    • Solicitudes de autenticación basadas en formularios
    • Solicitudes de autenticación basadas en JSON

Pruebas de control de acceso

Este complemento permite a los usuarios comparar qué partes de una aplicación web están disponibles para algunos usuarios, realizar pruebas de control de acceso e identificar posibles problemas de control de acceso. Permite configurar reglas de acceso y ejecutar un ataque completo para identificar secciones de una aplicación web a las que pueden acceder clientes no autorizados. Hay dos conceptos principales relacionados con este complemento que deben explicarse: las reglas de acceso y el procedimiento de prueba .

Reglas de acceso

Para identificar posibles problemas de control de acceso, ZAP necesita saber a qué partes de la aplicación web debe acceder cada usuario. En ZAP, estas reglas se denominan » Reglas de Acceso» y generalmente significan: » El usuario X debe/no debe acceder a la página A «.

Las reglas se configuran para un Contexto y, para cada Usuario de ese Contexto, cada Nodo de Sitio (página web) estará asociado a uno de los siguientes valores:

  • Permitido : el recurso puede ser accedido por el usuario al que se refiere la regla
  • Denegado : el usuario al que se refiere la regla no debe acceder al recurso.
  • Desconocido : no hay información sobre si el recurso debe o no ser accesible para el usuario al que se refiere la regla.

Para simplificar el proceso de definición de reglas de acceso, ZAP utiliza la estructura de árbol de las URL. Al analizar las reglas, se utiliza un algoritmo de inferencia para detectar las reglas coincidentes para cada nodo, basándose en su padre en la URL, si no se definen reglas específicas. Esto significa que, al configurar las reglas de acceso, solo es necesario establecer explícitamente una regla para todo un subárbol, mientras que para los demás nodos se infieren las reglas. Puede encontrar más información al respecto en la página de ayuda de las opciones de Contexto de Control de Acceso .

Procedimiento de prueba

En general, para realizar completamente las pruebas de control de acceso para una aplicación web, se deben seguir los siguientes pasos:

  • El probador define el conjunto de usuarios y cómo se autentican;
  • El probador define cómo ZAP puede identificar solicitudes no autorizadas (a través del panel Autorización en las Propiedades de la sesión);
  • La aplicación web se explora manualmente o mediante Spider;
  • El probador define las reglas de acceso para cada uno de los usuarios asociados al contexto, básicamente dejando que ZAP sepa qué partes de la aplicación web deben ser accedidas por qué usuarios;
  • ZAP realiza un ‘ataque’ intentando acceder a todas las URL de la aplicación web desde la perspectiva de cada usuario;
  • En la pestaña Estado correspondiente, se muestran los resultados, indicando qué páginas fueron accedidas exitosamente por qué usuarios y marcando los casos en los que no se siguieron las reglas de acceso.

Nota: Las pruebas de control de acceso no están permitidas en Safeel modo ni Protectedsi el contexto no está dentro del alcance.

Alertas

El complemento puede generar las siguientes alertas:

Problema de control de acceso: autenticación incorrecta

La autenticación insuficiente se produce cuando un sitio web permite a un atacante acceder a contenido o funcionalidades sensibles sin necesidad de autenticarse correctamente. Las herramientas de administración web son un buen ejemplo de sitios web que proporcionan acceso a funcionalidades sensibles. Dependiendo del recurso en línea específico, estas aplicaciones web no deberían ser accesibles directamente sin que el usuario verifique su identidad.

Código más reciente: AccessControlScannerThread.java

ID de alerta: 10101 .

Problema de control de acceso: autorización incorrecta

La autorización insuficiente se produce cuando una aplicación no realiza las comprobaciones de autorización adecuadas para garantizar que el usuario realice una función o acceda a los datos de acuerdo con la política de seguridad. Los procedimientos de autorización deben determinar qué se permite hacer a un usuario, servicio o aplicación. La autenticación de un usuario en un sitio web no implica necesariamente que tenga acceso completo a todo el contenido y la funcionalidad.

Código más reciente: AccessControlScannerThread.java

ID de alerta: 10102 .

API

El complemento expone los siguientes puntos finales de API:

Comportamiento

  • Escanear: Inicia un análisis de control de acceso con el ID de contexto y el ID de usuario especificados (puede ser una lista de ID separados por comas). (Parámetros opcionales: booleano que identifica si se debe incluir un usuario no autenticado (predeterminado: falso), booleano que identifica si se generan alertas (predeterminado: verdadero) y el nivel de riesgo de las alertas (predeterminado: alto).) Esto supone que las reglas de control de acceso se establecieron previamente mediante la interfaz gráfica de ZAP y que se exportó/importó el contexto necesario.
  • Escribir informe HTML: Genera un informe de control de acceso para el ID de contexto dado y lo guarda según el nombre de archivo (ruta) proporcionado.

Vistas

  • Obtener progreso del escaneo: Obtiene el progreso del escaneo de control de acceso (porcentaje entero) para el ID de contexto dado.
  • obtenerEstadoDeEscaneo: Obtiene el estado del escaneo de control de acceso (cadena de descripción) para el ID de contexto dado.

 Opciones del Contexto de Control de Acceso

Las opciones del Contexto de Control de Acceso se presentan como un panel para cada Contexto al abrir el cuadro de diálogo Propiedades de Sesión. Este panel permite a los usuarios de ZAP definir las Reglas de Acceso para cada Usuario de cada Contexto. Como se mencionó en la página de conceptos , ZAP utiliza la estructura de URL basada en árbol. Por lo tanto, al configurar las reglas de acceso, solo es necesario establecer explícitamente una regla para todo un subárbol, mientras que para los demás nodos se infieren las reglas. Se pueden establecer tres valores posibles para cualquier nodo en el contexto de cada usuario:

  • Permitido : la regla para el nodo está establecida explícitamente como Permitido
  • Denegado : la regla para el nodo se establece explícitamente como Denegado
  • Heredado : la regla para el nodo se infiere en función del padre más cercano con una regla establecida explícitamente

De forma predeterminada, las reglas de cualquier nodo tienen un valor heredado y el nodo raíz tiene un valor desconocido . Por lo tanto, para cualquier nodo sin un padre con una regla configurada explícitamente, la regla inferida tendrá un valor predeterminado desconocido .

Pestaña de estado de control de acceso

La pestaña Estado del Control de Acceso permite iniciar nuevas pruebas de Control de Acceso y muestra los resultados obtenidos. Para cada usuario y URL atacada por ZAP, se añade una entrada con información sobre:

  • ID de ZAP del mensaje enviado
  • el método HTTP utilizado
  • la URL del recurso
  • el código de estado HTTP de la respuesta
  • El usuario desde cuyo punto se accedió al recurso
  • Si la solicitud fue identificada como autorizada o no
  • La regla de acceso utilizada, que se definió directamente o se infirió a partir de las reglas definidas por el padre.
  • el resultado obtenido: exitoso (check verde) si se siguió la regla de acceso o fallido (cruz roja) en caso contrario

Tokens anti CSRF

Los tokens anti CSRF son parámetros (pseudo) aleatorios que se utilizan para proteger contra ataques de falsificación de solicitud entre sitios (CSRF). Sin embargo, también dificultan el trabajo del evaluador de penetración, especialmente si los tokens se regeneran cada vez que se solicita un formulario. ZAP detecta tokens anti CSRF únicamente por los nombres de atributos: la lista de nombres de atributos considerados como tokens anti CSRF se configura utilizando la pantalla Opciones Anti CSRF . Cuando ZAP detecta estos tokens, registra el valor del token y qué URL generó el token. Otras herramientas, como el escáner activo , tienen opciones que hacen que ZAP regenere automáticamente los tokens cuando sea necesario.

Opciones de tokens anti CRSF

Esta pantalla le permite configurar las opciones de tokens anti CSRF :

  • Fichas Los nombres de los parámetros del formulario POST que deben tratarse como tokens anti CSRF.
  • Coincidencias parciales Define si los nombres de los parámetros del formulario POST deben tratarse como tokens anti CSRF si incluyen uno de los tokens (en lugar de requerir una coincidencia exacta).

Sesiones HTTP

Esta herramienta registra las sesiones HTTP existentes en un sitio específico y permite al usuario de ZAP forzar que todas las solicitudes se realicen en una sesión específica. Básicamente, permite al usuario cambiar fácilmente entre sesiones de usuario en un sitio y crear una nueva sin destruir las existentes.

La herramienta está diseñada únicamente para pruebas manuales y no debe utilizarse en automatización; existen alternativas mucho mejores. Si no está familiarizado con la automatización ZAP, el mejor punto de partida es el Árbol de Decisiones de Autenticación ZAP (enlace externo).

Se basa en el concepto de tokens de sesión, que son parámetros de mensajes HTTP (por ahora solo cookies) que permiten a un servidor HTTP conectar un mensaje de solicitud con cualquier solicitud o dato almacenado previamente. En el caso de ZAP, conceptualmente, los tokens de sesión se han clasificado en dos categorías: tokens de sesión predeterminados y tokens de sesión de sitio. Los tokens de sesión predeterminados son los que el usuario puede configurar en la pantalla «Opciones» y se consideran, por defecto, tokens de sesión automáticos para cualquier sitio (p. ej., phpsessid, jsessionid, etc.). Los tokens de sesión de sitio son un conjunto de tokens para un sitio específico y generalmente se configuran mediante los menús emergentes disponibles en la pestaña «Parámetros» .

Esta herramienta detecta automáticamente, mediante los tokens de sesión definidos o los tokens de sesión predeterminados detectados automáticamente, cualquier sesión HTTP existente en la comunicación. Las sesiones detectadas se muestran en la pestaña «Sesiones HTTP» .

El usuario puede, mediante el botón disponible en la pestaña Sesiones HTTP , crear una nueva sesión sin destruir la existente o forzar que una de las sesiones esté activa. Cuando una sesión está activa, se modifican todas las solicitudes salientes enviadas al sitio correspondiente, y los tokens de sesión se configuran para que coincidan con la sesión activa. De esta forma, el usuario puede forzar fácilmente que algunos mensajes formen parte de una sesión específica y luego cambiar y enviar mensajes en otra sesión.

La herramienta Sesiones HTTP se configura mediante la pantalla Opciones de sesiones HTTP.

Pestaña Sesiones HTTP

Esta pestaña muestra el conjunto de sesiones HTTP identificadas para cada sitio, según lo detectado por la extensión Sesiones HTTP . El sitio actual al que se refiere la información se puede seleccionar a través de la barra de herramientas o la pestaña Sitios . La barra de herramientas incluye un botón («Nueva sesión») que permite iniciar una nueva sesión. Esto obliga a que todos los mensajes de solicitud salientes no tengan los tokens de sesión configurados, de modo que el servidor los considere una nueva sesión. Esto permite crear una nueva sesión sin destruir la anterior.

Cada una de las entradas de la tabla Sesiones (cada sesión) tiene inicialmente un nombre generado, pero se puede cambiar seleccionando la celda ‘Nombre’ y editándola. Se puede hacer clic derecho en cada una de las entradas de la tabla Sesiones, lo que activa el Menú Emergente, con las siguientes opciones:

  • Copiar valor del token de sesión: copia el valor de la sesión seleccionada al portapapeles.
  • Eliminar sesión: elimina la sesión
  • Buscar mensajes relacionados: hará que la pestaña Buscar se active y muestre resultados basados ​​en una búsqueda con la cadena que se muestra en la columna “Valores de tokens de sesión” para la sesión en la que se hizo clic derecho.
  • Activar (disponible solo en sesiones inactivas): marca esta sesión como activa. Si alguna sesión se había activado previamente, se desactivará y, si no especifica ningún valor de token, se eliminará.
  • Desactivar (disponible solo en la sesión activa): marca esta sesión como inactiva. Si la sesión no especifica ningún valor de token, se elimina.

Respecto a la sesión activa, se pueden leer más detalles en la página de ayuda de características generales de la extensión Sesiones HTTP Para cada sesión podrás ver:

  • Activo: si esta es la sesión activa o no
  • Nombre – El nombre de la sesión
  • Valores de los tokens de sesión: la lista de valores asociados a cada token de sesión. Las entradas se separan con el símbolo «;».
  • Mensajes coincidentes: la cantidad de mensajes HTTP que la extensión ha coincidido con esta sesión

Opciones de sesiones HTTP

Esta pantalla le permite configurar las opciones de la extensión de sesiones HTTP :

Tokens predeterminados

Estos son los nombres de las cookies que se consideran tokens de sesión por defecto. En cuanto se detectan como parámetros en un sitio, se añaden automáticamente como tokens de sesión para ese sitio, a menos que el usuario las anule manualmente. Los tokens de sesión no distinguen entre mayúsculas y minúsculas, por lo que se escribirán automáticamente en minúsculas. Además, cualquier modificación de los tokens de sesión predeterminados solo será visible tras volver a visitar las páginas del sitio.

Habilitar solo para proxy

Si esta opción está habilitada, la extensión solo procesará los mensajes enviados y recibidos a través del proxy (p. ej., desde/hacia el navegador). Los mensajes de otras extensiones solo se procesarán si esta opción está deshabilitada.

Opciones de JVM

Esta pantalla le permite configurar las opciones de JVM utilizadas al iniciar ZAP.

Opciones de JVM

Un campo de texto de formato libre que se agregará a la llamada de la línea de comandos de Java al invocar ZAP a través de zap.sh o zap.bat. Se agregó la opción para que se pueda establecer el tamaño máximo de asignación de memoria de Java, que tiene el formato: -Xmx n donde n es el tamaño en bytes. Los valores buenos para este campo podrían ser:

  • -Xmx256m
  • -Xmx512m
  • -Xmx1024m

A diferencia de las otras opciones ZAP, estas se guardan en el archivo .ZAP_JVM.propertiesen el directorio ZAP predeterminado del usuario, que depende del sistema operativo utilizado, por ejemplo:

  • Windows 7/8: C:\Usuarios\ <nombre de usuario> \ZAP
  • Windows XP: C:\Documents and Settings\ <nombre de usuario> \ZAP
  • Linux: ~/.ZAP
  • Mac OS: ~/Biblioteca/Soporte de aplicaciones/ZAP

Si se equivoca al configurar estas opciones, es posible que ZAP no se inicie. En ese caso, eliminar este archivo debería solucionar el problema.

Notas de Windows: Estas opciones no se utilizan al iniciar ZAP mediante el ejecutable. El directorio donde .ZAP_JVM.propertiesse encuentra el archivo depende de la variable de entorno %USERPROFILE%.

Detalles de la memoria JVM

La parte inferior del cuadro de diálogo muestra detalles de la configuración actual de la memoria de la JVM. Incluye:

  • Tamaño: la cantidad de memoria asignada actualmente a la JVM.
  • Usado: la cantidad de memoria asignada actualmente utilizada (no libre).
  • Máx.: la cantidad de memoria que la JVM podría llegar a ocupar.

Los valores se muestran en unidades IEC legibles por humanos basadas en el cálculo de base 2 (por ejemplo: 1024 bytes equivalen a 1 KiB, etc.). Generalmente, el valor máximo debería ser cercano a -Xmx (si se especifica). Sin embargo, se observó el siguiente comportamiento durante las pruebas con Java 8 en el sistema operativo Windows.

Se especificó -Xmx512m (que debería calcularse como ~488 MiB), sin embargo, se mostraron 455,5 MiB.

Se especificó -Xms512m -Xmx512m, sin embargo, se mostraron 475 MiB.

-XX:+AlwaysPreTouch -Xms512m -Xmx512m y se mostraron 474,5 MiB.

Entonces, parece que la JVM realiza algún cálculo o manipulación durante la ejecución, lo que puede significar que los resultados no se alineen como se espera para las opciones que ingresa el usuario (este es un problema de la JVM, no de ZAP).

Cuadro de diálogo del comprobador de autenticación

Este cuadro de diálogo le permite probar si ZAP puede autenticar y manejar automáticamente el manejo y la verificación de la sesión para un sitio dadas solo la página de inicio de sesión y las credenciales.

Campos

Se proporcionan los siguientes campos:

  • URL de inicio de sesión La URL de la página de inicio de sesión. Es obligatoria y debe comenzar con «http://» o «https://». No es necesario que la URL esté en el árbol de sitios, pero debe ser accesible para ZAP.
  • Contexto El nombre del contexto que se configurará para gestionar la autenticación. Si el contexto ya existe, se eliminará y se volverá a crear.
  • Método de autenticación El método de autenticación a utilizar:
    • Basado en navegador: ZAP intentará identificar y completar las credenciales automáticamente.
    • Script de cliente: ZAP utilizará el script de cliente que haya elegido para autenticarse.
  • Guión del cliente El script a utilizar para la autenticación: esto solo se habilitará si ha seleccionado el método de autenticación “Script de cliente”. Si aún no tiene un script adecuado, puede usar el botón “Grabar”: esto iniciará el navegador seleccionado, comenzará a grabar sus acciones y abrirá la URL especificada. Necesitarás cerrar manualmente el navegador cuando hayas terminado. El guión que acabas de grabar se seleccionará automáticamente.
  • Navegador El navegador que se usará para la autenticación. El navegador que elija deberá estar instalado y poder iniciarse desde ZAP.
  • Nombre de usuario El nombre de usuario para la autenticación: esto solo se habilitará si ha seleccionado el método de autenticación «Basado en navegador». El nombre de usuario y la contraseña deben ser válidos para que el inicio de sesión funcione.
  • Contraseña La contraseña para la autenticación: esta opción solo se activará si ha seleccionado el método de autenticación «Basado en el navegador». El nombre de usuario y la contraseña deben ser válidos para que el inicio de sesión funcione.
  • Tiempo de espera (segundos) El número de segundos que se deben esperar tras enviar el formulario de inicio de sesión antes de cerrar el navegador. Si se cierra el navegador antes de que se cargue la aplicación, es posible que ZAP no pueda identificar la gestión de la sesión ni encontrar una URL de verificación adecuada.
  • Retardo de paso (segundos) El tiempo de espera entre cada paso, ya sean los implícitos (rellenar el campo de nombre de usuario, luego la contraseña y luego enviar) o los especificados en la pestaña «Pasos». Esto puede ser útil si la aplicación de destino se ejecuta con demasiada lentitud y no reacciona a tiempo para procesar la entrada de ZAP. Configurarlo en 2 tendrá el mismo efecto que el «Modo Demo» anterior.
  • Diagnóstico de registros Permite registrar datos de diagnóstico durante la autenticación. Consulte el Informe de Autenticación para obtener más información sobre los diagnósticos.
  • Botón de reinicio El botón de reinicio le permite restablecer todos los campos en la pestaña Prueba y deshabilitar todos los Pasos en la pestaña Pasos (los pasos solo se deshabilitan, no se eliminan, ya que volver a crearlos puede ser tedioso).

Panel de resultados

El panel de resultados muestra el progreso y lo que se ha identificado. Es necesario identificar todos los elementos para que ZAP pueda gestionar automáticamente la autenticación de este sitio.

Pestaña Diagnóstico

La pestaña Diagnóstico contendrá un resumen de las solicitudes y respuestas enviadas y recibidas durante las pruebas de autenticación. Se recomienda no realizar ninguna otra operación en ZAP mientras se prueba la autenticación, ya que esto podría provocar el registro de mensajes no relacionados. Solo se registra la información mínima, y ​​el nombre del host y los valores de los parámetros se reemplazan por tokens seguros. Puede copiar todos los datos y revisarlos para asegurarse de que no contengan información confidencial antes de compartirlos. Si ZAP no detecta el campo de usuario ni el de contraseña, necesitaremos más detalles sobre la página de inicio de sesión. Si comparte, será mucho más fácil depurarlos. Si ZAP detecta ambos campos obligatorios, comparta los datos de la pestaña de diagnóstico: con suerte, se podrá diagnosticar qué está mal solo con esa información.

Detección automática de autenticación

Este complemento agrega un nuevo tipo de autenticación que puede usar para indicar que la regla de escaneo pasivo de Identificación de solicitud de autenticación debe intentar configurar el método de autenticación automáticamente.

Gestión de sesiones con detección automática

Este complemento agrega un nuevo tipo de Administración de sesión que puede usar para indicar que la regla de escaneo pasivo de Identificación de solicitud de administración de sesión debe intentar configurar el método de Administración de sesión automáticamente.

Autenticación basada en navegador

Este complemento agrega un nuevo método de autenticación que utiliza un navegador para iniciar sesión en el sitio web de destino. El método de autenticación requiere la URL de inicio de sesión y las credenciales del usuario. De forma predeterminada, busca automáticamente los campos adecuados para el nombre de usuario y la contraseña, tanto en la misma página como en varias (es decir, el campo de contraseña solo es visible cuando se introduce el nombre de usuario).

El plan es seguir mejorando este método de autenticación para que admita todos los formatos de página de inicio de sesión más comunes. Si no funciona con la página de inicio de sesión de su aplicación, informe al equipo de ZAP a través del Grupo de Usuarios de ZAP, proporcionando la mayor cantidad de detalles posible. Este método también admite la autenticación básica HTTP únicamente para Firefox (debido a las restricciones de Selenium).

Pasos de autenticación

Cuando el método de autenticación no encuentra los campos adecuados o requiere pasos adicionales, el usuario puede especificarlos manualmente. Se admiten los siguientes pasos:

NombreTipoDescripción
Pasos automáticosAUTO_STEPSIndica que el método de autenticación debe realizar los pasos predeterminados para identificar y completar los campos obligatorios (si aún no lo están). Esto es útil cuando el método de autenticación puede encontrar y enviar los campos, pero otros pasos obligatorios deben realizarse antes o después.
Elemento de clicCLICKHace clic en un elemento web, por ejemplo, para acceder al formulario de inicio de sesión o cerrar una ventana emergente.
Rellenar campo personalizadoCUSTOM_FIELDRellena un campo personalizado con el valor dado, por ejemplo, elige un reino o departamento de la organización en el formulario de inicio de sesión.
Completar el campo de contraseñaPASSWORDRellena la contraseña en un campo, para cuando no se identificó automáticamente ningún campo adecuado.
Completar el campo TOTPTOTP_FIELDRellena un campo TOTP.
Completar el campo de nombre de usuarioUSERNAMERellena el nombre de usuario en un campo, para cuando no se identificó automáticamente ningún campo adecuado.
Enviar EscapeESCAPEEnvía el escape al elemento web, por ejemplo, para descartar una ventana emergente.
Enviar devoluciónRETURNEnvía de vuelta al elemento web, por ejemplo, para enviar el formulario de inicio de sesión.
Esperar el tiempo de esperaWAITEspera el tiempo de espera especificado.

Cada paso se ejecuta secuencialmente en el orden especificado. Los pasos que actúan sobre un elemento web deben identificarse con su selector CSS o XPath, ambos disponibles, por ejemplo, mediante herramientas de desarrollo de navegadores. Estos pasos tienen un tiempo de espera que permite esperar hasta el número especificado de milisegundos para que el elemento web se muestre y sea interactuable (cuando la página de inicio de sesión tarda en cargar). Los pasos CUSTOM_FIELD, PASSWORDy USERNAMEborran cualquier valor existente del campo correspondiente, por lo que deberá especificar el valor completo deseado.

Gestión de sesiones basada en encabezados

Este complemento agrega un nuevo tipo de administración de sesiones que admite una cantidad arbitraria de encabezados. Si se utiliza junto con la autenticación basada en navegador o la autenticación de script de cliente , también mantendrá todas las cookies y cualquier encabezado con nombres que contengan las cadenas «auth» o «csrf» (ignorando mayúsculas y minúsculas) configuradas como parte de la autenticación. Los valores del encabezado pueden incluir los siguientes tokens:

{%json:path.to.data%}Datos de respuesta de autenticación JSON
{%env:env_var%}Variable ambiental
{%script:glob_var%}Variable de script global
{%header:env_var%}Encabezado de respuesta de autenticación
{%url:key%}Parámetro de URL de autenticación

Marco de automatización

La gestión de sesiones basada en encabezado se puede configurar en la sección de entorno de un plan de Automation Framework mediante:

      sessionManagement:
        method: «headers»
        parameters:                    #  list of header: value pairs which can include any of the tokens defined above, e.g.
          Authorization: «Bearer: {%json:AuthenticationResult.AccessToken%}»

API

La gestión de sesiones basada en encabezado se puede configurar a través de la API ZAP, utilizando los siguientes parámetros:

    contextId
    methodName
    methodConfigParams

Por ejemplo:

Identificación de contexto1
nombreDeMétodoGestión de sesiones basada en encabezados
métodoConfigParamsheaders=Autorización:Portador 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918

Al agregar la gestión de sesión basada en encabezado a través de la API, el headersparámetro es una cadena de header:valuepares separados por caracteres de nueva línea: \n. Tenga en cuenta que debido a restricciones en el núcleo:

  • Los contextos existentes no se actualizan en la GUI si agrega o elimina este complemento
  • La gestión de sesiones basada en encabezado no se puede agregar a un contexto a través de la API (a menos que se use con ZAP 2.16.1 o posterior)

Estas restricciones se abordarán en una versión futura.

Identificación de gestión de sesiones

Este complemento incluye una regla de escaneo pasivo que intenta identificar los métodos de administración de sesiones. Los identifica mediante la presencia de identificadores de administración de sesiones de uso común y cualquier valor especificado en los encabezados de solicitud de autorización. La regla no intentará identificar métodos de gestión de sesiones muy inusuales: la automatización es uno de los objetivos finales, por lo que los falsos negativos (falta de métodos de gestión de sesiones inusuales) son más deseables que los falsos positivos (identificación incorrecta de un método de gestión de sesiones).

Si esta regla identifica un método de administración de sesiones que es parte del contexto que ha configurado para utilizar el método de administración de sesiones de detección automática , esta regla actualizará el contexto para utilizar el método de administración de sesiones identificado. Si no se identifica un método de gestión de sesiones, verifique que esté realizado en un sitio incluido en el contexto. Si no es así, agregue el sitio al contexto y autentíquese nuevamente a través de su navegador.

El campo ‘Otra información’ se utiliza para informar el conjunto de tokens de administración de sesión basados ​​en encabezado que deben especificarse. La regla actualmente identificará: Métodos de gestión de sesiones basados ​​en encabezados

Estadísticas de autenticación

Este complemento registra estadísticas relacionadas con la autenticación para todos los contextos dentro del alcance. Las estadísticas se registran por sitio y abarcan:

stats.auth.componente .state.noauthEl contexto no tiene un método de autenticación
stats.auth.componente .state.nothtmlRespuestas que no sean HTML (que probablemente no tengan indicadores de inicio o cierre de sesión)
stats.auth.componente.state.notsuccessRespuestas HTML fallidas (que probablemente no tengan indicadores de inicio o cierre de sesión)
stats.auth.componente .state.noindicatorNo se han definido indicadores de inicio/cierre de sesión
stats.auth.componente.state.loggedinandoutEstán presentes tanto los indicadores de inicio como de cierre de sesión.
stats.auth.componente .state.loggedinSolo está presente el indicador de inicio de sesión
stats.auth.componente .state.loggedoutSolo está presente el indicador de cierre de sesión
stats.auth.componente .state.unknownNo están presentes ni los indicadores de inicio ni de cierre de sesión

El componente puede ser:

escaneo asmáticoEscáner activo
autorizaciónAutenticación
pelusaFuzzer
manualSolicitudes manuales
apoderadoSolicitudes por proxy
arañaAraña
identificaciónEl identificador entero de otro componente no mencionado anteriormente

Se puede acceder a las estadísticas a través de la API ZAP. El ícono para este complemento se derivó de los íconos de Fugue chart.png y locl-small.png

Resumen del artículo

Fundamentos de autenticación en ZAP

Cada contexto tiene:

  • Un método de autenticación, que define cómo iniciar sesión.
  • Una estrategia de verificación, que define cómo ZAP detecta si la sesión está autenticada.

Flujo general para configurar autenticación

  1. Crear un contexto que incluya todas las URLs relevantes.
  2. Configurar la gestión de sesiones (por cookies, encabezados, etc.).
  3. Definir el método de autenticación y sus parámetros.
  4. Configurar la estrategia de verificación (indicadores de login/logout).
  5. Añadir usuarios y credenciales para pruebas.

⚙️ Después, podrás usar estos usuarios en spiders, escaneos activos, o pruebas de control de acceso.

Métodos de autenticación

  • Manual: El usuario inicia sesión manualmente; ZAP reutiliza la sesión autenticada. Sin reautenticación automática.
  • Basada en formularios: Autenticación por POST/GET con credenciales. ZAP detecta y maneja tokens anti-CSRF automáticamente.
  • Basada en JSON: Similar a la anterior, pero usando un cuerpo JSON en la solicitud de login.
  • HTTP/NTLM: Usa encabezados “Authorization” (Basic, Digest o NTLM).
  • Basada en scripts: Permite manejar flujos personalizados complejos (TOTP, SSO, multifactor).
  • Basada en navegador: Usa un navegador real (controlado por Selenium) para autenticar automáticamente.
  • Detección automática: Permite a ZAP intentar identificar el método de autenticación pasivamente.

Cada método puede configurarse desde Propiedades de Sesión → Autenticación o con clic derecho en una solicitud relevante (“Marcar como solicitud de inicio de sesión…”).

Estrategias de verificación de autenticación

Permiten a ZAP saber si la sesión está iniciada o cerrada.

Cuatro estrategias principales:

  1. Revisar cada respuesta (ideal para HTML tradicional).
  2. Revisar cada solicitud (ideal para APIs o JWT).
  3. Verificar solicitud o respuesta (ambos lados).
  4. Sondear una URL periódicamente (útil para endpoints predecibles).

Cada estrategia usa expresiones regulares para detectar indicadores de “login” o “logout”.

Modo de Usuario Forzado

Permite que todas las interacciones pasen como un usuario específico.

Solo se recomienda para pruebas manuales, no para automatización.

Variables de encabezado de autenticación

Permiten inyectar encabezados de autenticación automáticamente:

  • ZAP_AUTH_HEADER — nombre del encabezado (por defecto “Authorization”)
  • ZAP_AUTH_HEADER_VALUE — valor (por ejemplo, token Bearer)
  • ZAP_AUTH_HEADER_SITE — restringe a un sitio específico

Asistente de autenticación

Herramienta gráfica que automatiza la configuración de autenticación:

  • Permite probar login basado en navegador o script de cliente.
  • Campos configurables: URL de login, contexto, método, navegador, usuario, contraseña, timeout, retraso y diagnósticos.
  • Incluye pestaña de diagnóstico para revisar solicitudes/respuestas y detectar campos no identificados.
  • Puede grabar los pasos del login (clics, inputs, esperas, etc.) y reproducirlos.

Tipos de pasos de autenticación

Pasos como CLICK, USERNAME, PASSWORD, TOTP_FIELD, WAIT, etc., se ejecutan secuencialmente para simular un flujo real.

Gestión de sesiones

Basada en cookies

Predeterminada. ZAP detecta automáticamente cookies de sesión (JSESSIONID, PHPSESSID, etc.).

Basada en encabezados

Permite definir encabezados personalizados (por ejemplo, tokens JWT):

sessionManagement:
  method: «headers»
  parameters:
    Authorization: «Bearer {%json:AuthenticationResult.AccessToken%}»

Los valores pueden provenir de JSON, variables de entorno o scripts.

Detección automática

ZAP puede identificar automáticamente métodos comunes de gestión de sesiones mediante reglas pasivas.

Tokens anti-CSRF

Protegen contra ataques de falsificación de solicitudes.

  • Se detectan por nombre (configurable en Opciones Anti-CSRF).
  • Pueden definirse coincidencias exactas o parciales.
  • ZAP gestiona automáticamente la regeneración de tokens durante escaneos activos.

Pruebas de control de acceso

Permite auditar qué partes de una aplicación son accesibles para cada usuario.

Conceptos clave:

  • Reglas de acceso: Para cada usuario y URL → Permitido, Denegado o Desconocido.
  • Se configuran por contexto; ZAP infiere reglas heredadas según el árbol de URLs.

Procedimiento:

  1. Definir usuarios y autenticación.
  2. Configurar cómo ZAP identifica solicitudes no autorizadas.
  3. Explorar la aplicación (Spider o manualmente).
  4. Definir reglas de acceso por usuario.
  5. Ejecutar el ataque de control de acceso.
  6. Revisar resultados en la pestaña Estado de Control de Acceso (verdes = reglas cumplidas, rojas = violaciones).

Alertas relacionadas:

  • Autenticación incorrecta (ID 10101)
  • Autorización incorrecta (ID 10102)

Ambas alertan sobre deficiencias en los controles de acceso.

API y automatización

El plugin expone endpoints de API:

  • /accessControl/action/scan → iniciar prueba.
  • /accessControl/view/status → consultar progreso.
  • /accessControl/action/writeHTMLreport → generar informe.

ZAP también permite configurar autenticación y sesiones mediante la API (contextId, methodName, methodConfigParams).

Estadísticas de autenticación

ZAP registra métricas internas (visibles en Estadísticas internas → auth), como:

  • state.loggedin, state.loggedout, state.noindicator, etc.
  • Permiten validar si la autenticación se mantiene activa y estable.

Configuración avanzada

Opciones de Sesiones HTTP

  • Define cookies de sesión por defecto.
  • Controla si solo se aplican a tráfico proxificado.

Opciones de JVM

Permiten ajustar memoria y parámetros de ejecución de ZAP (-Xmx512m, etc.).

Se almacenan en .ZAP_JVM.properties y afectan el rendimiento global.

10 preguntas clave basadas en el artículo

  1. ¿Cuáles son los cinco pasos principales para configurar la autenticación en una aplicación web con ZAP?
  2. ¿Qué es una estrategia de verificación de autenticación en ZAP y para qué sirve?
  3. ¿Qué métodos de autenticación admite ZAP?
  4. ¿Qué es el «Modo de Usuario Forzado» y cuándo se debe usar?
  5. ¿Cómo funciona la detección automática de autenticación en ZAP?
  6. ¿Cómo se configuran los tokens anti-CSRF en ZAP?
  7. ¿Qué opciones existen en ZAP para realizar pruebas de control de acceso?
  8. ¿Qué tipos de reglas de acceso se pueden establecer en el contexto de control de acceso?
  9. ¿Qué información muestra la pestaña de estado del control de acceso?
  10. ¿Qué pasos se siguen para configurar la autenticación basada en navegador en ZAP?

10 ejercicios prácticos que el alumno puede resolver

  1. Crea un contexto en ZAP para una aplicación web e incluye todas las URLs requeridas.
  2. Configura la autenticación basada en formularios para una aplicación web.
  3. Establece una estrategia de verificación que detecte el inicio de sesión mediante una expresión regular.
  4. Define un usuario dentro de un contexto y asigna sus credenciales.
  5. Habilita y deshabilita el Modo de Usuario Forzado para probar sesiones manuales.
  6. Configura un token anti-CSRF personalizado y verifica que ZAP lo detecte en las solicitudes.
  7. Realiza una prueba de control de acceso para comprobar si un usuario no autorizado accede a páginas restringidas.
  8. Usa el cuadro de diálogo de autenticación para verificar que ZAP pueda manejar sesiones correctamente.
  9. Crea reglas de acceso para un usuario que no debería acceder a ciertas URLs.
  10. Usa la API de ZAP para lanzar un escaneo de control de acceso indicando un contexto y un usuario.

Respuestas completas a las 10 preguntas

1. ¿Cuáles son los cinco pasos principales para configurar la autenticación?

  1. Crear un contexto e incluir las URLs relevantes.
  2. Configurar el método de gestión de sesión (por ejemplo, cookies).
  3. Configurar el método de autenticación (formulario, JSON, script, etc.).
  4. Establecer una estrategia de verificación (indicadores de login/logout).
  5. Crear uno o más usuarios con sus respectivas credenciales.

2. ¿Qué es una estrategia de verificación de autenticación?

Es el mecanismo que ZAP usa para determinar si una solicitud está autenticada o no. Se basa en expresiones regulares que detectan indicadores en la respuesta, solicitud o ambas. También puede usar una URL específica para sondear.

3. ¿Qué métodos de autenticación admite ZAP?

  • Autenticación manual
  • Basada en formularios
  • Basada en JSON
  • HTTP/NTLM (Básico, Digest, NTLM)
  • Basada en scripts
  • Basada en navegador
  • Detección automática

4. ¿Qué es el «Modo de Usuario Forzado»?

Es un modo en el que todas las interacciones pasan por ZAP desde la perspectiva de un usuario específico, sin importar el contexto. Se usa solo en pruebas manuales, no en automatización.

5. ¿Cómo funciona la detección automática de autenticación?

ZAP incluye una regla de escaneo pasivo que identifica automáticamente solicitudes de autenticación (por ejemplo, por URL o parámetros típicos como username o password) y configura el contexto para usar ese método.

6. ¿Cómo se configuran los tokens anti-CSRF?

Desde Opciones > Anti CSRF, donde puedes:

  • Añadir nombres de parámetros que ZAP reconocerá como tokens CSRF.
  • Activar coincidencias parciales de nombres.
    ZAP los detecta y los maneja automáticamente durante el escaneo activo.

7. ¿Qué opciones hay para control de acceso?

ZAP permite:

  • Definir reglas de acceso por usuario/contexto.
  • Realizar pruebas para detectar accesos indebidos.
  • Generar informes sobre accesos permitidos o denegados.
  • Ver resultados en la pestaña de Estado de Control de Acceso.

8. ¿Qué tipos de reglas de acceso existen?

Por cada nodo (URL), se puede definir:

  • Permitido
  • Denegado
  • Heredado (infiere del nodo padre)
  • Desconocido (valor por defecto si no hay padre definido)

9. ¿Qué información muestra la pestaña de estado del control de acceso?

  • Usuario desde el cual se accedió.
  • URL objetivo.
  • Método HTTP.
  • Código de respuesta HTTP.
  • Resultado (✔️ o ❌ según la regla de acceso).
  • Si la regla fue definida o inferida.

10. ¿Qué pasos se siguen para configurar la autenticación basada en navegador?

  1. Indicar URL de login.
  2. Elegir método «Basado en navegador».
  3. Especificar navegador, usuario y contraseña.
  4. Definir pasos personalizados (click, rellenar campos, esperar, etc.) si es necesario.
  5. Probar autenticación y revisar resultados/diagnóstico.

Respuestas completas a los 10 ejercicios

1. Crear un contexto e incluir URLs

  • Ve al árbol de sitios, clic derecho > Incluir en nuevo contexto.
  • Asigna nombre al contexto.
  • Edita el contexto para agregar más URLs si es necesario.

2. Configurar autenticación basada en formularios

  • Identifica la solicitud de login (POST con usuario/contraseña).
  • Clic derecho > Marcar como contexto > Solicitud de login.
  • Asigna parámetros correspondientes.
  • En el contexto, selecciona método de autenticación > Formulario.

3. Establecer verificación por expresión regular

  • Abre la respuesta de una solicitud autenticada.
  • Selecciona texto (como “Bienvenido”) > clic derecho > Marcar como contexto > Indicador de inicio de sesión.
  • También puedes usar expresiones regulares en la configuración del contexto.

4. Definir un usuario

  • Ve a Propiedades de sesión > Usuarios.
  • Crea un nuevo usuario.
  • Asigna nombre de usuario y contraseña.
  • Marca como «habilitado».

5. Usar Modo de Usuario Forzado

  • En la barra superior, haz clic en el botón del usuario con candado.
  • Selecciona el usuario a utilizar.
  • Habilita el modo. Todo el tráfico irá como ese usuario.

6. Configurar token anti-CSRF

  • Ir a Opciones > Anti-CSRF.
  • Agrega el nombre del parámetro (ej: csrf_token).
  • ZAP lo detectará y gestionará automáticamente en escaneos activos.

7. Probar control de acceso

  • Configura reglas de acceso en Propiedades de sesión > Control de acceso.
  • Define qué usuario tiene o no permiso en cada URL.
  • Ejecuta desde la pestaña Estado > Control de acceso.
  • Analiza si los accesos coinciden con las reglas.

8. Usar cuadro de diálogo de autenticación

  • Ve a Herramientas > Probar autenticación.
  • Introduce URL, método, navegador, usuario y contraseña.
  • Ejecuta y revisa resultados y pestaña de diagnóstico.

9. Crear reglas de acceso

  • En Propiedades de sesión > Control de acceso, elige el contexto.
  • Asigna a cada usuario el estado “Permitido” o “Denegado” por nodo.
  • Los demás nodos heredarán la regla del padre si no se define.

10. Usar API para lanzar escaneo de control de acceso

Ejemplo de endpoint:

http://localhost:8080/JSON/accessControl/action/scan/?contextId=1&userId=2

Parámetros opcionales:

  • scanAsUnAuthUser=true
  • generateAlerts=true
  • riskLevel=high

Despedida — lo que aprendiste y cómo lo aplicarás como hacker

Hoy dominaste cómo configurar, probar y automatizar la autenticación y gestión de sesiones en OWASP ZAP.

Ahora puedes:

  • Configurar métodos de autenticación complejos (form, JSON, script, navegador).
  • Usar estrategias de verificación basadas en regex o sondeo.
  • Gestionar sesiones por cookies o encabezados (tokens, JWT).
  • Detectar y regenerar tokens anti-CSRF automáticamente.
  • Realizar pruebas de control de acceso para detectar errores de autorización.
  • Integrar autenticación en escaneos automatizados o pipelines CI/CD.
  • Generar informes y métricas sobre el estado de autenticación y sesiones.

Estas habilidades te convierten en un hacker más profesional y preciso: podrás simular usuarios reales, auditar permisos, automatizar pruebas repetitivas y detectar fallos críticos que otros pasarían por alto.

Recuerda: la autenticación y el control de acceso son la primera línea de defensa en seguridad web — y ahora sabes cómo ponerla a prueba de forma ética, controlada y eficaz.

Deja una respuesta

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