10分でWebアプリの脆弱性診断ができた！VAddyでWordPressをスキャン

今日はVAddyを使ってWordPressの一部ページを脆弱性診断する方法を書きたいと思います。
明日は、[WordPressにクロスサイトスクリプティング（XSS)の脆弱性をあえて入れて、VAddyで検査した結果を見る記事](http://qiita.com/ichikaway/items/2506e7f832a01a4fa14d)を書く予定です。

## VAddyの脆弱性診断

[VAddyは、継続的なWeb脆弱性診断が簡単に実現できるSaaSです。](https://vaddy.net/ja)

[手動の脆弱性診断をパッケージにしたPlatinum+プラン](https://vaddy.net/ja/plan_platinum.html)もあります。

ソースコード診断ではなく、ブラックボックステストと呼ばれるWebサーバに検査用のHTTPリクエストを実際に送って検査する方式。
現在の検査項目は下記の5つです。

- SQLインジェクション
- XSS(クロスサイトスクリプティング）
- リモートファイルインクルージョン
- ディレクトリートラバーサル
- コマンドインジェクション

## VAddyの検査までの3つのステップ

VAddyを使い始めるのは非常に簡単で、下記の3つのステップを行うだけです。

- Step1: テスト対象サーバ名を登録 (2分)
- Step2: テスト対象のURL、パラメータを登録（クロール） (7分)
- Step3: スキャン実行ボタンを押して結果を閲覧 (1分)

合計10分程度の作業です。
なお、WordPressはインストール済みという前提です。

VAddyの検査を実行するまでに最低限必要なものは、ブラウザとテスト対象サーバです。
テスト対象サーバはインターネット経由でアクセスできる必要があります。（もうすぐプライベートネット版VAddyをリリース予定ですので、イントラネット内のサーバのスキャンも可能になります）

## Step1 テスト対象サーバ名を登録

まずはテスト対象のサーバ名(FQDN)を登録します。登録後はそのサーバの所有者を確認するためにVerificationファイルを設置します。

### サーバ名の登録
![スクリーンショット 2016-12-14 10.33.38.png](https://qiita-image-store.s3.amazonaws.com/0/61278/bed59ff4-51e4-ba5f-6e4b-728c419c908c.png)

まずは、ログイン後画面にあるAdd Serverボタンを押してサーバ名を登録します。
今回は、 `wp-demo.vaddy.net` というFQDNを使います。
VAddyの検査はSSLにも対応してますし、ポート番号が80, 443以外も対応しています。

### サーバの所有者確認
![スクリーンショット 2016-12-14 10.34.11.png](https://qiita-image-store.s3.amazonaws.com/0/61278/66c2b4d0-4156-aeab-1726-33f2a2459b11.png)

サーバ名の登録が終わるとこの画面がでます。所有者確認を行うために検査対象サーバのWebrootに、この画面で表示されているVerificationファイルを設置します。
具体的には検査対象のサーバが、wp-demo.vaddy.netですので`http://wp-demo.vaddy.net/vaddy-xxxxx.html`でアクセスできるようにします。

画面の上部の「Verificationファイルのダウンロードはこちら」のリンクをクリックすると、Verificationのhtmlファイルがダウンロードできるページが開きます。そのページにcurlコマンドの場合も載っているため、コピーしてサーバ上でcurlコマンドをそのまま実行していただく形でも大丈夫です。

最後に、`Verify`ボタンを押せば完了です。

## Step2 テスト対象のURL、パラメータを登録（クロール） 

次にクロールを行います。検査対象のURLとPOST、GETなどのパラメータを登録します。
正しい画面遷移やフォームの入力項目のデータをVAddyに登録し、その情報を使って脆弱性検査を行います。ですのでクロールはアプリケーションの通常の操作をするのみです。

![スクリーンショット 2016-12-14 10.37.31.png](https://qiita-image-store.s3.amazonaws.com/0/61278/d884c467-b973-e037-46e4-7b6828e5a091.png)

クロールの画面では、5つのステップでクロールの操作説明が表示されます。
まずは、ブラウザのプロキシ設定を変更し、自分のサイト（今回はWordPress)にアクセスして操作、最後にプロキシ設定を元に戻すというフローです。


### プロキシ設定の変更

今回はMacとChromeを使ってクロールデータを作りたいと思います。
はじめに、Chromeの環境設定メニューを選択します。
![スクリーンショット 2016-12-14 10.38.33.png](https://qiita-image-store.s3.amazonaws.com/0/61278/7eb3fb8f-6f6e-1527-2c75-3e383361e8d7.png)

chromeの設定画面が出たら、一番したの「詳細設定を表示」をクリックします。
さらに設定項目が出たところに、下記画面のように「ネットワーク」の項目の「プロキシ設定の変更」ボタンを押します。


chromeの場合は、Macのネットワーク設定でプロキシの設定を行うため、次のような画面が開きます。

![スクリーンショット 2016-12-14 10.40.51.png](https://qiita-image-store.s3.amazonaws.com/0/61278/caa7af95-7574-97f6-c0f2-1153da04fadb.png)

ここで、「Webプロキシ(HTTP)」にチェックを入れて、Webプロキシサーバの項目に、VAddyのプロキシサーバのIP`54.92.84.100`とポート番号`10080`を入れます。
もしSSLのサイトの場合は、「保護されたWebプロキシ(HTTPS)」の方にもチェックを入れて同じようにIPとポートの情報を入れます。

さて、okを押して、適用ボタンを押すとMacからのすべてのHTTPリクエストはVAddyプロキシサーバを経由するようになります。ただ、登録したサーバ`wp-demo.vaddy.net`以外の通信はすべて遮断するようになっています。
プロキシ変更中もアクセスしたいサイトがあれば、「プロキシ設定を使用しないホストとドメイン」の箇所に記載しておきます。console.vaddy.netはクロール中でも閲覧したいため今回、書いておきました。

### クロール
クロールデータの登録は、クロール開始URLにアクセスし、その後WordPressのサイトを操作、最後にクロール終了URLにアクセスして登録完了となります。

クロール開始URL、終了URLはVAddyのクロール管理画面の説明の箇所に書いてありますので、そのままURLをクリックすれば大丈夫です。
![crawl_start.png](https://qiita-image-store.s3.amazonaws.com/0/61278/7f9160aa-c099-5bc5-f626-bf3d48bbbc3e.png)

今回は、WordPressのTOPページにアクセスし、下の図のようにWordPressの検索フォームに文字を入れて検索結果を表示するところまでをクロールしました。

![スクリーンショット 2016-12-14 14.18.27-2.png](https://qiita-image-store.s3.amazonaws.com/0/61278/4bfb59fc-7abc-90d8-e51b-d306a70a8fa7.png)




### クロール登録情報
![スクリーンショット 2016-12-14 13.22.49.png](https://qiita-image-store.s3.amazonaws.com/0/61278/734f44db-2550-fad9-ab29-27d5097c33f6.png)

どんなURLをクロールしたかは、クロール管理画面のクロール一覧情報にある「View」ボタンを押すと確認できます。

![スクリーンショット 2016-12-14 13.22.58.png](https://qiita-image-store.s3.amazonaws.com/0/61278/9e6d5714-5ea8-50bf-6244-11ca544537ed.png)

TOPページと検索ページへのアクセスURLが表示されていますね。


##  Step3: スキャン実行ボタンを押して結果を閲覧

さて、ここまでで作業は終わりです。あとはボタンを押して結果を見るのみとなります。

![スクリーンショット 2016-12-14 10.45.40.png](https://qiita-image-store.s3.amazonaws.com/0/61278/ece17301-d9d4-8ad4-5c65-d3c11f14deb9.png)

実行予定の検査項目が表示されます。「Run VAddy Scan」ボタンを押すと検査開始です。
これで20秒ほど待てば結果が返ってきます。
（クロールしたURLやパラメータ数が多い場合はもっと時間がかかる場合があります）


###スキャン結果

WordPressの最新版に対してスキャンし、WordPressの検索フォームには脆弱性がないことが確認できました。

![スクリーンショット 2016-12-14 10.46.46.png](https://qiita-image-store.s3.amazonaws.com/0/61278/74b844cc-7ea2-1040-bc5c-4c0519dcb0e2.png)


もし脆弱性があった場合はこのような画面が表示され、脆弱性のあったURLとパラメータ名が表示されます。

![スクリーンショット 2016-12-14 10.47.50.png](https://qiita-image-store.s3.amazonaws.com/0/61278/f1b7b4fc-d423-2b63-7c2f-35d7b8d0b445.png)


明日の記事では、WordPressに"あえて"XSSの脆弱性を入れて、同じクロールデータを使って再検査して、XSSの脆弱性が見つかることを確認したいと思います。


## さいごに

VAddyの操作を画面キャプチャつきで紹介しました。
無料で手軽に始められるので是非お試しください。
https://vaddy.net/ja

なお、今回キャプチャした画面の環境は私のローカル環境で動かしているVAddyです。URLやVerificationファイルは架空のものです。

### ビールネタ
ハワイのコナビールが日本でも手軽に買えるようになってきました。Big Waveはゴールデンエールですが香りが強くて好きです。もちろんFire Rockペールエールも美味しいです。コンビニやスーパーで見かけたらぜひ試してみてください。
あと、あまり売ってないのですがコナビールの　Castaway IPAが美味しいです。たまにカクヤスで入荷してたりするので、VAddyミートアップでも何回か懇親会ビールに入れました。