Zed Attack Proxy(ZAP)「旧称:OWASP ZAP」
- オープンソースのWebアプリケーション脆弱性診断ツール -
Webアプリケーション脆弱性診断の定番ツール〝ZAP by Checkmarx(旧称:OWASP ZAP)〟について、基礎から実践的な使い方まで体系的に解説します。
- ZAPとは何か
- 「OWASP ZAP」と「ZAP by Checkmarx」の違い
- ZAPのインストール方法
- ZAPの使い方
本記事ではWindows環境に構築した検証環境を用いて、脆弱性診断の進め方をスクリーンショット付きで解説しているので、初めての方でも迷わずに進めることができます。
Zed Attack Proxy(ZAP)「旧称:OWASP ZAP」とは
Zed Attack Proxy(以下、ZAP)は、Webアプリケーションの脆弱性診断に特化したオープンソースの診断ツールです。リクエスト/レスポンスの内容を可視化・改変可能な中間者プロキシとして機能し、GUIベースの操作性と高度な診断機能を兼ね備えているため、初心者から上級者まで幅広く利用されています。
元々はOWASP(Open Worldwide Application Security Project)によって開発・運用されていたものであり、〝OWASP ZAP〟という名称で長く親しまれてきました。現在は、セキュリティ企業「Checkmarx社」によってメンテナンス・管理されており、名称も〝ZAP by Checkmarx〟へと変わりました。
「ZAP」「Zed Attack Proxy」「ZAP by Checkmarx」「OWASP ZAP」「OWASP Zed Attack Proxy」「zaproxy」の名称の違い
名称の違いは歴史的経緯によるもので、いずれも同じプロダクトを指しています。
- 2010年9月
- OWASPプロジェクトとして、OWASP ZAP 1.0をリリース。
- 2023年8月
- OWASPプロジェクトから独立し、Software Security Project (SSP) に参加。
- 公式名称から「OWASP」が外れ、シンプルな「ZAP」となりました。
- 2024年9月
- 開発・運営を米国Checkmarx社に移管。
- 引き続き、オープンソース(Apache License 2.0)として、無料で提供されています。
OWASPプロジェクトが運営していた期間が長かったため、現在でも「OWASP ZAP」という名称が世界中に定着しています。
| ZAP | Zed Attack Proxyの略称 ※最も一般的な呼称で、単に「ZAP」と呼ぶのが一般的 |
|---|---|
| Zed Attack Proxy | ツールの正式名称 |
| ZAP by Checkmarx | 現在のブランド名 ※2024年9月、OWASPからCheckmarx社に移管 |
| OWASP ZAP | OWASPプロジェクトが運営・管理していた時代の呼称 ※歴史的に最もよく使われる呼称 |
| OWASP Zed Attack Proxy | OWASP ZAPの正式名称 |
| zaproxy | GitHubリポジトリ名やURL、コマンド名で使われる識別子 |
名称が変遷していても、ツールの中核的な機能や理念は変わらず継承されています。
対応OS
ZAPはJavaで実装されており、クロスプラットフォームで動作します。
- Windows(64 / 32ビット)
- macOS(Intel / Apple Silicon)
- Linux(Ubuntu、Debian、RHEL系など主要ディストリビューション)
上記に加え、DockerイメージおよびCLI実行が公式にサポートされています。
検出できる脆弱性
OWASP Top 10に代表される主要な脆弱性の多くは、ZAPによって検出することができます。一方で、ビジネスロジックの欠陥や認可設計の不備については自動検出に限界があり、手動診断が必要です。
- SQLインジェクション
入力値を通じて不正なSQLが実行され、情報漏えいやデータ改ざんにつながる可能性がある。 - クロスサイトスクリプティング(XSS)
悪意あるスクリプトがブラウザ上で実行され、Webサイトの改ざん、フィッシング、ユーザーのなりすまし等の危険がある。 - サーバーサイド・リクエストフォージェリ(SSRF)
サーバーを踏み台にして、本来外部からはアクセスできない内部ネットワークや外部システムへリクエストを送信させられる。 - OSコマンドインジェクション
サーバー上で任意のコマンドが実行される危険がある。 - ディレクトリトラバーサル
サーバー内の意図しないディレクトリやファイル(設定ファイルや個人情報など)を読み取られる。 - XML外部実体参照(XXE:XML External Entity Attack)
XMLパーサの設定不備により、サーバー内ファイルの読み取りやSSRFが可能になる。 - サーバーサイド・テンプレートインジェクション(SSTI)
Webアプリケーションのテンプレートエンジンに悪意のあるコードを挿入し、情報漏洩やリモートコード実行に至る可能性がある。
主な特徴
Webアプリケーション脆弱性診断ツール
ZAPは、インターセプト型プロキシ機能を備えたWebアプリケーション脆弱性診断ツールです。リクエストとレスポンスをインターセプトし、診断対象のアプリケーションの挙動を動的に観察することで、SQLインジェクションやXSS、CSRFなどの脆弱性を検出します。
動的アプリケーションセキュリティテスト(DAST)
ZAPはDASTに分類されるセキュリティテストツールで、実行中のWebアプリケーションに対して診断用リクエストを送信し、脆弱性を検出します。
DAST:Dynamic Application Security Testing(動的アプリケーションセキュリティテスト)
例えば、入力フォームに診断用の文字列(ペイロード)を送信し、SQLインジェクションやXSSといった脆弱性が存在しないかチェックします。
OWASP Top10に準拠した診断が可能
OWASP Top10で定義される代表的なカテゴリ(例:Broken Access Control、Security Misconfiguration、Injectionなど)に対応したスキャンルールを標準で備えています。
検出結果は、リスクレベル(High / Medium / Low / Informational)で分類され、再現性のあるリクエスト例とともに提示されます。
自動診断・手動診断の両方に対応
クロールから脆弱性検出までを一括で行う自動診断と、エンジニアが通信内容を確認・改変しながら検証する手動診断の両方に対応しています。
自動診断では数百〜数千リクエスト規模のテストを短時間で実行でき、手動診断ではロジック欠陥や業務要件に依存する問題を重点的に確認可能です。
用途に応じて使い分けることで、セキュリティ診断の網羅性と精度を両立できます。
直感的なGUI(CLIにも対応)
GUIは初心者でも直感的に操作できる構成となっており、スキャン対象の設定から結果のレビュー、レポート出力までを一貫して実施できます。
コマンドラインインターフェース(CLI)にも対応しており、スクリプトやCI/CDツールとの連携にも適しています。
クロスプラットフォーム対応
Windows、macOS、Linuxなど、主要なOSに対応しています。Dockerイメージも公式に提供されており、docker pull ghcr.io/zaproxy/zaproxy:stableで簡単に導入できます。
Javaで実装
Javaプログラミング言語で開発されているため、Javaの実行環境が必要です。
macOS用インストーラーにはJavaが含まれていますが、Windows、Linux、およびクロスプラットフォーム版ではJava 17以上を別途インストールする必要があります。(Docker版では、Javaをインストールする必要はありません。)
オープンソース・無償
Apache License 2.0ライセンスのもと、オープンソースとして公開されており、商用・非商用を問わず誰でも無料で利用できます。ライセンスコストをかけずに本格的なDASTを導入できるため、学習用途だけでなく、PoCや中小規模プロジェクトの診断にも適しています。
日本語対応
GUIは日本語表示に対応しており、主要なメニューやアラート内容を日本語で確認できます。英語が苦手な初学者でも操作しやすく、効率的に脆弱性診断の学習を進められます。
加えて、日本国内のセキュリティイベントやコミュニティでもZAPの活用事例が多く紹介されており、日本語での情報交換も活発です。
主な機能
インターセプト型プロキシ
ZAPはインターセプト型プロキシとして動作し、ブラウザとWebアプリケーション間のHTTP/HTTPS通信を可視化できます。
リクエスト/レスポンスのヘッダー、パラメータ、Cookie、ボディをリアルタイムで確認・編集できる点が最大の特長です。
アクティブスキャン(動的スキャン)
アクティブスキャンは、脆弱性診断用のリクエストを送信してWebアプリケーションの反応を解析し、脆弱性を検出する診断機能です。SQLインジェクション、XSS、OSコマンドインジェクションなど、入力値に対するサーバ側の検証不備を洗い出すことができます。
なお、アクティブスキャンはシステム負荷やデータ破壊リスクを伴うため、本番環境では実行せず、検証環境での利用が推奨されます。
パッシブスキャン(静的スキャン)
パッシブスキャンは、プロキシとして動作するZAPを通過する通信を解析し、通信内容から潜在的な問題点を検出する診断機能です。
- 診断用に改変されたリクエストは送信しない。
- ローカルプロキシ機能で取得した通信内容から脆弱性を判断する。
アクティブスキャンのように診断用に改変したリクエストを送信しないため、システムへの負荷やデータ破壊のリスクを低減できます。ただし、パラメータに特定の値を入力しなければ検出できない脆弱性(インジェクション系など)は検出できないという制約があります。
自動クロール
自動クロールは、診断対象のWebアプリケーションをZAPが機械的に巡回し、URL・パラメータを収集する機能です。脆弱性診断の品質は「どれだけ網羅的に攻撃対象を把握できたか」に大きく依存するため、自動クロールはアクティブスキャン前の重要な前処理と位置づけられます。
- スパイダー
- HTMLを解析してリンクを巡回する従来型のクローラー
- 静的なコンテンツやサーバーサイドレンダリング(SSR)のWebサイトが得意
- JavaScriptで生成されるリンクには対応できない
- AJAXスパイダー
- Crawljaxを使用して、JavaScriptを実行しながらクロールする
- JavaScriptで動的に生成されるリンクもクロール可能
- SPA(Single Page Application)にも対応
- クライアントスパイダー
- 2025年1月11日リリースのZAP 2.16で導入されたクローラー
- AJAXスパイダーと同様、JavaScriptによる動的URLやSPAのサイトが得意
- AJAXスパイダーはCrawljaxを使用しているが、クライアントスパイダーはクライアントサイド統合アドオンで対応
認証・セッション管理
ログインが必要なWebアプリケーションの診断にも対応しています。
- フォームベース認証
- HTTP/NTLM認証
- 手動認証
- スクリプトベース認証
- JSONベース認証
- ブラウザベース認証
- クライアントスクリプト認証
認証済みのセッションを維持したままスキャンを実行できるため、アクセス制限のある管理画面やユーザー限定ページに対しても診断が可能です。
レポート出力
スキャン結果をHTML、PDF、XML、JSON、Markdownの形式で出力可能です。
- 検出された脆弱性の概要
- 該当URL・パラメータ
- 診断コード
- 推奨される解決策
- 参考情報(URL)
- CWE(共通脆弱性タイプ一覧)番号
- WASC ID など
注意事項
ZAPは強力な診断機能を持ちますが、その特性上、以下の点に留意して使用する必要があります。
同意のない第三者のWebサイトへのスキャンは禁止
ZAPを利用した脆弱性診断は、対象システムの所有者から正式な許可を得ている場合にのみ実施してください。たとえ善意の脆弱性診断であっても、許可を得ずに実行するとサイバー攻撃とみなされる可能性があります。許可を得ていない環境では、絶対に使用しないでください。
学習目的の場合は、意図的に脆弱性が用意されたやられアプリを利用しましょう。(本記事では、やられアプリを利用して、ZAPの使い方を解説しています。)
本番環境での使用には慎重を期すこと
アクティブスキャンは、システムへの負荷やデータ破壊のリスクを伴うため、本番環境での実行は避け、検証環境での利用を推奨します。
診断結果の過信は禁物
ZAPは多くの脆弱性を検出できますが、すべてのリスクを網羅するわけではありません。必要に応じて他のツールや手動診断と組み合わせることが重要です。
自動診断と手動診断の違い
ZAPには、「完全自動診断」「自動診断」「手動診断」の3つの診断方法があります。
完全自動診断
完全自動診断(クイックスタート/自動スキャン)は、ZAPに搭載されているスパイダーとアクティブスキャンを組み合わせた最も簡易的な診断手法です。ユーザーが診断対象のURLを入力するだけで、ZAPが自動的に以下の手順で脆弱性診断を実行します。
- スパイダーによる自動クロール
- リンクやフォームを自動でたどり、URL・パラメータを収集。
- AJAXスパイダーを使用することで、JavaScriptによって動的に生成されるリンクもクロール可能。
- アクティブスキャンの実行
- 収集したHTTPリクエスト(URL、パラメータ)に対し、SQLインジェクションやXSSなどのペイロードを送信。
- 脆弱性評価
- レスポンスを分析し、脆弱性の有無を検証。
完全自動診断は手軽に利用できる反面、診断範囲や精度に制約がある点を考慮する必要があります。
- 認証が必要なURLにアクセスできない
自動ログインに対応していないため、ログイン認証が必要なWebアプリケーションの場合、未ログイン状態でアクセス可能なURLのみが収集対象となります。 - 業務フローを理解できない
例:「商品選択 → カート → 確認 → 決済」といった遷移。 - 網羅性に欠ける
スパイダー(AJAXスパイダー含む)が自動でたどれるURLに限りがあるため、診断範囲が限定されます。
以上のことから、完全自動診断は「簡易的な初期スクリーニング」には適していますが、本格的な脆弱性診断には不十分です。
自動診断
自動診断では、診断者がブラウザ操作を通じてWebアプリケーションを手動でクロール(巡回)し、その後スパイダー、およびアクティブスキャンを実行します。
- 手動クロール
- 診断者が実際にアプリケーションを操作し、ZAPはその通信内容(リクエスト、レスポンス)を記録します。
- 自動クロール
- スパイダー、AJAXスパイダーを用いて網羅的にクロールし、手動クロールで漏れたURLを補完します。
- アクティブスキャンの実行
- 手動、自動クロールで収集したHTTPリクエスト(URL、パラメータ)に対し、SQLインジェクションやXSSなどのペイロードを送信。
- 脆弱性評価
- レスポンスを分析し、脆弱性の有無を検証。
この方法は、ログイン後の画面遷移やJavaScriptで制御されたUIに対応可能であり、完全自動診断に比べてより広範かつ実戦的な診断が可能です。
手動診断
手動診断は、ZAPのインターセプトプロキシやリクエスト編集機能を活用し、診断者が個別にリクエストを作成・変更し、脆弱性の有無を精査する手法です。
「業務ロジックに起因する脆弱性を発見しやすい」「自動診断では検出できない設計不備を洗い出せる」という特徴がある反面、「高度な知識と経験が必要」「工数が大きく、属人化しやすい」といった課題もあります。
- 完全自動診断で全体把握
- 自動診断で網羅性を確保
- 手動診断で重要箇所を深掘り
という段階的アプローチを取ることで、効率と品質の両立が可能になります。
ZAPのインストール
ZAPの公式サイトでは、対応するOSごとにインストーラーが提供されています。

