10分でWebアプリの脆弱性検査ができた!VAddyでWordPressをスキャン

  • 12
    いいね
  • 0
    コメント

今日はVAddyを使ってWordPressの一部ページをスキャン(脆弱性検査)する方法を書きたいと思います。
明日は、WordPressにクロスサイトスクリプティング(XSS)の脆弱性をあえて入れて、VAddyで検査した結果を見る記事を書く予定です。

VAddyの脆弱性検査

VAddyは、継続的なWeb脆弱性検査が簡単に実現できるSaaSです。

ソースコード診断ではなく、ブラックボックステストと呼ばれる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

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

サーバの所有者確認

スクリーンショット 2016-12-14 10.34.11.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

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

プロキシ設定の変更

今回はMacとChromeを使ってクロールデータを作りたいと思います。
はじめに、Chromeの環境設定メニューを選択します。
スクリーンショット 2016-12-14 10.38.33.png

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

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

スクリーンショット 2016-12-14 10.40.51.png

ここで、「Webプロキシ(HTTP)」にチェックを入れて、Webプロキシサーバの項目に、VAddyのプロキシサーバのIP54.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

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

スクリーンショット 2016-12-14 14.18.27-2.png

クロール登録情報

スクリーンショット 2016-12-14 13.22.49.png

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

スクリーンショット 2016-12-14 13.22.58.png

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

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

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

スクリーンショット 2016-12-14 10.45.40.png

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

スキャン結果

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

スクリーンショット 2016-12-14 10.46.46.png

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

スクリーンショット 2016-12-14 10.47.50.png

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

さいごに

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

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

ビールネタ

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