ZAP(Zed Attack Proxy)

この記事をシェア

注意事項

他者の端末に対して本ツールを無許可で使用する行為は法律に抵触する可能性があります。管理者から許可を得た端末や自身の端末に対して使用してください。

概要

ZAP(Zed Attack Proxy)は、Webアプリケーションに対するオープンソースの脆弱性診断ツールです。WebブラウザーとWebアプリケーション間のプロキシとして実行され、クロスサイトスクリプティングSQLインジェクションなど、さまざまな脆弱性の有無を確認することができます(参考情報:確認できる脆弱性の一覧)。

ZAPを実行すると、3つのウィンドウが表示されます。

ZAPの実行画面

ZAPの実行画面

Tree Window:
コンテキスト(診断対象のURLや認証情報などの設定をまとめたもの)の一覧やWebアプリケーションのサイトツリーを表示するウィンドウ。

Information Window:
選択したウィンドウ上部の【タブ】に応じて、ZAPを介したパケットの一覧【履歴タブ】、動的スキャンのログ【動的スキャンタブ】、検出された脆弱性【アラートタブ】など、さまざまな情報を表示するウィンドウ。

Workspace Window:
Tree WindowのサイトツリーやInformation Windowのパケットなどを選択した際に、リクエストやレスポンスの内容を表示するウィンドウ。

脆弱性診断における利用方法

本章では、Rapid7社が公開している脆弱性が仕込まれた仮想マシン「Metasploitable3」に対して、ZAPを用いた脆弱性診断を実施します。どのポートでWebアプリケーションが実行されているかを確認するには、事前にNmapなどのポートスキャナーを用いた調査が必要です。別途調査した結果、80番ポートで実行されていることがわかりました。
以降では下記の5ステップにより、80番ポートで実行されているWebアプリケーションに存在する脆弱性を特定していきます。

  • 診断対象のWebアプリケーションにアクセス
  • 診断スコープの設定
  • クローリング
  • 動的スキャンによる脆弱性診断
  • 発見された脆弱性の検証

詳細な手順

1.診断対象のWebアプリケーションにアクセス
ZAPを介して、Webアプリケーションにアクセスします。さまざまな方法がありますが、ZAPからWebブラウザーを実行する方法が便利です。下図の赤枠を選択することでWebブラウザー(Firefox)が実行されます。そのアドレスバーにWebアプリケーションのURLを入力し、アクセスします。

ZAPを介してWebアプリケーションにアクセスする方法

ZAPを介してWebアプリケーションにアクセスする方法

ZAPを介してWebアプリケーションにアクセスできている場合、Tree Windowにサイトツリー、Information Window【履歴タブ】に通信ログが表示されます。

取得した通信ログとサイトツリー

取得した通信ログとサイトツリー

2.診断スコープの設定
コンテキストに診断対象のURLを登録します。Tree Windowのサイトツリーから診断対象とするURLを右クリックした後、「コンテキストに含める」->「新規コンテキスト」を選択することで登録が完了します。
登録されたURLは、自動的に表示されるセッション・プロパティのウィンドウで確認ができます(正規表現で記述されます。)。また、URLの追加・変更・削除が本ウィンドウで設定ができるので、必要に応じて編集をします。

診断対象とするURLの登録方法

診断対象とするURLの登録方法

3.クローリング
スコープ内に存在するWebページを列挙するため、スパイダー機能を用いてクローリングします。
前工程の操作により、Tree Windowに設定したコンテキストが表示されます。そのコンテキストを右クリックした後に、「スパイダー」を選択し、表示されたスパイダー検索ウィンドウの「スキャンを開始」を選択します。

クローリング(スパイダー機能)の実施方法

クローリング(スパイダー機能)の実施方法

スパイダーによって列挙されたURIは、Information Window【スパイダー検索タブ】で閲覧できます。本検証では2,918個のURIが発見されました。

発見されたURI

発見されたURI

4.動的スキャンによる脆弱性診断
クローリングしたURIに対して脆弱性の有無を確認するため、動的スキャンを実施します。
動的スキャンを実施することで、脆弱性の悪用を試みる通信が発生します。スコープ外に通信が発生することを防がなければならないため、モードを設定します。モードには、セーフモード・プロテクトモード・標準モード・攻撃モードの4種類があります。標準モードと攻撃モードはスコープ外に通信を発生させる可能性があります。またセーフモードでは動的スキャンを実施することができません。そのため、プロテクトモードに設定します(下図内のA)。

続いて、Tree Windowに表示されたコンテキストを右クリックした後に、動的スキャンを選択し(下図内のB)、表示された動的スキャンウィンドウの「スキャンを開始」を選択します。

モードの設定と脆弱性の有無を確認する(動的スキャン)方法

モードの設定と脆弱性の有無を確認する(動的スキャン)方法

動的スキャンは時間を要することが多く、本検証では約11時間要しました。進捗状況は、下図の赤枠を選択することで確認できます。

動的スキャンの進捗確認方法

動的スキャンの進捗確認方法

ZAPによって発見された脆弱性は、Information Window【アラートタブ】で閲覧できます。

発見された脆弱性の一覧

発見された脆弱性の一覧

5.発見された脆弱性の検証
発見された脆弱性を1つずつ確認し、誤検知が含まれていないかを確認していきます。
Information Window【アラートタブ】内のURLを選択すること(下図内の赤枠)で、さまざまな情報を確認できます。そして、下図内の黄色で示した、脆弱性の種類、脆弱性が確認されたURL、どのような通信を発生させることで脆弱性を発見したかなどを確認します。

発見された脆弱性の詳細を確認する方法

発見された脆弱性の詳細を確認する方法

実際に同様の通信を発生させた結果、Userを入力する部分にクロスサイトスクリプティングの脆弱性があることを確認できました。

発見した脆弱性の検証

発見した脆弱性の検証

この記事をシェア
サイバーセキュリティ
情報局の最新情報を
チェック!