ZAP公式サイトのダウンロードページ:https://www.zaproxy.org/download/
利用環境に応じたインストーラーをダウンロードし、ウィザードの指示に従ってインストールして下さい。
ここでは、脆弱性診断やペネトレーションテストの学習・実務を想定し、Kali Linux環境にZAPをインストールする手順について解説します。
Kali Linux 2025.4
前提条件
ZAPは Javaで実装されたWebアプリケーション脆弱性診断ツールであり、実行にはJava 17以上のランタイム環境が必須です。
Kali Linux 2025.4の場合、OpenJDK 21が標準でインストールされているため、別途インストールは必要ありません。
$ java --version
openjdk 21.0.9 2025-10-21
OpenJDK Runtime Environment (build 21.0.9+10-Debian-1)
OpenJDK 64-Bit Server VM (build 21.0.9+10-Debian-1, mixed mode, sharing)- macOS版のZAPインストーラーにはJavaが同梱されているため、別途Javaをインストールする必要はありません。
- Docker版のZAPについても、実行に必要なJava環境はDockerイメージに含まれており、追加のインストールは不要です。
Kali LinuxにZAPをインストール
Kali Linuxでは、ZAP(zaproxy)が 公式のAPTリポジトリに含まれており、追加リポジトリの設定なしでインストール可能です。
パッケージリストの更新
$ sudo apt update利用可能なパッケージの最新情報をリポジトリから取得します。
パッケージ情報の確認
$ apt list | grep -i zap
〜 省略 〜
zaproxy/kali-rolling 2.17.0-0kali1 allZAPのパッケージ名は、zaproxyです。
パッケージ情報の確認
$ apt show zaproxy
Package: zaproxy
Version: 2.17.0-0kali1
Priority: optional
Section: utils
Maintainer: Kali Developers <devel@kali.org>
Installed-Size: 280 MB
Depends: default-jre
Breaks: kali-menu (<< 1.371.1)
Homepage: https://github.com/zaproxy/zaproxy
Download-Size: 222 MB
APT-Sources: http://http.kali.org/kali kali-rolling/main amd64 Packages
Description: Testing tool for finding vulnerabilities in web applications
The OWASP Zed Attack Proxy (ZAP) is an easy to use
integrated penetration testing tool for finding
vulnerabilities in web applications.
.
It is designed to be used by people with a wide range of
security experience and as such is ideal for developers and
functional testers who are new to penetration testing as
well as being a useful addition to an experienced pen
testers toolbox.インストール状況の確認
$ apt list --installed | grep zaproxy
〜 出力なし 〜インストールされていないことを確認し、次のインストールに進みます。
ZAPのインストール
$ sudo apt install zaproxyインストール後の確認
$ which zaproxy
/usr/bin/zaproxy
$ which owasp-zap
/usr/bin/owasp-zapZAPの起動スクリプトが/usr/bin配下にインストールされます。
ZAPの起動
APTでインストールしたZAPは、Kali Linuxのアプリケーションメニューから起動できるほか、ターミナルからもコマンドで起動することが可能です。
ZAPの起動
APTを利用してインストールしたZAPは、アプリケーションメニューに登録されます。

アプリケーションメニューに加え、コマンドラインからも起動可能です。
$ zaproxy
または
$ owasp-zapどちらも同一のZAP本体をGUI起動します。

ZAPセッションの管理
ZAPの起動が完了すると、最初にセッションの保持方法を選択するダイアログが表示されます。

簡単に言うと、「ZAPで行った作業内容を保存したプロジェクトファイル」です。スキャン対象のURL、リクエスト・レスポンスの履歴、発見された脆弱性、設定情報などが含まれます。
- 現在のタイムスタンプでファイル名を付けてセッションを保存
- ZAPが自動的に「20260109-231156.session」のような日時ベースの名前を付け、デフォルトフォルダに保存します。
- 保存先のパスとファイル名を指定してセッションを保存
- 保存場所とファイル名を自分で指定します。
- 今はこのセッションを保存しない
- セッションは保存されません。現在の作業内容は一時的に保持されますが、ZAPを終了すると消えます。
- あとから「やっぱり保存したい」と思った場合は、メニューから保存に切り替えることも可能です。
アドオンの更新
ZAPの初回起動時には、アドオンの更新画面が表示されます。

ZAPは多数のアドオンで構成されており、最新の脆弱性への対応やクロール機能の改善、認証方式の追加など、重要な更新が含まれています。診断結果の精度はZAP本体およびアドオンの更新状況に大きく左右されるため、定期的な更新を推奨します。
メニューバー:ヘルプ > 更新を確認
デスクトップUI
ZAPのデスクトップUIは視認性と操作性に優れており、脆弱性診断をスムーズに行えるよう設計されています。ここでは、ZAPのデスクトップUIを構成する主要な要素について解説します。

