Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

VAddyの脆弱性診断

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

手動の脆弱性診断をパッケージにしたPlatinum+プランもあります。

ソースコード診断ではなく、ブラックボックステストと呼ばれる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ミートアップでも何回か懇親会ビールに入れました。

ichikaway
継続的セキュリティテストサービスVAddyを開発しています。 https://vaddy.net/ja/ Twitter: @cakephper
https://vaddy.net/ja/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした