WordPressがクラッキング(ハッキング)された!
やれやれ
管理サイトではWordPressブログを数百ほど運営しているが、そのいくつかがクラッキングされてしまった!
じつは、孫子曰く 敵が来ないと想い、敵が攻めないと願う というエントリーは、サイトがクラッキングされた戒めの意味でもあった…
WordPressがクラッキングされたら…
WordPress Codex 日本語版にあたってみると
FAQ/ハッキング・クラッキング被害 – WordPress Codex 日本語版
(1) テーマファイルの改変
(2) データの改竄/漏洩/破壊
(3) 既存ファイルの削除、不正ファイルの追加
クラッキング被害にあったら、上記ページを熟読して対処しよう。
弊社管理サイトでは、今回は、(1)と(3)の被害を受けている。
テーマファイルの改変
1サイトだけだったが、テーマに「main_page.php」なるものが追加されていた。
中身は、次のような呪文?
不正ファイルの追加
「wp-includes」や「wp-admin」のディレクトリーに、不審なファイルがあった。
「アルファベット小文字の複数個組み合わせ.php」
そして、「wp-config.php」の改変
/** Sets up WordPress vars and included files. */
通常は上記で終わるはずだが、その下に下記が数行…
require_once(ABSPATH . 'wp-settings.php');
if(!function_exists(amt_cif)) { if(file_exists(ABSPATH.WPINC.'/ほげほげ.php')) { require_once (ABSPATH.WPINC.'/ほげほげ.php'); } }
もちろん、ほげほげ=アルファベット小文字の複数個組み合わせ である。
WordPressクラキング被害のリカバリーとセキュリティ対策は
被害サイトのリカバリーからはじまり、
次のように、点検と対策をおこなった。
- 被害サイトのリカバリー
- すべての WordPressブログで、ログインのユーザー名とパスワードの変更
- セキュリティ対策のプラグイン導入
- htaccessやwp-config.phpのチェック
被害サイトのリカバリーは、
データベースそのものが改変されていないことが条件であるが…
被害にあったサイトは、別のサーバーに移転した。
あるいは、ドメインを変更した。
なお、不審なファイルを削除することはともかく、ファイル名や日付がおかしいファイルを逐一確認するのも面倒。
データベースが改変されていないことを確認して、サーバーを変えて、WordPressやテーマやプラグインなどを新規アップロードすることを選んだ。
WordPressは、複数のスタッフで管理しているものが多いので、
既存ユーザーをすべて削除して、複雑なIDとパスワードの新規ユーザーに変更
1サイトごとに、
テーマ改変警告のプラグイン「AntiVirus」を導入しながら、チェック。
(ここで、ある1サイトで上記のテーマ改変を確認)
ログインに何回も失敗すると、一定時間ログインできないプラグイン「Login LockDown」
を導入。
Secure WordPressの導入と不具合?
もうひとつ、セキュリティ対策として「Secure WordPress」を導入。
ところが、これが別の問題を引き起こす。
レンタルサーバー会社から、お叱りを受け、また電話までかかってきた。
/wp-content/themes/index.php
に対して同じサーバーからPHP経由で大量にアクセスが発生していた。
ログと、このプラグイン導入のタイミングが一致している。
プラグインを停止すると、エラーもおさまる。
間違いない。
なんと、セキュリティのためのプラグインが、DoS攻撃まがいのことをやっていたのである!
あらためて、エラーログを眺めてみると、「Secure WordPress」を導入してレンタルサーバー会社に迷惑をかけているものでは、次のようになっていた。
Directory "/~~~/wp-content" is writeable by group
または
Directory "/~~~/wp-content" is writeable by others
つまり、「wp-content」のパーミッションが、通常の「755」にはなっておらず、グループやその他が書き込み可能になっていたわけである。
よって、パーミッションを「755」に変更して、Secure WordPressを導入、有効化しても、エラーが表示されなくなった。
このプラグインの挙動の是非はともかく、
「wp-content」のパーミッションがクラッキングによって変更された可能性もある。
パーミッションの確認と変更
最後に、
htaccessやwp-config.phpのチェック
パーミッションの確認と変更。
FTPソフトで、WordPressのファイルを一覧すると、不審なファイルは日付が他と違っていたりする。
定期的に、パトロールするべきだろう。
ローカルにダウンロードして中身を確認後、
htaccessに下記を加えていった。
<files wp-config.php>
order deny,allow
deny from all
</files>
なお、パーミッションも「644」になっていないものも多かった。
ところで、通常のWordPressのインストールで作成される「wp-config.php」は「666」になる。
これは、グループもその他も書き込み可能ということである。
推奨は、「444」もしくは「404」ということらしい。