| メニューバー | 診断作業に必要なあらゆる機能へのエントリーポイント。 |
|---|---|
| ツールバー | メニューバーの下に設置されているツールバーには、頻繁に利用する機能がまとめられており、ワンクリックで実行できます。 |
| ツリー | ZAPが検出したドメイン、サイトパスが階層構造で表示されます。各ノードを右クリックすることで、コンテキストや認証情報の設定、スキャンの実行などが可能です。 |
| ワークスペース | 画面中央に位置するワークスペースでは、ZAPを通過したリクエスト、およびレスポンスの内容を確認することができます。 |
| インフォメーション | 通信履歴やスキャン状況がリアルタイムで確認でき、検出された脆弱性情報はリスクレベル(High / Medium / Low / Informational)ごとに表示されます。 |
| フッター | UIの最下部にあるフッターでは、アラート件数、プロキシ設定、アクティブスキャンなどのステータス情報を確認できます。 |
脆弱性診断前の事前準備
診断モードの選択
ZAPには、診断対象への影響度を制御するためのモードが用意されています。起動直後や診断開始前に、必ず適切なモードを選択してください。

- セーフモード:アクティブスキャンを実行しない(主な用途:リクエスト、レスポンスの確認)
- プロテクトモード:許可した範囲(スコープ)内のみ、アクティブスキャンを実行
- 標準モード:特に制限なし(スコープ外であっても、アクティブスキャン可能)
- 攻撃モード:特に制限なし(スコープ外であっても、アクティブスキャン可能)※標準モードとの違いは、新しいURLを見つけると、即座にアクティブスキャンが実行される。
Httpセッションの設定
対象アプリケーションが使用しているセッションIDのCookie名(例:JSESSIONID、PHPSESSID など)を設定することで、セッションを維持した状態で脆弱性診断を行うことができます。
メニュー:ツール>オプション>Httpセッション

