Owasp ZAPによる侵入テストについて

# この記事で下記の知識を得ることができます。

 - Owasp ZAPとは
 - Owasp ZAPによる侵入テストをローカル環境にて構築する方法
 - Owasp ZAPによる簡易侵入テスト

## Owasp ZAPとは
世界中で最もよく利用されるフリーウェブアプリケーションセキュリティツールです。
詳細は下記リンクに記載されています。
https://owasp.org/www-project-zap/

IPAでも取り上げています。
https://www.ipa.go.jp/about/technicalwatch/20131212.html

ほかにいろんな有償、無償の脆弱性診断ツールがございますが、拡張性、技術情報、応用情報を考えると、Owasp ZAPはおすすめの一つです。

## Owasp ZAPによる侵入テストをローカル環境にて構築する方法
### 環境
| ソフト       | インストール|
|:------------------:|:------------------:|
| Windows 10             | 
| Docker Desktop           | https://docs.docker.com/docker-for-windows/install/|
|Git bash|https://gitforwindows.org/|
|Firefox (Proxy設定用)|https://www.mozilla.org/ja/firefox/|
|Owasp ZAP 2.9.0|https://www.zaproxy.org/download/|
|Webgoat 8.0|Dokcerによるダウンロード（後述）|

### 環境構築
Docker desktopをダブルクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399736/93183903-c817-4332-8932-6e9de3a1cf57.png)

Git bashをダブルクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399736/85ace1d8-fd92-1cbd-a774-42ecaa91802c.png)

Docker hubから脆弱性アプリケーションのイメージをダウンロードします。
$ docker pull webgoat/webgoat-8.0

コンテナを起動します。
$ docker run -itd -p 127.0.0.1:10080:8080 webgoat/webgoat-8.0

下記のサイトへアクセスすれば、ログイン画面が表示されます。
http://localhost:10080/WebGoat/login

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399736/07f405a6-1a23-8eb1-9cfb-f531985cc9dd.png)

## Owasp ZAPによる簡易侵入テスト
Owasp ZAPをダブルクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399736/5fc5b238-470c-e088-4ddd-2ba87e7e5c0d.png)

開始をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399736/7249375d-7127-a4ee-6566-a435a68ae18f.png)

Manual exploreをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399736/c14dbacf-8ac3-06d8-b5e0-296cff724ba5.png)

対象となるブラウザを選択するうえ、Launch browserをクリックします。
*事前に対象ブラウザのProxy設定をOwasp ZAPプロキシと同様な設定をしてください。

http://localhost:10080/WebGoat/login　
へアクセスすると、Owasp ZAPは監視されるので、履歴やサイトなどに情報が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399736/b8aefced-48c2-e15f-8152-3e5037733823.png)

Register new userをクリックし、適宜Userを作成してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399736/aad338f3-3255-3216-0258-6fce0447fc92.png)

User登録後、Webgoatに入ります。適宜操作し、Owasp ZAPに画面遷移などを記録させます。

Owasp ZAPの画面に戻り、アラートをクリックすると、ある程度の脆弱性が検知することができました。これは静的スキャンによる検知で、あくまでも一般的なリクエストとレスポンスを見て、Owasp ZAPがその脆弱性の可能性を提示しています。

###　動的スキャン
対象となるリンクを右クリックし、コンテクストに含めるを選んで、セッションプロパティが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399736/3eddf78f-9765-a4f2-b670-aa1863258c45.png)

対象となるログインURLを入力します。
https://localhost:10080/WebGoat/

Login Request POST Dataに下記のパラメータを入力します。
username={%username%}&password={%password%}
* ログイン画面に複数のパラメータがあるとき、可変ではなく、固定にする設定も可能です。例えば、merchantName=merchant&username={%username%}&password={%password%}

Logged out responseには下記のパラメータを入力します。
\Q/WebGoat/login\E

ユーザをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399736/d801c078-965c-4f51-363e-4d42701faaa0.png)

先ほど登録したユーザを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399736/1efb14a1-30d9-48d7-a570-07362153e962.png)

その後、OKをクリックし、ダイヤログを閉じます。

右クリックし、「攻撃」ー「スパイダー」の順にクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399736/5fbe666f-2247-26b4-5b53-365ede031f1d.png)

追加されたユーザーを選択し、「スキャンを開始」をクリックすると、Webgoatサイトの操作で検知したリクエスト及びレスポンスをベースに、攻撃対象となるURLを拾い上げます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399736/37407b32-c6e9-0598-5bbb-e379cc264a37.png)

たくさんのURLが検知しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399736/5ec6f7f1-aba7-3d64-e46b-70bceebd5d83.png)

次に動的スキャンを仕掛けますが、モードを必ずプロテクトモードにしてください。そうすると、コンテキストに含める対象のサイトのみ、攻撃対象となります。そうでなければ、スパイダーにて検知した全サイトが攻撃される可能性があります。あらかじめ注意してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399736/a3c84a99-82b3-5c8b-6213-7c2b17b0d105.png)

右クリックし、「攻撃」ー「動的スキャン」
動的スキャンが完了すると、静的スキャンより多くの脆弱性を見つけることができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399736/fa8b9ec8-8c2c-21db-24d3-9ac77a07b54a.png)

###　レポートの出力
「レポート」ー「HTML」の順にクリックすると、レポートを任意の名前でダウンロードすることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399736/d81ce5b7-8588-ebc8-696c-cb4e74d413dc.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399736/ac85a303-4b16-b351-3155-873aa95265cb.png)