Files
portal/docs/security/zap-setup.md
T
Дмитрий 3fc5501dc5 docs(infosec): A8 ZAP #68 + Ward #70 установлены портативно — PENDING INSTALL снят
- ZAP cross-platform 2.17.0 + MCP-аддон mcp-alpha-0.0.1 на portable Temurin JRE 17 (bin/, gitignored)
- Ward v0.4.1 собран portable Go 1.26.3 (bin/ward.exe); smoke app/ → 2 находки (APP_DEBUG/APP_ENV)
- setup-доки docs/security/zap-setup.md + ward-setup.md
- нормативный синк: Tooling v2.21 / CLAUDE.md v2.25 / PSR_v1 v3.21 / Pravila v1.38
- ADR-014 amended (Status/Decision/Consequences) + routing-off-phase v1.5
- gates GREEN: cross-ref + l1-watcher 0 drift / markdownlint / lychee / gitleaks

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-21 15:36:06 +03:00

58 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OWASP ZAP (#68) — установка и использование
**Узел A8:** #68 — глубокая боевая DAST работающего портала (spider + active scan: обход входа, инъекции, XSS, сессии/CSRF).
**Источник (IS9-вет принят):** официальный ZAP «MCP Integration» add-on (`zaproxy/zap-extensions`, `addOns/mcp/`, Apache-2.0; провенанс OWASP/Checkmarx).
**Тип:** Java-приложение (ZAP) + **MCP-аддон** (единственный настоящий MCP в наборе A8). Управляется через MCP при запущенном ZAP-демоне.
---
## Установка (native-Windows, портативно, без choco)
ZAP — Java-приложение, требует Java 17+. И Java, и ZAP ставятся **портативно** (zip, без choco), всё под `bin/` (gitignored).
```powershell
$ProgressPreference='SilentlyContinue'
# 1. Portable Temurin JRE 17 (официальный zip, проверка SHA256)
Invoke-WebRequest -Uri 'https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.19%2B10/OpenJDK17U-jre_x64_windows_hotspot_17.0.19_10.zip' -OutFile 'bin\_dl\jre17.zip' -UseBasicParsing
# ожидаемый SHA256: 79a598e1fbb4e16582d92c4ee22280a3c4d72fd52606e1e46b1223c0fe53b0da
tar.exe -xf 'bin\_dl\jre17.zip' -C 'bin\_runtimes' # → bin\_runtimes\jdk-17.0.19+10-jre\
# 2. ZAP cross-platform 2.17.0 (официальный GitHub-релиз; размер 286 652 857 Б)
Invoke-WebRequest -Uri 'https://github.com/zaproxy/zaproxy/releases/download/v2.17.0/ZAP_2.17.0_Crossplatform.zip' -OutFile 'bin\_dl\zap.zip' -UseBasicParsing
tar.exe -xf 'bin\_dl\zap.zip' -C 'bin' # → bin\ZAP_2.17.0\
# 3. MCP-аддон (+ зависимости) из маркетплейса ZAP
$env:JAVA_HOME="$((Get-Location).Path)\bin\_runtimes\jdk-17.0.19+10-jre"
& "$env:JAVA_HOME\bin\java.exe" -jar 'bin\ZAP_2.17.0\zap-2.17.0.jar' -cmd -dir 'bin\ZAP_2.17.0\_home' -addoninstall mcp
```
- **Расположение:** `bin/ZAP_2.17.0/` (движок + аддоны в `_home/plugin/`), JRE — `bin/_runtimes/jdk-17.0.19+10-jre/`. `bin/*` в `.gitignore` → машинно-локально, не коммитится.
- **Java — портативная**, системная не устанавливается (`JAVA_HOME` задаётся при запуске ZAP).
- **Verified (2026-05-21):** `java -jar zap-2.17.0.jar -cmd -version``2.17.0`; daemon API `/JSON/core/view/version/``2.17.0`; аддон `mcp-alpha-0.0.1.zap` в `_home/plugin/`.
## Квирки native-Windows (важно)
1. **`Start-Process -ArgumentList` калечит путь к jar** с пробелами/кириллицей (`Error: Unable to access jarfile`). Запускать через оператор `&` (корректно кавычит) **или** задавать `-WorkingDirectory bin\ZAP_2.17.0` + относительное имя `zap-2.17.0.jar`.
2. **Первый daemon-старт тянет полный штатный набор аддонов** (~817 МБ: active/passive scan rules, spider, ajax, openapi, soap, graphql, selenium/webdrivers) — это нормально.
3. **Цель сканирования — `127.0.0.1`** (как у Nuclei), не `localhost`.
## Запуск daemon (для MCP-режима)
```powershell
$root=(Get-Location).Path; $env:JAVA_HOME="$root\bin\_runtimes\jdk-17.0.19+10-jre"
Start-Process -FilePath "$env:JAVA_HOME\bin\java.exe" -WorkingDirectory "$root\bin\ZAP_2.17.0" `
-ArgumentList @('-jar','zap-2.17.0.jar','-daemon','-dir','_home','-host','127.0.0.1','-port','8092','-config','api.disablekey=true')
# проверка готовности: GET http://127.0.0.1:8092/JSON/core/view/version/ → {"version":"2.17.0"}
```
**MCP-интеграция:** при запущенном демоне MCP-аддон отдаёт MCP-эндпоинт; зарегистрировать его SSE-адрес в `.mcp.json` (блок `zap`), затем доступны 15 MCP-инструментов (`ZapStartSpiderTool`, `ZapStartActiveScanTool`, `ZapGetActiveScanStatusTool`, `ZapGenerateReportTool` и т.д.) — все обращаются только к локальному ZAP API. Аддон **alpha** (`mcp-alpha-0.0.1`) — API может меняться.
## Гард IS8
Цель по умолчанию — **локальная/тестовая копия** (127.0.0.1). Боевой портал — **только по явной команде** заказчика. Active scan тяжёлый — в smoke не запускать (только spider + passive / проверка связности). READ-only постура.
## Границы (ADR-014)
IS1 — ZAP (динамика, бьёт работающий портал) ≠ Semgrep #25 (статика, читает код). IS2 — ZAP (глубина: логика приложения) ≠ Nuclei #69 (широта: известные дыры) — комплементарны.