一般的なWebアプリケーションで広く使用されているCookie名は、初期設定されています。
- asp.net_sessionid
- aspsessionid
- cfid
- cftoken
- jsessionid
- phpsessid
- sessid
- sid
- siteserver
- viewstate
- zenid
各アプリケーションで独自に定義しているCookieが存在する場合は、対象リストに追加して下さい。
CSRF対策トークンの設定
Httpセッションに続いて、CSRF対策トークンを設定します。
メニュー:ツール>オプション>Anti-CSRFトークン

代表的なCSRF対策トークン名は、初期設定されています。
- __csrf_magic
- __RequestVerificationToken
- _csrf
- _csrf_token
- _csrfSecret
- _csrfToken
- _token
- anoncsrf
- anticsrf
- authenticity_token
- CSRF
- csrf_token
- csrfmiddlewaretoken
- CSRFToken
- OWASP_CSRFTOKEN
各アプリケーションで独自にトークン名を定義している場合は、対象リストに追加して下さい。
ZAPを使って脆弱性診断を実施
このセクションでは、Windowsマシン上に構築した検証環境(仮想環境)を用いて、ZAPの使い方を解説します。
診断対象の設定 → ログイン情報の設定 → 手動クロール → 自動クロール → アクティブスキャン → 脆弱性評価
診断対象マシンには、OWASP BWAにプリインストールされているbWAPP(やられアプリ)を使用します。
検証環境の構成
| ZAP実行マシン | Kali Linux 2025.4 ZAP 2.17 |
| 診断対象マシン | OWASP BWA 1.2(bWAPP) http://192.168.10.105/bWAPP/ ログインID:bee パスワード:bug |
事前準備
- 診断モードの選択(推奨モード:プロテクトモード)
- Httpセッションの設定
- CSRF対策トークンの設定
詳細は、前述の「脆弱性診断前の事前準備」をご覧ください。
ブラウザの起動
ワークスペースのクイックスタートタブからブラウザを起動します。この方法でブラウザを起動すると、ZAP連携が自動で行われ、ZAPを通じて全通信がインターセプトされます。
- ZAPをローカルプロキシとして設定したブラウザが起動する。
- すべてのHTTP/HTTPS通信がZAPを経由する。
- リクエスト/レスポンスがリアルタイムに記録される。
ブラウザをZAPから起動しない場合(ブラウザを直接起動する場合)、ブラウザとZAPの連携は自動で行われないため、ローカルプロキシ、およびCA証明書の設定が別途必要です。
手動探索をクリック
ブラウザを起動をクリック

