Contenedores de etapa dos
Estos contenedores se inician dinámicamente según la configuración del usuario Build (Job) proporcionada a la CLI de purpleteam, específicamente el número de testSessions que definas.
Las siguientes configuraciones son relevantes si tienes la intención de ejecutar el backend de purpleteam en el entorno local. En la nube (cloud) todo esto se hace por ti.
Clona este repositorio.
Usamos un archivo .env directamente en el directorio app-slave para las pruebas.
ZAP_API_KEY
Asegúrate de haber asignado un valor a la variable de entorno ZAP_API_KEY.
La ZAP_API_KEY puede ser la que elijas, solo asegúrate de que, además de definirla para app-slave, también la agregues a la configuración del proyecto app-scanner. El proyecto app-scanner requiere que la clave API de Zap esté configurada para autenticarse en Zap que se ejecuta en el contenedor de la Etapa Dos. Para el proyecto app-scanner, esto debe configurarse en lo siguiente:
{ "slave": { "apiKey": <zap-api-key-here> } }
HOST_ZAP_LOG4J_PROPERTIES_PATH y ZAP_LOG4J_PROPERTIES_PATH_MOUNT_TARGET
Si/cuando necesites registros de depuración de Zap, también necesitarás agregar las variables de entorno para la configuración de depuración de LOG4J.
Archivo .env
Si eliges usar un archivo .env, agregar todas estas variables de entorno se vería similar a lo siguiente:
ZAP_API_KEY=<zap-api-key-here>
HOST_ZAP_LOG4J_PROPERTIES_PATH=<ruta-absoluta-hacia/purpleteam-s2-containers/app-slave/log4j.properties>
ZAP_LOG4J_PROPERTIES_PATH_MOUNT_TARGET=/home/zap/.ZAP/log4j.properties
Siempre que hayas establecido las variables de entorno discutidas anteriormente:
Para activar el registro de depuración para los contenedores app-slave (Zap) que se ejecutan en el entorno local, descomenta el arreglo volumes y el elemento que contiene la clave source con la variable de entorno HOST_ZAP_LOG4J_PROPERTIES_PATH.
Los detalles a continuación para ver realmente los registros.
Puedes interactuar con Zap (consultar la interfaz de usuario de Zap) mientras se ejecutan tus pruebas. Esto ha sido útil en el pasado para verificar el estado de Zap mientras se depura el app-scanner.
docker stats
docker container ls
Esto podría ser cualquier puerto entre 8080-8091 inclusive, según lo definido en docker-compose.yml.
zap:8080/*
http://zap:8080/zap en el contenedor especificado por el puerto del host en tu configuración de FoxyProxyPara activar el registro de depuración para los contenedores Selenium que se ejecutan en el entorno local, descomenta el arreglo environment y el elemento SE_OPTS=-debug para chrome y/o firefox.
Los detalles a continuación para ver realmente los registros.
Lo siguiente describe lo que necesitarás hacer para ver el navegador dentro de cualquiera de los contenedores Selenium ejecutados desde este proyecto.
-debug. Las imágenes -debug pueden estar comentadas, así que simplemente comenta la imagen habitual y descomenta la imagen con -debug agregado al final debería funcionar5900. Al especificar un rango como puerto externo (Ej: 5900-5901) podrás conectarte por VNC a más de un contenedor a la vez; en el ejemplo hemos permitido abrir dos sesiones concurrentemente. Si necesitas conectarte por VNC a más de dos, simplemente amplía el rango de puertos externosNecesitarás un cliente VNC para abrir una conexión al servidor VNC dentro del contenedor. Hemos tenido éxito usando el Cliente de Escritorio Remoto Remmina en Linux Mint. Instala el complemento Remmina-plugin-vnc a través del Gestor de Software
Ejecuta tu Cliente de Escritorio Remoto Remmina
Crea nuevas entradas. Si tienes la intención de conectarte por VNC a un par de contenedores Selenium concurrentemente, puedes configurar cada uno como lo siguiente:
| Clave | Valor |
|---|---|
| Nombre | seleniumstandalone_chrome_1 |
| Protocolo | VNC - Computación en Red Virtual |
| En la pestaña Básico | |
| Servidor | 127.0.0.1:5900 |
| Contraseña | secret |
| Profundidad de color | Color verdadero (24 bits) # Esta fue la única que funcionó para nosotros |
| Calidad | Pobre (más rápida) |
| Clave | Valor |
|---|---|
| Nombre | seleniumstandalone_chrome_2 |
| Protocolo | VNC - Computación en Red Virtual |
| En la pestaña Básico | |
| Servidor | 127.0.0.1:5901 |
| Contraseña | secret |
| Profundidad de color | Color verdadero (24 bits) # Esta fue la única que funcionó para nosotros |
| Calidad | Pobre (más rápida) |
Más detalles en el github de SeleniumHQ
Una vez que los contenedores Selenium estén en ejecución (mantener docker stats ejecutándose en una terminal es conveniente para ver esto), puedes confirmar qué contenedor Selenium está usando qué puerto externo con docker container ls, ya que Docker no tiene idea de qué puertos has asignado a cuáles de tus entradas de cliente VNC, por lo que el nombre de una entrada de cliente VNC dada puede no coincidir necesariamente con el contenedor Selenium del mismo nombre. Por esta razón, es buena idea confirmar las asignaciones de puertos con docker container ls.