2013年8月下旬にあったロリポップWordPress改竄についてのデータベースの復旧

2013年8月下旬にあったロリポップWordPress改竄についての修復・復旧

みなさん、こんにちわ。まゆ…Aスケです!

2013年8月下旬に起こった、ロリポップサーバーでのWordPress改竄被害に伴う復旧に役立てばと、記事を残します。対応に追われた皆さん、お疲れ様でした。。

まだ解決していない方は、まずは冷静になりましょう。これが一番大事です。復旧可能かもしれないデータを壊してしまったら大変です。

やること

現在、私が所持しているプランはロリポプランです。

なお、ロリポップのMySQLは作成時期によってバージョンが違います。2013年4月24日以降に作成した場合は、MySQL5.6か5.1.34の2つが選択できます。それ以前に作った人はVer5.1.34。

ロリポップのお知らせによると、MySQL5.6はSSDを使用したサーバーらしいので、これを機に乗せ換えようと思います。バージョン変わってエラーが出てしまったときの対応に不安な人は、以前と同じバージョンを使用することを推奨します。

データベースのバックアップ

ここからバックアップを取るわけではありませんので、ご注意ください。今までの運用している中での改竄被害に遭う前のバックアップのことを指します。今回の被害内容は、wp-config.phpの内容を見られての改竄なので、改竄後のデータをバックアップしたところで仕方がないですし、危険ですので絶対にやめましょう。

バックアップの取り方によってファイル名の違いがあるとは思いますが、改竄前にとっていたバックアップファイルの中に「(アカウントNo)-hoge.sql」というファイルがあるかと思いますので、そちらを復元に使用します。

データベースの削除

データベースの削除

チカッパプランの方はこの手順は最後に回し、先に「データベースの作成」へと進んでください。

ロリポプランだとデータベースが“1つ”しか作れないので、まず最初に削除せねばなりません。画像にあるデータベース削除ボタンを押せば、削除は完了です。

データベースの作成

データベースの作成
次はデータベースの作成です。バージョンを5.6にしていますが、ご自身の環境に合わせていただいても、以降の手順は変わりませんのでお好きな方を選択してください。

ここに入力された内容は、あとでwp-config.phpに記入する大事な内容になりますので、推測されやすいものはやめましょう。推測されやすいものはやめましょう。

データベースのインポート

lolipop006
次に、バックアップデータをphpMyAdminを使ってインポートします。まずは、たった今ご自分で作成したデータベースをクリックすることを忘れないようにしましょう。

画像のようにインポート画面に移ったら、バックアップしてあった「(アカウントNo)-hoge.sql」を選択してアップロードします。フォマットがSQLになっていることを念のため確認してください。

ここでアップロード制限に引っかかってしまう方は、SQLファイルをBZ2形式で圧縮し、アップロードしてみてください。手持ちのZIP圧縮だとエラーになってしまう場合がありますので確認を。

wp-config.phpの書換え

lolipop008
インポートが完了したら、さっそくさきほど作成したデータベース情報をwp-config.phpに記入していきます。上記の画像に、それぞれロリポップの画面に適合する形で例を作りましたので、確認してください。

今までのデータがあれば接頭辞を変更する必要はないとは思いますが、必要があれば適宜変更をしてください。

とりあえずは以上で作業は終了です。ここまでが終了したら、WEBサイトが正常に表示されることを確認します。データベース接続エラーが出た場合は、wp-config.phpの設定を見直してください。

★テーマ・プラグインのクリーンインストール

今回の改竄被害での要がここです。おそらく今回のWordPress改竄被害は、拡大した原因がロリポップ。進入経路がtimthumb.phpというファイル(っぽい)。これは以前にとても危険な脆弱性が見つかって、使用自体を控える動きがあったファイルです。

しかし、公式ディレクトリからダウンロードできてしまうプラグインの中には、古いモノであったりすると未だにこのファイルが入ってたりするのが現状。

すでにこのファイルを悪用されて、不正なファイルがアップロードされていても困るので、テーマフォルダとプラグインフォルダを一旦削除して再度入れ直すことを推奨します。

入れ直しが完了したら「Timthumb Vulnerability Scanner」を使用して、timthumb.phpが使われていないかチェックしましょう。もしプラグイン内などで発見された場合は、そのプラグインは使用しないようにします。サーバー上にあってもダメです。必ず削除しましょう。

その他、復旧に関わること

ここからは、手持ちに改竄されてしまったデータがあるわけではないので、フォーラムでのやりとりの上での憶測ですが、何かの手助けになれば…

データベース上から文字コードの変更

データベース上から文字コードの変更
phpMyAdminの左サイドメニューからhoge_optionsを選択して、テーブル一覧の2ページ目あたりにあると思います。画像のようにblog_charsetというところが文字コードの設定になります。

フォーラムでの情報によると、画像のようにUTF-7になっているかと思いますので、ここをUTF-8に変更します。これで文字化けは直るかと。

管理画面は表示されるけど、サイトが表示されない

ウィジェットに見たことのないものが登録されていないか確認してください。フォーラムによると、Javascriptが書いてあるウィジェットが登録されているとのこと。こちらを削除すれば解決するかもしれません。

ちなみにこのJavascriptは

なようで、結果的に画面が真っ白に。

各投稿ページなどが404エラーになってしまう場合は、WordPressの管理画面より「設定」→「パーマリンク設定」を確認し、内容の変更がなくても更新ボタンを押してみてください。

wp-config.php、及び.htaccessの情報を読み取られないために

今回、ロリポップより手が加えられているかとは思いますが念のため。Webサーバー上に上げられたファイルには全て、権限というものあります。以下のスライドが大変分かりやすいので、参考にしてください。

ノンプログラマーのためのWordPressセキュリティ入門

こちらのスライドにもありますが、wp-config.phpのパーミッションは400が最も安全です。共有サーバーではグループ権限は与えません。

また、.htaccessで最も安全であろうパーミッションは404です。ただし、こちらに設定するとWordPressの設定画面からはパーマリンクの設定更新が出来ず、生成されたコードを自分で置き換える作業が必要になりますのでご注意ください。

見られたくない部分にはアクセス制限をかける

復旧したけどwp-config.php見られるかな不安…って方はアクセス制限をかけましょう。WordPressディレクトリにある.htaccessの「# BEGIN WordPress ~ # END WordPress」の外に以下を追記します。

これで一切アクセスされることはなくなります。その他にもいろいろなことができるので、気になる方は調べてみてください。

まとめ

今回の改竄は、規模も大きく被害もかなりのものなのではないかなと考えます。被害に遭われた方は、バックアップさえしっかりとっていれば、ロールバックはしたとしても元の姿に戻すことができますので、諦めずに修復を試みてみてください!

セキュリティの基本はバックアップから!