ZAPと連携したブラウザが起動し、探索対象URLに指定したURLが開きます。表示されたURLは、ZAPのサイトツリーおよびインフォメーションの履歴タブに反映されます。
診断サイトの設定
診断サイトのURLをコンテキストに含めます。
診断対象となるサイトの範囲や条件を設定する単位
コンテキストに含める>新規コンテキスト
OKボタンを押下
コンテキストの設定内容は、メニュー:ファイル>セッションプロパティで確認できます。
新規作成したコンテキストは、自動的にスコープに含まれます。

ログイン情報の設定
ログイン認証が必要なWebアプリケーションに対して脆弱性診断を行う場合、ZAPにログイン情報を設定します。
以下では、フォーム認証(ID/パスワード)を前提とした一般的な設定手順を解説します。
まず、ZAPと連携済みのブラウザを使って、診断対象サイトにログインします。

履歴タブ(またはサイトツリー)から、ログイン時に送信されたPOSTリクエストを特定します。(リクエストタブを選択すると、送信したリクエスト内容を確認できます。)

該当リクエストを右クリックし、コンテキストとしてフラグ付け>【コンテキスト名】:フォームベース認証ログインリクエストを選択すると、セッションプロパティの認証パネルが表示されます。

この操作により、ZAPは「このリクエストが認証処理である」と認識し、以降の設定を行えるようになります。

