WordPressがクラッキング(ハッキング)された!

やれやれ
管理サイトではWordPressブログを数百ほど運営しているが、そのいくつかがクラッキングされてしまった!

じつは、孫子曰く 敵が来ないと想い、敵が攻めないと願う というエントリーは、サイトがクラッキングされた戒めの意味でもあった…

WordPressがクラッキングされたら…

WordPress Codex 日本語版にあたってみると

FAQ/ハッキング・クラッキング被害 – WordPress Codex 日本語版

(1) テーマファイルの改変
(2) データの改竄/漏洩/破壊
(3) 既存ファイルの削除、不正ファイルの追加

クラッキング被害にあったら、上記ページを熟読して対処しよう。

弊社管理サイトでは、今回は、(1)と(3)の被害を受けている。

テーマファイルの改変

1サイトだけだったが、テーマに「main_page.php」なるものが追加されていた。

中身は、次のような呪文?

追加された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クラキング被害のリカバリーとセキュリティ対策は

被害サイトのリカバリーからはじまり、
次のように、点検と対策をおこなった。

  1. 被害サイトのリカバリー
  2. すべての WordPressブログで、ログインのユーザー名とパスワードの変更
  3. セキュリティ対策のプラグイン導入
  4. 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」ということらしい。

«
»