OWASP ZAPの設定と使い方

以前、[脆弱性診断ツールOWASP ZAPのインストール](https://qiita.com/sangi/private/d159d1a0f28a68a4f34e)という記事を書きました。今回は、OWASP ZAPで脆弱性診断を行うために必要となる設定について書いていきたいと思います。

#ローカルプロキシ設定
OWASP ZAPにはローカルプロキシ機能があり、OWASP ZAPをローカルプロキシとして動作させることができます。
###OWASP ZAP側の設定

![設定1.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/b39f30d5-4324-ad2e-2c52-e66aa5697f5f.jpeg)

ツールからオプションを選択すると以下の画面が出てきます。

![設定2.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/39bc3e59-10ed-fbeb-0382-a8ba9779a04f.jpeg)

「Address」と「ポート」を設定します。デフォルトでは、localhost:8080となっています。既に別のプログラム等で8080ポートを使っている場合は任意のポート番号を設定してください。今回は「18080」を設定します。設定が終わったらOKボタンをクリックして設定を保存してください。

###ブラウザ側の設定


![設定3.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/e6380ddd-0adc-91c0-4985-0124431295fa.jpeg)

ブラウザを開き、オプションを選択してください。（今回は、Firefoxを使います。）

![設定4.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/9998d8c4-ea80-88c6-7ab0-2bbcc8c5ccb5.jpeg)

ネットワークプロキシの接続設定タブを押すと、設定画面が開きます。

![設定5.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/19ec7629-06f0-5a3d-7c94-824f49b05b4d.jpeg)

手動でプロキシを設定するを選択して、OWASP ZAP側で設定したアドレスとポートと同じものを設定しOKを押してください。

#Webサイトにアクセス
ローカルプロキシの設定後、自身で作成したWebサイトにローカルでアクセスしてみてください。

![設定6.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/1d8dd512-0881-f2e3-a48c-40c78d0ea923.jpeg)

![設定7.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/9cfe8f70-abdf-141c-a678-422d2ac7c91f.jpeg)

正しく設定が行われていれば、画面左側のサイトの所にOWASP ZAPのところにアクセスしたサイトのURLが追加されていると思います。これで、脆弱性診断を行うための準備が完了です。


#脆弱性診断を行う前に
###プロテクトモードに変更
OWASP ZAPには4つのモードがあります。初回起動時には、標準モードが設定されているのでプロテクトモードに変更してください。

![設定8.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/482827db-76c7-849c-5585-f78388e6cef3.jpeg)

画面左上でモードの変更が行えます。プロテクトモードにする理由は、標準モードや攻撃モードは自分の管理外のサイトへの診断を行ってしまう可能性があるためです。反対に、セーフモードだと脆弱診断の処理が一切できないモードためプロテクトモードを使用します。

また、プロテクトモードにするとクイックスタートが使用できなくなります。

![設定9.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/bcf487fc-2783-4e3d-f55d-e92e98b9b613.jpeg)
標準モード/攻撃モードの時のクイックスタート画面

![設定10.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/439d1146-097e-fc6f-5b72-77295e67ad8f.jpeg)
セーフモード/プロテクトモードの時のクイックスタート画面


![設定11.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/f73c4c60-ad28-4abe-bb4c-d785fcb7d8a4.jpeg)

もし、間違って攻撃モードを選択しても警告が出るようになっています。

#脆弱性診断を行ってみる
プロテクトモードに変更後、ぺネトレーションテストを行ってみたいと思います。サイトタブに表示されているURLを右クリックすると、攻撃があります。ですが、このままでは下記画面のようにぺネトレーションテストを行うことができません。

![設定12.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/964182ac-9146-79ec-ee1f-8b3aa7da8971.jpeg)

###コンテキストに含める
プロテクトモードでぺネトレーションテストを行うには、テスト対象のURLをコンテキストに含める必要があります。

![設定13.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/fd3e41d2-1951-17ae-ad3a-72370b943e43.jpeg)

サイトタブに表示されているURLを右クリックして、「コンテキストに含める＞New Context」を選択するとセッションプロパティ画面が出てきます。

![設定14.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/beed9845-63e1-681b-c0a8-03ca6ba1eb67.jpeg)

URL部分を選択して、OKを押すとコンテキストに含まれます。コンテキストに含まれると下記の画面の赤枠で囲ってある部分が赤い丸が表示されます

![設定15.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/5950954d-ccab-2efb-f1ed-43cb1596feb0.jpeg)
コンテキストに含める前

![設定16.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/c86c5dd1-7887-6e95-9654-8a094acfcbed.jpeg)
コンテキストに含めた後

![設定17.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/d313024f-1943-c67c-cd7d-6847e820004c.jpeg)

これで、動的スキャン等の攻撃を行うことができるようになったので、実際に自分で作ったサイトに行ってみたいと思います。

**※OWASP ZAPでぺネトレーションテスト行う際は、ローカル環境で自分で管理しているサイトにのみにしてください。インターネット上に公開されている第三者が管理しているサーバに、行うと不正アクセスと見なされる可能性があります。**

![設定18.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/d3b8e02b-5f87-f145-8eb5-ff12aedfe8d8.jpeg)

動的スキャンを行っています。スキャン完了後に脆弱性があった場合は、アラートに表示されます。

![設定19.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/bcc6c73c-9aff-c387-789a-3cea217bee8d.jpeg)

SQLインジェクションが検出されました。リスクレベルはHigh、Medium、Low の3段階で評価されます。

#セッションの保存とレポートの生成

![設定22.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/6e381d3b-6302-8501-1e60-4af8c08acdb8.jpeg)

###セッションの保存
OWASP ZAPはセッションの保存が可能です。今回行ったぺネトレーションテストのセッションを、保存したいと思います。

![設定20.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/7a171a1a-93f2-7e0f-153e-f80a0c9106f6.jpeg)

「ファイル＞永続化セッション」を選択すると以下の画面が出力されてきます。
![設定21.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/2b0e1fd7-b72e-eb38-3bea-fb5de719325f.jpeg)

ファイル名と保存場所を選択して保存ボタンを押すと保存されます。保存したセッションは、「ファイル＞セッションデータファイルを開く」で開くことができます。

###レポートの生成
OWASP ZAPはぺネトレーションテストを行った結果を、HTML形式、XML形式で生成することができます。今回はHTMLレポートを生成したいと思います。

![設定22.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/0f230384-4d33-4bd3-6273-2e99e9ead208.jpeg)

「レポート＞HTMLレポートを生成」を選択し、ファイル名と保存場所を指定すると生成することができます。
![設定23.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/71c2144c-c22d-0dbe-8572-456efa6ef0da.jpeg)

生成されたレポートは、下記画面のように出力されます。

![設定24.jpg](https://qiita-image-store.s3.amazonaws.com/0/206600/beb0798a-5d69-6f76-caee-3092e60fc802.jpeg)