- コンテキストで現在選択されている認証方式
- ログインフォーム送信先URL
- GETログインページのURL
- ログインリクエストのPOSTデータ
に自動入力されていることを確認し、
- ユーザー名パラメーター
- パスワードパラメーター
を設定し、OKボタンを押下します。
ログインが成功したかどうかをZAPが判断できるように、ログイン状態(またはログアウト状態)を判定する条件を設定します。
認証後のHTTPレスポンスの中から、ログインが成功した時のみに出力される部分を選択し、右クリック(例.ログアウトボタン、ログインユーザー名 など)

コンテキストとしてフラグ付け>【コンテキスト名】:認証ログイン済み指標を選択

セッションプロパティの認証パネルが表示され、ログイン済みメッセージを識別する正規表現パターンに自動入力されていることを確認し、OKボタンを押下

メニュー:ファイル>セッションプロパティから、セッションプロパティを開く

対象コンテキストのユーザーパネルを選択し、追加ボタンを押下

診断時に使用するログインユーザーを追加する

有効にチェックが入っていることを確認し、OKボタンを押下

診断サイトをクロールする
クロールは「診断対象のURL・パラメータをZAPに認識させる工程」です。クロールの網羅性は、そのまま脆弱性検出率に直結します。
手動クロール
手動クロールは、人間が実際にブラウザを操作(画面遷移、検索、登録など)しながら診断対象のWebサイトを巡回する手法です。ZAPはこの操作中に通過したリクエストをインターセプトし、対象サイトのURLやパラメータを記憶します。
手動クロールでは、JavaScriptで動的に生成されるコンテンツや、SPA(Single Page Application)のルーティング情報など、自動クロールで検出しにくい要素も取得可能です。画面遷移の違いによってパラメータが変化する場合、すべての画面遷移を漏れなくクロールすることで、診断の網羅性を高めることができます。
手動クロール中は、バッググラウンドでパッシブスキャンが実行され、検出された脆弱性はアラートタブで確認できます。

自動クロール
前述の通り、ZAPには3種類の自動クロール機能が搭載されています。

診断対象のURLを右クリック:攻撃 > スパイダー

診断対象のURLを右クリック:攻撃 > AJAXスパイダー

診断対象のURLを右クリック:攻撃 > クライアントスパイダー

- 開始位置
- コンテキスト
- ユーザー
など、使用するクローラーの必要項目を入力し、スキャン開始をクリックします。
アクティブスキャンの実行
アクティブスキャンは、実際に診断用リクエストを送信してWebアプリケーションの脆弱性を動的に検出する機能です。
攻撃>アクティブスキャン
スキャン開始を押下
スキャンポリシーの詳細は、メニュー:分析>スキャンポリシー管理で確認できます。オリジナルのスキャンポリシーを作成することもできます。
ポリシー一覧
| ポリシー名 | 概要 |
|---|---|
| API | APIに影響しやすい脆弱性に焦点を当てたポリシー |
| Default Policy | デフォルトのポリシー(すべてのアクティブスキャンルールが有効) |
| Dev CICD | 【開発者向け】CI/CD用ポリシー |
| Dev Full | 【開発者向け】包括的ポリシー(Dev Standardの上位版) |
| Dev Standard | 【開発者向け】標準ポリシー |
| Pen Test | ペネトレーションテスト向け |
| QA CICD | 【QA/ステージング環境向け】CI/CD用ポリシー |
| QA Full | 【QA/ステージング環境向け】包括的ポリシー(QA Standardの上位版) |
| QA Standard | 【QA/ステージング環境向け】標準ポリシー |
スキャンの進行状況を確認
アクティブスキャンの実行中、送信されたリクエストやスキャンの進捗率がリアルタイムで表示されます。

また、詳細アイコン(進捗率の左のアイコン)をクリックすると、スキャンの進行状況の詳細を確認できます。

スキャン結果の確認
スキャンで検出されたアラートは、アラートタブで確認できます。

アラートはツリー形式で分類され、各アラートをクリックすると、以下の詳細情報が表示されます。
| 項目 | 説明 |
|---|---|
| アラート名 | 検出された脆弱性の種別(例:SQLインジェクション、XSSなど) |
| URL | 脆弱性が確認されたエンドポイント |
| リスク | 脆弱性の危険度(High、Medium、Low、Informational) |
| パラメータ | 問題があったリクエストパラメータ |
| 攻撃 | 脆弱性の検出に使用された診断コード |
| 説明 | 脆弱性の概要 |
| その他の情報 | 再現手順など |
| 解決策 | 脆弱性の修正方法に関するアドバイス |
| 参照 | 脆弱性の参考URL |
特に注目すべきは、各アラートに対してCWE(共通脆弱性タイプ一覧)番号やWASC IDが付記されている点です。これにより、脆弱性の業界標準に基づく識別と対応策の調査が容易になります。
ZAPで検出されたアラートは、すべてが脆弱性であるとは限りません。誤検知の可能性があるため、手動で再現確認を行ってください。

レポート出力
最後に診断結果をレポートとして出力します。
メニュー:レポート>レポートを生成する

