eyemovic inc.

Works blog仕事の取り組み・ビジョン

2015.03.29

WPScan で WordPress を簡単診断テスト

 

“「2015年版 制作現場が使うセキュリティ、ラッシュテストツール」” で紹介したツールのうち、
前回は単一ページの性能テストとして “Apatche Bench” を紹介しました。
今回は WordPress のセキュリティ診断ツールとして “WPScan” を紹介します。

 

■概要

WordPress (ワードプレス) は、オープンソースのブログ/CMS プラットフォームです。
セマンティック Web、コードやデザインの美しさ、Web 標準、ユーザビリティなどを意識して開発されており、無料で使用することができます。
その WordPress のセキュリティを診断してくれるツールというものになります。

 

■機能

具体的には以下の通りの機能が備わっています。

・侵入を試行しない単純なスキャン
・インストールされているテーマとバージョンの取得
・インストールされているプラグインのチェック
・ログインユーザ一覧の取得
・ログインパスワード取得のブルートフォースアタック

などなど・・

 

■動作環境

本家より(2015/03/30現在)
Prerequisites:
・Ruby >= 1.9.2 – Recommended: 2.2.1
・Curl >= 7.21 – Recommended: latest – FYI the 7.29 has a segfault
・RubyGems – Recommended: latest
・Git

Ruby が 1.9.2 以上が必須。本家は 2.2.1 を推奨しています。
Curl が 7.21 以上が必須。本家は最新ば・・・現在の Curl の最新版は7.41.0なので、問題なさそうですね。
※FIY(For Your Information: ご参考までに)
RubyGem が入っていること。本家は最新版を推奨しています。
Git が入っていること。

そういえば Windows は除外しているようですね。

—————
Windows is not supported. If installed from Github update the code base with git pull. The databases are updated with wpscan.rb –update.
—————

 

■ruby ライブラリのインストール

WPScan は Ruby で動かします。
試しに
ruby wpscan.rb -u http://www.example.com/

と入力すると

Could not find gem ‘rspec-its (>= 0) ruby' in the gems available on this machine.
Run bundle install to install missing gems.

と何度かエラーが表示されて実行できません。
一例ですが、’rspec-its’ という Ruby のライブラリが見つかりませんでした。
というエラーになります。
(>= 0) はバージョン 0 以上のものが必要、(>= 3.0)は 3.0 以上のライブラリが必要というエラーになります。
そんな時は下記 url から必要なライブラリをインストールしてください。
https://rubygems.org/gems/rspec-its/versions/1.2.0

screen_shot

実行例
sudo gem install rspec-its

こんな感じでインストールしてみてください。

 

■実行例

・侵入を試行しない単純なスキャン

ruby wpscan.rb -u http://www.example.com

というような実行結果が得られました。

[!]と表示されている行ですが、何かしらの警告サインです。

・[!] The WordPress ‘http://www.example.com/readme.html’ file exists exposing a version number
今回の場合、readme.html ファイルに WordPress のバージョンが記載されているための警告と思いますので
readme ファイルがいらない方は削除しましょう。

・[!] Full Path Disclosure (FPD) in: ‘http://www.example.com/wp-includes/rss-functions.php’
アクセスしてみると、エラーが表示されました。
Fatal error: Call to undefined function _deprecated_file() in wp-includes/rss-functions.php on line 8

.htaccess を作成し、次のコードを加えましょう。
php_flag display_errors off

ちなみに、WordPress がインストールされていないサイトで試すと

ということでエラーが返ってきました。

とりあえず、WordPress はインストールされているか、されていないかの判断かこちらでわかるかと思います。

 

・インストールされているテーマとバージョンの取得
ruby wpscan.rb -u www.example.com -e at

というように、3 つのテーマが見つかりました。

これは WordPress で提供している標準のテーマのことであり、それぞれのテーマのバージョンがわかりますね。

[+]参考: Name: twentyfifteen – v1.0

Twenty_Fifteen_ver1.0

[+]参考: Name: twentyfourteen – v1.3

Twenty_Thirteen_ver1.4

[+]参考: Name: twentythirteen – v1.4

Twenty_Fourteen_ver1.3

 

・インストールされているプラグインのチェック
ruby wpscan.rb -u http://www.example.com/ -e vp

という結果が得られました。
これは脆弱性が報告されているプラグインを検索します。

今回は contact-form-7 - v3.6 というプラグインが脆弱性の報告があり、バージョン 3.7.2 で修正されています。
なので、管理画面よりプラグインのバージョンアップをお勧めします。

 

・ログインユーザ一覧の取得

ruby wpscan.rb -u http://www.example.com -e u

というように、ログインが可能な ユーザ名が取得できますね。

 

・ログインパスワード取得のブルートフォースアタック
ruby wpscan.rb -u http://www.example.com/ -w pass.txt -U test

今回は test ユーザに対して、下記のパスワードリストを使用してパスワードの取得を試みています。
今回は見事に hogehoge が一致し、test ユーザのパスワードを取得できました。

もちろん、取得できなかった場合は

のように、パスワードの取得はできませんでした。

 

■まとめ

今回は WPScan を使用して、WordPress のセキュリティ診断してくれるツールを紹介しました。

いかがでしたでしょうか?
特にプラグインのチェック、ログインユーザのパスワード取得に関しては、定期的に試してみるのもいいかもしれません。

ぜひ、WordPress を活用されている方がいれば試してみては。

※このツールを行う際に、サイト運営者本人の許可・承諾なしに実行しないようにしてください。また、悪用も厳禁です。

 

愛媛県松山市でWeb開発一筋15年、700サイト以上の構築実績!

Webサイト制作・システム開発・スマホアプリ開発・組込ソフトウェア開発ならアイムービックにお任せ下さい。