
⚡️ Escaneo ZAP con múltiples objetivos
mzap es una CLI en Crystal para escaneo ZAP de múltiples objetivos.
Distribuye objetivos entre uno o más hosts de API de ZAP, admite modo de espera opcional y puede exportar informes.
spider, ajaxspider, clientspider (ZAP 2.16+), ascan, pscanopenapi, soap, graphql y postmanexport/prune del árbol de sitios para escaneo diferencial/incremental en ZAP 2.16+policies)html/pdf/json/md/sarif) con comportamiento de fallback--fail-on como puerta de riesgo para códigos de salida en CIspider, ajaxspider, clientspider, ascan o all$HOME/.config/mzap/config.toml y rutas heredadas>= 1.19.1brew install hahwul/mzap/mzap
shards install --frozen
crystal build --release src/mzap_cli.cr -o bin/mzap
crystal run src/mzap_cli.cr -- version
docker build -t mzap .
docker run --rm -v "$PWD:/work" mzap spider --urls /work/samples/target.txt --apis http://host.docker.internal:8090
Usage:
mzap [command]
Subcommands:
ajaxspider Iniciar escaneos de Ajax Spider en ZAP
ascan Iniciar trabajos de Active Scan en ZAP
clientspider Iniciar escaneos de Client Spider en ZAP (ZAP 2.16+)
help Mostrar ayuda para un comando
import Importar definiciones de API (openapi/soap/graphql/postman)
policies Listar políticas de escaneo activo en ZAP
pscan Esperar a que finalice el Passive Scan en ZAP
sitestree Exportar o podar el árbol de sitios de ZAP (ZAP 2.16+)
spider Iniciar escaneos de Spider en ZAP
stop Detener escaneos en ejecución
version Mostrar la versión de mzap
Flags:
--apikey string Clave de API de ZAP (omitir cuando la autenticación de clave API está deshabilitada)
--apis string URLs de host de API de ZAP separadas por comas
ej. --apis http://localhost:8090,http://192.168.0.4:8090 (por defecto "http://localhost:8090")
--config string Ruta del archivo de configuración (TOML compatible; por defecto: $HOME/.config/mzap/config.toml)
--context string Archivo de contexto de ZAP a importar antes del escaneo
--fail-on string Fallar con código de salida 1 si hay alertas en o por encima del nivel de riesgo
--format string Formato de definición de API para importar (openapi/soap/graphql/postman)
--target-url string URL de destino/endpoint para sobrescribir en la importación
--policy string Nombre de la política de escaneo para el escaneo activo
--report-format Formato del informe después de completar el escaneo (html/pdf/json/md/sarif)
--report-out Ruta de salida del informe (por defecto: mzap-report-<timestamp>.<ext>)
--concurrency Número de despachos de escaneo en paralelo (por defecto 1)
--wait Esperar a que los escaneos iniciados finalicen
--wait-interval Intervalo de sondeo en segundos mientras se espera (por defecto 2)
--wait-timeout Tiempo de espera en segundos (por defecto 0: sin tiempo de espera)
-h, --help Mostrar ayuda para mzap
--urls string Ruta al archivo de lista de URLs (ej. --urls hosts.txt)
Ejecute mzap help <command> para las banderas específicas de cada comando.
# spider scan with two ZAP API hosts
mzap spider --urls samples/target.txt --apis http://localhost:8090,http://192.168.0.4:8090
# run scan, wait for completion, and generate an HTML report
mzap spider --urls samples/target.txt --apis http://localhost:8090 --wait --report-format html --report-out reports/mzap.html
# Client Spider (browser-based crawler, ZAP 2.16+; needs the Client Side Integration add-on)
mzap clientspider --urls samples/target.txt --apis http://localhost:8090 --wait
# import an OpenAPI definition, wait for passive scan, gate CI on high-risk alerts
mzap import --format openapi --urls samples/specs.txt --target-url https://api.example.com \
--apis http://localhost:8090 --wait --report-format sarif --fail-on high
# import API specs from stdin
echo https://api.example.com/openapi.json | mzap import --format openapi --urls -
# discover available scan policies (then use one with `ascan --policy`)
mzap policies --apis http://localhost:8090
# Sites Tree baseline for differential scanning (path resolved by the ZAP daemon)
mzap sitestree export baseline.tree --apis http://localhost:8090
mzap sitestree prune baseline.tree --apis http://localhost:8090
# stop all running scan types
mzap stop all --apis http://localhost:8090
Importación de APIs:
mzap importsiembra el árbol de sitios de ZAP y permite que el escaneo pasivo se ejecute; para escanear activamente los endpoints importados posteriormente, ejecutemzap ascancontra el/los mismo(s) objetivo(s). Para archivos locales, las rutas en--urls(y--target-url) son resueltas por el demonio de ZAP, por lo que debe montarlas dentro del contenedor cuando ZAP se ejecute en Docker.
mzap carga la configuración automáticamente cuando está presente.
La prioridad es:
--config (si existe)$HOME/.config/mzap/config.toml$HOME/.config/mzap/config + variantes de extensión$HOME/.mzap + variantes de extensiónLas banderas de línea de comandos siempre anulan los valores de configuración.
[mzap]
apis = ["http://localhost:8090", "http://192.168.0.4:8090"]
apikey = "your-zap-api-key"
urls = "samples/target.txt"
wait = true
wait_interval = 2
wait_timeout = 0
report_format = "html"
report_out = "reports/mzap.html"
Este repositorio incluye una acción de GitHub basada en Docker (action.yml).
- name: Run mzap
uses: hahwul/mzap@<tag>
with:
arguments: "spider --urls samples/target.txt --apis http://localhost:8090"
# tests
crystal spec
# release build
crystal build --release src/mzap_cli.cr -o bin/mzap