WordPressが改ざんされたので復旧する一部始終とか

WS000010

当ブログが改ざんと不正なコードを入れ込まれました。悪意のある第三者からの攻撃は以前DDoS(Denial of Service attack)を受けていますのでこれで二度目です。エラーログを確認すると攻撃がされた時間は金曜日の16時30分から、今朝5時32分です。

昨日ブログが落ちてアクセスできない状況が続いたのはこれが理由です。(注:具体的には何らかの悪意のあるコードでプラグイン(キャッシュ系)が全停止、ページ表示できなくなった。アクセスが重くおかしいと思われた方いらっしゃると思います。今回そのような事態がありました。

事象を確認し対処、そしてWordpressにおけるセキュリティ対策を練り対策しましたので自分のメモ。

スポンサーリンク

こんなコード書いた記憶ないんだが・・・

WS000010

wp-config.phpに身に覚えのない記述を確認したのは17:00です。当ブログはすべてのアクセスや、急激なトラフィック増加を監視しています。なにやらレスポンスが著しく落ちる時間が続きました。通常のファイルの場合、赤字で囲った前には何もないです。

上記のように不正な入れ込みがあるのを確認しました。すべてがこの意味不明な文字列が原因なのかは定かではないです。ですのでまずはレイヤーの低いところから切り分けることにしました。先頭の意味不明な文字列をすべて削除して1行目と2行目を元の状態に。

もしかしたらサーバー落ちてるかも?

当ブログのサーバを管理している管理会社に電話します。グランフロント大阪に拠点を置くXserver株式会社です。返答は「契約サーバの障害や負荷増はない」とのことで物理的な障害はないことを確認します。おねえさんは私より10倍ネットワークの知識がアリそうでした。

WS000014

おねえさんに論破されたので、問題は私の管理している範囲の事象であると切り分けました。次にエラーログを確認。Xserverの管理画面からエラーログを抽出します。(ログの場所は上記画面参照のこと)ログレベルは通常のsyslogに吐かれるものと同様の表記です。

errorやwarnが多発。errorを中心に見ていきます。実際のアクセスでは500エラーが多発。アクセスできません。発生事象としては以下のとおりです。

  1. プラグインがすべて停止
  2. 500エラー
  3. WORDPRESSの管理画面にアクセス出来ない
  4. あるていど作業していくと、管理画面、ページが真っ白だ

SSHできるレンタルサーバでよかった・・・

管理画面に入れない時点で普通終わりです。どこからもアクセス出来ないのでSSHでサーバに接続することにしました。Wordpressの「管理者」といえど普通はレンタルサーバ会社が用意した、「簡単インストール」等で何も考えずWordpressをインストールした方が大多数です。

そんな方向けに一つ、万が一に備えTerminal(私はTera Termを今回使用)からSSHで接続して作業をおすすめします。上記2~3の場合、管理者為す術がありません。またTerminalからでないと、Wordpressのデバックモードに変えるすべもありません。

はじめ、キャッシュを疑いました。見ていくと、管理画面とページにアクセス出来ないからです。私はキャッシュプラグインで「W3 Total Cache」を導入”していました”。※これをきに使用を辞めました。エラーを確認すると、キャッシュがまだ生きています。しかし母体(W3 Total Cache)は死んでいます。

ということで、関連するキャッシュファイルをすべて削除します。
/サブドメイン名/wp-content/
直下のファイルを削除します。W3TotalCacheのファイルとDBcacheReloadedのファイル双方削除します。

不要キャッシュファイルの削除

Commandうちます。

  • $rm advanced-cache.php
  • $rm -R cache
  • $rm db-config.ini
  • $rm db.php
  • $rm object-cache.php
  • $rm -R w3tc-config

plugin配下のファイルをすべて削除。
cd wp-content/plugins
rm -R *

htaccessに書き込まれたキャッシュ情報を削除。
# BEGIN W3TC Browser Cache
# END W3TC Page Cache core
上記あいだに該当する箇所を削除

そもそもWP-configの設定を見直す。
Permission変更
$ chmod 404 wp-config.php

結果表示は以下のとおり。

  1. 変更前: -rw——- 1 hoge hoge 3772 12月 28 23:42 wp-config.php
  2. 変更後: -r—–r– 1 hoge hoge 3772 12月 28 23:42 wp-config.php

本体からテーマまで全て綺麗にする。
GUIから入れたら、ワードプレスを再インストールしてください。そしてセキュリティ対策ソフトを入れましょう。Wordfence Security – Anti-virus and Firewall security plugin for WordPress(※結局本プラグインを導入してもセキュリティホールはふさがらないので意味はなかった)

まとめ

今回順序立てて早急に復旧するためには以下のように確認した。

  • W3TC(W3 Total Cache)を使っている
  • DB Cache Reloadedを使っている
  • 画面が真っ白になった
  • 画面が500エラーに成った
  • 管理画面に入れない
  • blogが閲覧できない、またはタイムアウトする

対処

  • Cache関連のファイルを消す
  • wp-config.phpの不正な埋め込みを消す
  • .htaccessの不正な埋め込みを消す
  • プラグインをディレクトリごと消す
  • 上記の時点で管理画面に入れるのでWPを再インストール
  • テーマの再インストール
  • テーマはすべて不正な埋め込みコードが入っている可能性があるので全部削除
  • Cloudflareを使っている場合はパージする

トラブルから学ぶことも多いですが、テーマや本体のアップデートを怠っていた自分の責任でしょう。やはりトラブルを復旧すると気持ちいいですが、改竄はやめてほしいもんです。

by カエレバ