WordPress のプラグイン「Exploit Scanner」使ってみた

「WordPressとセキュリティ」に参加しました。

第42回 WordBench 大阪 「WordPressとセキュリティ」
https://wbosaka.doorkeeper.jp/events/25972

セッション詳細は WordBench 大阪速報でいつもお世話になっております、
@kimipooh 様のブログでご紹介されてます。

Knowledge for WordPress: 第42回 WordBench大阪「WordPressとセキュリティ」に参加して #wbosaka
http://kitaney-wordpress.blogspot.jp/2015/06/42-wordbenchwordpress-wbosaka.html


WordPress のプラグイン「Exploit Scanner」

@kimipooh 様がご紹介されていた WordPress のプラグイン、
「Exploit Scanner」が便利そうだけど、使い方を忘れそうな自信しかないのでメモです。

WordPress › Exploit Scanner « WordPress Plugins
https://wordpress.org/plugins/exploit-scanner/

プラグイン説明

http://wpdocs.osdn.jp/プラグイン:WordPress_Exploit_Scanner より引用

もしサイトが最近攻撃されたと思われる場合、すべての問題点をしっかり修正した上で、WordPress Exploit Scanner(WordPress 脆弱性スキャナー)を利用されるのをお勧めします。このプラグインはサイト上のファイル、データベースの投稿・コメントテーブルをスキャンし、不審なものを発見してくれます。また、有効化しているプラグイン中におかしなファイル名のものがないかもチェックします。このプラグインについては、こちらで詳しく読むことができます。

要はコアファイルに変なコードが記述されたりしていないか確認してくれるプラグインです。
プラグインのインストール自体は通常通り、「ダッシュボード > プラグイン > 新規追加」からインストールできます。

しかし、プラグインを実行するには確認したい WordPress サイトが現在使用している WordPress コアのバージョン用の確認ファイル(以下、ハッシュファイル)が必要となり、必要であれば自力で作成、もしくは以下 Github でクローンしたファイルのアップロードなどの方法がございますが、Github に置いてあるファイルの場合、後述しますが日本語版のコアファイルに対応していません。

philipjohn/exploit-scanner-hashes
https://github.com/philipjohn/exploit-scanner-hashes

最新のハッシュファイル(英語版)、日本語に対応したハッシュファイルを作成するには、
自力でハッシュファイルを作成するしかないので、以下よりその手順です。

手順

2015年6月15日時点での最新バージョンの日本語版(WordPress 4.2.2-ja)で作成・確認した手順となります。

