コンテンツにスキップ

ZAP (Zed Attack Proxy) - Webアプリケーションセキュリティスキャナーチートシート

ZAP (Zed Attack Proxy) - Webアプリケーションセキュリティスキャナーチートシート

ZAP (Zed Attack Proxy、Checkmarx管理、旧OWASP旗艦プロジェクト)は、無料のオープンソース動的アプリケーションセキュリティテスト (DAST) ツールです。ブラウザとターゲット間のインターセプトプロキシとして機能し、WebアプリケーションおよびAPIをパッシブおよびアクティブにスキャンして脆弱性を検出します。スパイダー/クローラー、ファザー、アクティブスキャナー、WebSocketサポート、REST/GraphQL/SOAP APIスキャン機能を備えており、GUIを使用してインタラクティブに、またはCLIおよびAPIを使用してヘッドレスで利用できます。

インストール

プラットフォームコマンド
Docker (CI推奨)docker pull zaproxy/zap-stable
Debian/UbuntuZAPサイトからインストーラーをダウンロード
macOS (Homebrew)brew install --cask zap
クロスプラットフォームクロスプラットフォームパッケージをダウンロード (Javaが必要)
確認zap.sh -version (Windowsでは zap.bat)

実行モード

コマンド説明
zap.shデスクトップGUIを起動
zap.sh -daemon -host 0.0.0.0 -port 8080APIを備えたヘッドレスデーモン
zap.sh -cmd -quickurl https://target -quickout report.htmlワンショットクイックスキャン
docker run -t zaproxy/zap-stable zap-baseline.py -t https://targetDocker内のベースライン (パッシブ) スキャン

オートメーションフレームワーク (スクリプト済みスキャン)

ZAPのパッケージスキャンスクリプトは、CI統合への最速のパスです。

スクリプト目的
zap-baseline.py -t URLパッシブスキャン + スパイダリング (高速、CI安全)
zap-full-scan.py -t URLベースライン + アクティブアタックスキャン
zap-api-scan.py -t openapi.json -f openapiOpenAPI/SOAP/GraphQL定義からAPIをスキャン
-r report.htmlHTMLレポートを作成
-J report.jsonJSONレポートを作成
-c config.confアラートフィルター / ルール設定
# CI対応ベースラインスキャン、検出時にビルドを失敗
docker run -t zaproxy/zap-stable zap-baseline.py \
  -t https://staging.example.com -r zap-report.html

コアコンポーネント

コンポーネント役割
ProxyHTTP(S)トラフィックをインターセプト/検査/修正
SpiderアプリケーションをクロールしてURLを検出
Ajax SpiderJavaScriptが多いアプリケーションを実ブラウザ経由でクロール
Passive Scan観測されたトラフィックから問題を検出 (攻撃なし)
Active Scan脆弱性を検出するために攻撃ペイロードを送信
Fuzzerリクエストにペイロードリストを注入

プロキシ設定

ステップ方法
ブラウザプロキシを設定ブラウザを localhost:8080 にポイント
ZAP CAルート証明書をインストールHTTPS をインターセプトするためにZAPのルート証明書をインポート
手動で探索アプリケーションをブラウズ、ZAPがトラフィックを記録
その後スキャン検出されたツリーに対してスパイダー + アクティブスキャン

API (オートメーション)

デーモンが実行中の場合、HTTP経由でZAPを制御します。

エンドポイントアクション
/JSON/spider/action/scan/?url=...スパイダーを開始
/JSON/ascan/action/scan/?url=...アクティブスキャンを開始
/JSON/core/view/alerts/検出結果を取得
/OTHER/core/other/htmlreport/HTMLレポートを生成
API keyリクエストで apikey=... を渡す

認証とコンテキスト

概念用途
Contextターゲットスコープと認証を定義
Session mgmtCookie/HTTP/スクリプトベースのセッション
AuthenticationForm、JSON、HTTP、またはスクリプト認証
Users認証されたユーザーとしてテスト

一般的なワークフロー

# ステージングに対する高速パッシブベースラインをCI内で実行
zap-baseline.py -t https://staging.example.com -r report.html

# OpenAPI仕様からREST APIをスキャン
zap-api-scan.py -t https://api.example.com/openapi.json -f openapi -J out.json

# フルアクティブスキャン (認可されたターゲットのみ)
zap-full-scan.py -t https://target.example.com -r full.html

ZAPと他のDASTツール

側面ZAPNucleiBurp SuiteNikto
モデルプロキシ + クロール + アクティブDASTテストテンプレートベースCVEスキャナープロキシ + 手動 + スキャナーサーバー設定ミススキャナー
コスト無料/オープンソース無料/オープンソース無料 + 有料Pro無料
API/CI強力 (API + スクリプト)強力Pro拡張CLI
最適用途フルアプリDASTテスト、CI既知CVEの高速チェック手動ペネトレーションテストクイックサーバーチェック

一般的なペアリング: Nuclei は既知CVE検出の高速化、ZAPはアプリケーションレベルのDASTテスト用クロール。

リソース