注意事項
他者の端末に対して本ツールを無許可で使用する行為は法律に抵触する可能性があります。管理者から許可を得た端末や自身の端末に対して使用してください。
概要
ZAP(Zed Attack Proxy)は、Webアプリケーションに対するオープンソースの脆弱性診断ツールです。WebブラウザーとWebアプリケーション間のプロキシとして実行され、クロスサイトスクリプティングやSQLインジェクションなど、さまざまな脆弱性の有無を確認することができます(参考情報:確認できる脆弱性の一覧)。
ZAPを実行すると、3つのウィンドウが表示されます。
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アプリケーションにアクセスできている場合、Tree Windowにサイトツリー、Information Window【履歴タブ】に通信ログが表示されます。
2.診断スコープの設定
コンテキストに診断対象のURLを登録します。Tree Windowのサイトツリーから診断対象とするURLを右クリックした後、「コンテキストに含める」->「新規コンテキスト」を選択することで登録が完了します。
登録されたURLは、自動的に表示されるセッション・プロパティのウィンドウで確認ができます(正規表現で記述されます。)。また、URLの追加・変更・削除が本ウィンドウで設定ができるので、必要に応じて編集をします。
3.クローリング
スコープ内に存在するWebページを列挙するため、スパイダー機能を用いてクローリングします。
前工程の操作により、Tree Windowに設定したコンテキストが表示されます。そのコンテキストを右クリックした後に、「スパイダー」を選択し、表示されたスパイダー検索ウィンドウの「スキャンを開始」を選択します。
スパイダーによって列挙されたURIは、Information Window【スパイダー検索タブ】で閲覧できます。本検証では2,918個のURIが発見されました。
4.動的スキャンによる脆弱性診断
クローリングしたURIに対して脆弱性の有無を確認するため、動的スキャンを実施します。
動的スキャンを実施することで、脆弱性の悪用を試みる通信が発生します。スコープ外に通信が発生することを防がなければならないため、モードを設定します。モードには、セーフモード・プロテクトモード・標準モード・攻撃モードの4種類があります。標準モードと攻撃モードはスコープ外に通信を発生させる可能性があります。またセーフモードでは動的スキャンを実施することができません。そのため、プロテクトモードに設定します(下図内のA)。
続いて、Tree Windowに表示されたコンテキストを右クリックした後に、動的スキャンを選択し(下図内のB)、表示された動的スキャンウィンドウの「スキャンを開始」を選択します。
動的スキャンは時間を要することが多く、本検証では約11時間要しました。進捗状況は、下図の赤枠を選択することで確認できます。
ZAPによって発見された脆弱性は、Information Window【アラートタブ】で閲覧できます。
5.発見された脆弱性の検証
発見された脆弱性を1つずつ確認し、誤検知が含まれていないかを確認していきます。
Information Window【アラートタブ】内のURLを選択すること(下図内の赤枠)で、さまざまな情報を確認できます。そして、下図内の黄色で示した、脆弱性の種類、脆弱性が確認されたURL、どのような通信を発生させることで脆弱性を発見したかなどを確認します。
実際に同様の通信を発生させた結果、Userを入力する部分にクロスサイトスクリプティングの脆弱性があることを確認できました。