ちょっと強引な気がしますが Wocker(http://wckr.github.io/) 内で PHP を実行して日本語ハッシュ用のファイルを生成してみます。
※必ず Wocker でやらなきゃダメってことではないです。ちょっと Wocker 内で PHP の実行方法教えてもらったので、そのメモも兼ねて。

  1. Wocker が入ってるディレクトリで vagrant up して vagrant ssh
  2. コンテナ作成
  3. コンテナ起動後、プラグイン「Exploit Scanner」のインストール
  4. 「Exploit Scanner」プラグイン内のファイル編集(日本語版用ハッシュファイル作成の場合)
  5. wocker exec コマンドで root に入る
  6. 編集したファイルの実行(ハッシュファイル作成)
  7. 「Exploit Scanner」プラグインの実行

1. Wocker が入ってるディレクトリで vagrant up して vagrant ssh

ここでは割愛。

以下ページに Wocker についていろいろまとめてくださってます。

WordPress – wocker 使ってみた感レポ – Qiita
http://qiita.com/mikakane/items/1bbabe4d27bebf28fd00

2. コンテナ作成

※以下コマンドで作成したコンテナ名は「CONTAINER」です。

core@wocker ~ $ wocker run --name CONTAINER

コンテナ確認

core@wocker ~ $ wocker ps -a

動いてなかったら wocker start

core@wocker ~ $ wocker start CONTAINER

3. コンテナ起動後、プラグイン「Exploit Scanner」のインストール

Wocker さんのデフォルトURL(http://wocker.dev/wp-login.php)にアクセスして、ログイン。
Settings > General > Site Language から、
言語を「日本語」に変更。

ダッシュボード > プラグイン > 新規追加から、
「Exploit Scanner」と「WP Multibyte Patch」も一応、検索後インストール、有効化。

4. 「Exploit Scanner」プラグイン内のファイル編集(日本語版用ハッシュファイル作成の場合)

※英語版の場合はこの項目をスルーしてください。

「Exploit Scanner」プラグインディレクトリ内に格納されている、
ハッシュジェネレータ(hashes-generator.php)を使用し、ハッシュファイルを作成します。

日本語版のコアファイルで使う場合はちょっと作業が必要

日本語版のコアファイル(ttps://ja.wordpress.org/wordpress-X.X.X-ja.zip)を使用している場合、
日本語版用のハッシュファイルを作成しなければなりません。

最新版の日本語版 WordPress コアであれば、
日本語版用のハッシュファイルを作成しなくてもプラグインの動作に大きな問題がないようですが、今回はもちろん作成します。

WordPress › フォーラム » WordPress 日本語版用 Exploit Scanner ハッシュファイル
http://ja.forums.wordpress.org/topic/2743

日本語版用のハッシュファイルを作成する場合は hashes-generator.php をエディターで編集。
以下の二行を変更してください。

$latest = 'http://wordpress.org/latest.zip';
$file = 'latest.zip';

日本語版の最新ファイルのダウンロード URL、ファイル名に変更。

$latest = 'https://ja.wordpress.org/wordpress-4.2.2-ja.zip';
$file = 'wordpress-4.2.2-ja.zip';

5. wocker exec コマンドで root に入る

Wocker Commands | Wocker
http://wckr.github.io/commands/#h3-8

exec (Docker alias) コマンドを参考に。

core@wocker ~ $ wocker exec -it CONTAINER bash

6. 編集したファイルの実行(ハッシュファイル作成)

「Exploit Scanner」プラグインディレクトリに移動

root@*****:/var/www/wordpress# cd wp-content/plugins/exploit-scanner

php の実行

root@*****:/var/www/wordpress/wp-content/plugins/exploit-scanner# php hashes-generator.php > hashes-4.2.2.php

ハッシュ値の確認

root@*****:/var/www/wordpress/wp-content/plugins/exploit-scanner# md5sum hashes-4.2.2.php

上記コマンドを実行後、返ってくる値とブラウザからプラグインの設定ページ、
ダッシュボード > ツール > Exploit Scanner ページ下部に表示されている値と見比べる。

返ってきた値

XXXXXXXXXX  hashes-4.2.2.php

Exploit Scanner ページ下部に表示される値と同じならOK

MD5 of hashes-4.2.2.php: XXXXXXXXXX

7. 「Exploit Scanner」プラグインの実行

ダッシュボード > ツール > Exploit Scanner ページで「Run the Scan」ボタンをクリック。
しばらくすると「Results」が表示されます。
お疲れ様でした。

公開されているサイトに使用する場合は、

  • 「Exploit Scanner」プラグインインストール
  • プラグインディレクトリに作成した hashes-4.2.2.php をアップロード
  • プラグインの実行

で OK でした。

Exploit Scanner プラグイン実行後に返ってきた結果について

結果をざっと見てますと、
CSS ファイルに display:none 書かれてるよとか、
このファイルに iframe 使ってるよとか、
sprintf で文字列ゴニョゴニョしてるよとかいろいろと教えてくれます。

今回は Wocker さんで新規の WordPress サイトを立ち上げ直後にチェックしたにも関わらず、
たくさんの結果が表示されました。

全て「修正しなければならない」「いますぐ確認しなければならない」ということではなくもちろん必要な記述も含まれているので、
結局、実行後の結果を見極めるスキル = PHP と WordPress の知識が必要となりますね。


まとめ

まずは WordPress コアのアップデートとパスワードを強固なものにするのが大事で、
正直このプラグインを使うシーンがないことを祈るばかりですが、
例え PHP と WordPress について生半可な知識しか無くても、
Exploit Scanner 実行後の結果を見るのと見ないのとではエラく違うと思うので、
なにか怪しいと思ったらすぐに実行しようと思います。

@kimipooh 様、@ixkaito 様セッション後にいろいろと教えて下さりありがとうございました。

こんなにいろんな事を教えてくれる WordBench、WordCamp Kansai 2015 に参加しましょ。