Webアプリケーションのセキュリティ対策は、開発・運用のあらゆるフェーズで重要です。中でも「脆弱性診断」は、外部からの攻撃リスクを事前に把握し、対策を講じるための基本的な手段です。
本記事では、脆弱性診断ツール「OWASP ZAP」を活用し、ローカル環境での検証方法を紹介していきます。
OWASP ZAPの概要とGUI版を使ったローカル診断の基本的な使い方、そして診断時の注意点について解説します。
1. OWASP ZAPとは?
OWASP ZAP(Zed Attack Proxy)は、OWASPが提供するオープンソースの脆弱性診断ツールです。
主に以下のような特徴があります。
- GUIとCLIの両方に対応(本記事ではGUI版にフォーカス)
- 自動スキャンと手動診断が可能
- クロスサイトスクリプティング(XSS)やSQLインジェクションなど、一般的な脆弱性を検出
- CI/CD パイプラインへの組み込みが容易
- アドオンやスクリプトによるカスタマイズなどの拡張性が豊富
本記事では、OWASP ZAP をインストールし、ローカル環境で簡単に脆弱性診断を行う方法を紹介していきます。
「セキュリティ診断って難しそう」と感じている方でも、まずは手元の環境で ZAP を動かしてみるところから始めてみませんか?
2. OWASP ZAPのインストール方法
OWASP ZAPは、Windows / macOS / Linux の主要なOSに対応しており、GUI版とCLI版の2種類があります。本記事では、GUI版を使った診断方法を紹介します。
OWASP ZAPはJavaベースで動作するため、事前にJavaの実行環境が必要です。
コマンドプロンプト上で下記のコマンドを実行し、JREがインストールされているか確認してください。
出力例:
#コマンド実行
java -version
#JREがインストールされていた場合の実行結果
java version "1.8.0_381"
Java(TM) SE Runtime Environment (build 1.8.0_381-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.381-b09, mixed mode)
エラーが出る場合は、JREをインストールしてください。(JDKにJREが含まれているためJDKでも可)
Javaの実行環境が整っていることを確認できましたら、OWASP ZAP公式サイト(https://www.zaproxy.org/)からOSに応じたインストーラーをダウンロードしてください。

ダウンロード後、インストーラーを実行します。
利用規約が表示されるため[承認する]にチェックを入れ、[次へ]をクリックします。

次の画面で「標準インストール」にチェックを付けて「次へ」をクリックします。

次の画面で「インストール」を実行します。

下記の画面が出力されていればインストール完了です。

3. 事前準備
OWASP ZAP は、WebブラウザとWebアプリケーションの間に挟まるプロキシサーバとして動作し、ユーザーがブラウザで操作したページの情報を OWASP ZAP が収集し、診断対象として登録できます。
OWASP ZAP はFirefox との連携が最もスムーズに設計されています。
もちろんChromeやEdgeなどのブラウザでもOWASP ZAPは利用できますが、Firefoxを利用すると設定が簡潔になるため、本記事ではブラウザはFirefoxを利用します。
3.1 ルート証明書のインポート
OWASP ZAPがHTTPS通信を安全に解析できるようにするために、OWASP ZAPが生成したルート証明書をブラウザにインポートします。
ステップ1
OWASP ZAP を起動し上部メニューから「ツール」→「オプション」→「Network」→「Server Certificates」を選択し、保存をクリックしてzap_root_ca.cerをダウンロードする。
保存先はデスクトップなど、わかりやすい場所がおすすめです。

ステップ2
Firefox を起動しアドレスバーに以下を入力して Enter:
about:preferences#privacy
下の方にスクロールして「証明書」セクションにある「証明書を表示」ボタンをクリック

「認証局」タブで「インポート」ボタンをクリック
ステップ1で保存した owasp_zap_root_ca.cer を選択
「この証明書を信頼してウェブサイトを識別する」にチェックを入れて OK

4.脆弱性診断の実施
OWASP ZAPによる診断は、実際の攻撃に近い挙動を含むため、必ず以下の注意事項を確認してください。
- なるべく本番環境には実行しない:診断によってサービス停止やデータ破損のリスクがあります。
- 許可された環境でのみ実行する:自社の開発環境や、診断対象として明示的に許可されたサイトに限定。
脆弱性診断の対象としてOWASP ZAPから様々な脆弱性を盛り込んだWebアプリケーション”Juice shop”のDockerイメージが公開されています。
簡単に展開できるため、脆弱性についての学習や脆弱性診断のテスト対象として便利です。
4.1 OWASP ZAPの起動
インストール完了後、スタートメニューからOWASP ZAPをクリックすると起動します。

起動するとこのような画面が表示されます。

1番上の「現在のタイムスタンプでファイル名を付けてセッションを保存」を選択して「開始」をクリックします。
4.2 プロテクトモードに変更
OWASP ZAP には、診断の影響範囲や安全性を制御するための4つの動作モードがあります。
1. セーフモード(Safe Mode)
ZAP のすべての攻撃的な機能が無効化される、最も安全なモード。
特徴:
- スキャンやアクティブスキャン、スクリプトの実行などがすべて制限される。
- 対象サイトに対して影響を与える操作は一切行われない。
- GUI や設定の確認、学習目的での利用に適している。
用途:ZAP の操作に慣れるための学習や、設定確認時に推奨。
2. プロテクトモード
ZAP が診断対象の URL に対して「安全な操作のみ」を許可するモード。
特徴:
- スキャン対象は事前に「スコープ」に追加された URL のみ。
- スキャン対象のWebページに外部リンクが含まれていてもスコープに含まれていない外部リンク先には診断を実施しない。
- スクリプトやアクティブスキャンなど、影響の大きい操作は制限される。
- 誤操作による本番環境への影響を防ぐ目的で使われる。
用途:本番環境や重要なサービスへの診断時に推奨。
3. 標準モード
ZAP のデフォルトモードで、GUI や API を通じて自由に操作できる。
- スコープ外の URL にもアクセス可能。(スキャン対象のWebページに外部リンクが含まれていた場合、リンク先も脆弱性診断を行うことができる)
- アクティブスキャンやスクリプトの実行も可能。
- 自由度が高いが、誤操作による影響もあり得る。
用途:ローカル環境や検証環境での診断。
4. アタックモード
ZAP が自動的にスキャンを開始するモード。
- スコープ内の URL にアクセスすると、自動的にアクティブスキャンが開始される。
- 手動操作なしで脆弱性診断が進む。
- スキャン対象の設定ミスがあると、意図しない診断が行われる可能性あり。
用途:CI/CD パイプラインや自動化環境での利用。
今回は誤操作によって意図しないURLに対して診断を実施してしまわないようにプロテクトモードを使用します。
設定でスキャン対象を「スコープ」に追加し、診断対象を明示的に限定することで、安全に脆弱性診断を実施できます。
左上のプルダウンメニューをクリックし、その中からプロテクトモードを選択することで変更できます。

4.3 Manual Exploreの実行
Manual Exploreをクリックし、スキャン対象のURLを入力します。

その後、[ブラウザの起動]をクリックします。(本記事ではブラウザはFirefoxを指定します。)

Firefoxが起動し、対象のサイトへアクセスします。
OWASP ZAPの左側メニューにある[サイト]を展開すると、FirefoxでアクセスしたURLが表示されます。

スキャン対象となるURLを右クリックし、[コンテキストに含める]->[新規コンテキスト]を選択します。

コンテキストとは診断対象の「範囲」と「振る舞い」を定義する設定のまとまりです。
診断対象となるURL,ログインが必要なWebサイトのアカウント情報,セッションの維持方法などを設定することができます。
ログイン処理などが不要なWebページの場合、そのまま[OK]を選択します。

4.4 脆弱性スキャンの実行
アイコンに赤丸がついた対象のWebサイトを右クリック[攻撃] -> [動的スキャン]を選択すると脆弱性スキャンが実行します。


スキャン前の確認画面が表示されます。
ここで指定する[ポリシー] とはどんな脆弱性を診断するか、といった診断ルールのセットです。
Default policy はZAP に標準で用意されているスキャンポリシーです。
XSS、SQLインジェクション、CSRF などの一般的な脆弱性診断ルールが含まれており、用途に合わせてカスタマイズも可能です。
今回はDefault policyで診断を実行するため、そのまま[スキャンを開始]をクリックします。

対象となるWebページの規模にもよりますが、動的な処理も少ないシンプルな構成のWebページであれば5分程度で診断は完了します。
検出されたアラートは[アラート]タブで確認できます。
4.5 レポートの出力
スキャンが完了した後、上部メニュー[レポート] -> [レポートを生成する]をクリックします。

HTML形式のレポートが出力されます。
レポートには以下の情報が含まれています。
- スキャン概要
スキャン対象の URL、スキャン開始・終了時刻、使用したスキャンタイプ(パッシブ/アクティブ)などの基本情報。 - 検出された脆弱性一覧
- 脆弱性のリスクレベル(High / Medium / Low / Informational)
- 脆弱性についての説明:脆弱性の技術的な背景や影響
- 推奨対応策:修正方法や防止策の提案
- アラート分類
脆弱性の種類ごとに分類され、リスクレベル別に色分けされて表示されます。
レポートには各項目へのジャンプ用リンクも作成されているため、診断結果を確認するのに便利です。

5. さいごに
今回の記事では、OWASP ZAP を使ったローカル環境での脆弱性診断の手順と注意点についてご紹介しました。セキュリティ診断は一見ハードルが高く感じられるかもしれませんが、GUI版を活用することで、初学者でも手軽に始められることがお分かりいただけたかと思います。
今後は、Azure Container Instance を活用した自動化や CI/CD パイプラインへの組み込みなど、より実践的な運用方法についてもご紹介していく予定です。ぜひ次回の記事もご覧いただければ幸いです。
最後までお読みいただき、ありがとうございました!