OWASP Zed Attack Proxy (ZAP)で脆弱性検査する方法
※当サイトにはプロモーションが含まれています。
公開日:
更新日:
OWASP Zed Attack Proxy (ZAP)の使い方の例をいくつかメモします。各操作の細かい説明は別の記事で書くかもしれません。
※ 本記事で使用するOWASP ZAPのバージョンは、2.2.2です。
使い方1:ローカル・プロキシとしてブラウザの通信内容をチェックする
OWASP ZAPをローカルのプロキシとして使用し、ブラウザの通信をOWASP ZAP経由で行います。その後、記録された通信内容を確認する、といった使い方です。
- OWASP ZAPを起動します。
- ブラウザを起動します。
- ブラウザのプロキシ設定で、OWASP ZAPの動作するホストとポート番号をセットします。
- ブラウザ上で診断の対象となるWebサイトにアクセスします。
- 目的のページで目的の動作を行います。
- OWASP ZAPの[サイト]タブで、目的のリクエスト(URL)をクリックし、[リクエスト]タブや[レスポンス]タブで通信の中身を確認します。
使い方2:簡易的な自動脆弱性検査を行う
「Quick Start」という機能を使って簡単な操作で自動脆弱性検査を行います。これは IPAテクニカルウォッチ 「ウェブサイトにおける脆弱性検査手法の紹介」の公開 でも紹介されていた手順です。
- OWASP ZAPを起動します。
- ブラウザを起動します。
- ブラウザでプロキシ設定する必要はありません。
- OWASP ZAPの[ポリシー]メニュー->[スキャンポリシー]を選択します。
- ここで検査する項目を選択します。
- 関連記事
- [Quick Start]タブから[URL to attack]の入力欄に検査対象のURLを入力して [攻撃]ボタンをクリックします。
- まずスパイダー検索が行われ、それから Active Scan(破壊的スキャン) が行われます。
- 終了したら[アラート]タブで検出された脆弱性を確認します。
使い方3:より細かい自動脆弱性検査を行う
- OWASP ZAPを起動します。
- 画面左上で [Standard mode]を選択します。
- ブラウザを起動します。
- ブラウザのプロキシ設定でZAPを使うようにしておきます。
- 検知させる脆弱性を設定します。
- OWASP ZAPのメニュー[ポリシー]->[スキャンポリシー]を選択します。
- これは Passive Scan と Active Scan で検知させたい脆弱性を設定します。
- 関連記事
- OWASP ZAPのメニュー[ポリシー]->[スキャンポリシー]を選択します。
- セッションクッキーの名前を登録します。
- [設定] -> [Http Sessions] で、セッションクッキーの名前を登録します。(もし分かっているのであれば)
- CSRF対策トークンの名前を登録します。
- [設定] -> [Anti CSRF トークン] で、CSRF対策トークンの名前を追加します。(もし分かっているのであれば)
- CSRF対策トークンが使用されているページに手動アクセスする前に設定しておく必要があります。
- [設定] -> [動的スキャン] で [アンチCSRFトークン利用] にチェックを入れます。
- 目的となるWebアプリケーションに手動でアクセスします。
- できるだけいろいろなページにアクセスします。
- どんなページがあるのかをZAPに記録させるためにもこの作業を行ったほうがよいです。
- この間、Passive Scanが行われ、見つかった脆弱性は[アラート]タブに表示されます。
- CSRF対策トークンが使用されているページにもアクセスしておきます。
- そのサイトが複数の役割のユーザからアクセスされることを想定している場合は、それぞれのユーザでサイトにアクセスします。その際、役割毎にセッションを保存しておきます。
- [サイト]タブ内の目的とするリクエスト(URL)を右クリックして、検査対象となるサイトURL(正規表現)をコンテキストに設定します。(これ以降の操作でコンテキストを使う場合に必要です)
- コンテキストについてはこちらを参照して下さい。→ OWASP ZAPのコンテキスト、スコープ、URL正規表現について
- 認証のあるWebアプリケーションであれば自動ログインの設定を行います。
- [サイト]タブ内で、ログインに当たるリクエストを右クリックし、[Flag as Context] —> [1: Login request] を選択します。
- ログイン後のレスポンスHTML内で、ログイン成功を示す箇所を選択状態にして右クリック —> [Flag as Context] —> [1: Logged in indicator] を選択します(ログイン状態の時のみ表示されるHTMLの部分)。
- もしくは、[1: Logged out indicator] を設定しておきます。(ログインしていない状態の時のみ表示されるHTMLの部分部分)
- どちらか1つで構いません
- [レスポンス]タブ内で該当部分を選択して右クリックすると登録できます。
- ※ この作業は Session Properties ウィンドウ内の [Session] -> [Contexts] -> [1] -> [1: Authentication] を設定していることになります。
- スパイダー検索を行います。
- スパイダー検索では、手動では見付からなかったページを自動で探し、同時にPassive Scan(非破壊的スキャン)も行われます。
- [サイト]タブ内で対象となるリクエスト(URL)を右クリックして、[攻撃] -> [Spider XXX] を選びます。
- スパイダー検索を実行する対象によって以下の選択肢(メニュー)があるので、この中から1つ選択して実行します。
- Spider Context
- Spider all in Scope
- Spider site
- Spider Subtree
- Spider URL
- スパイダー検索を実行する対象によって以下の選択肢(メニュー)があるので、この中から1つ選択して実行します。
- この間、Passive Scan が行われ、見つかった脆弱性は[アラート]タブに表示されます。
- 更に詳しくURLを検出したい場合は Forced Browse (強制ブラウズ) 機能を使います。
- 多くのディレクトリ名が記述されたファイルをあらかじめ指定しておき、それを基にその各ディレクトリに順番にアクセスして存在チェックを行います。
- 実行前に、オプション画面の[Forced Browse]タブ内で default file (デフォルトのディレクトリ一覧ファイル)を指定する必要があります。
- [Forced Browse]タブ内でも選択できます。
- [サイト]タブ内の目的となるリクエスト(URL)を右クリックして、[Attack] - [Forced Browse XXX]を選択します。
- Forced Browse を実行する対象によって以下の選択肢(メニュー)があるので、この中から1つ選択して実行します。
- Forced Browse site
- Forced Browse directory
- Forced Browse directory (and children)
- Forced Browse を実行する対象によって以下の選択肢(メニュー)があるので、この中から1つ選択して実行します。
- 見つかった脆弱性を[アラート]タブで確認します。
- Active Scan(破壊的スキャン)します。
- [サイト]タブ内の目的となるリクエスト(URL)を右クリックして、[Attack] - [Active Scanning XXX] を選択します。
- Active Scanを実行する対象によって以下の選択肢(メニュー)があるので、この中から1つ選択して実行します。
- Active Scan all in Scope
- Active Scan site
- Active Scan subtree
- Active Scan single URL
- Active Scanを実行する対象によって以下の選択肢(メニュー)があるので、この中から1つ選択して実行します。
- この間に見つかった脆弱性は「アラート」タブに表示されます。
- [サイト]タブ内の目的となるリクエスト(URL)を右クリックして、[Attack] - [Active Scanning XXX] を選択します。
- 見つかった脆弱性を[アラート]タブで確認します。
- 見つかった脆弱性が本当に存在するのか調査します。
- 手動で脆弱性を調査します。
- 手動での調査では、ZAPをローカル・プロキシとして使用して通信内容をチェック・編集したり、その他の機能を活用することもできます。
注意点
- 自分の管理下にないホストには脆弱性検査を実行しないで下さい。
- 検知された脆弱性が誤検知である可能性もあるため、[アラート]タブ内の情報またはレポートの内容を基にして実際に手動でウェブサイトにアクセスし、脆弱性の存在を確認して下さい。
