セオリコでは、年間数百サイトの WordPress 修復を行っています。
そのなかに「ハッキングによる改ざん」も含まれており、同様に修復を行ってきました。個人ブログであってもアクセス数の少ないサイトであっても関係なく攻撃され、もし改ざんされてしまったら一刻も早い修復が必要です。
とは言っても、修復を外注するとそれなりにお金がかかります。複数サイトがやられてしまうと修復費用は数十万円に及びますから、自分で修復したいという方もいるでしょう。
そこで、ハッキングされたサイトの修復手順を、実例をもとにご紹介します(依頼主様の承諾を得て掲載しています)。
今すぐサイトの復旧が必要な場合は、以下のリンクよりご相談ください。担当者がオンラインであれば 30 分以内にご返信し、当日中に対応いたします。
修復費用:10,000 円 / 1 サイト
ハッキングされるとどうなるか
ハッキングにより改ざんが進行すると、以下のような症状が表れます。
- 別のサイトにリダイレクト(自動転送)される
- site: コマンドで検索すると見知らぬページが出てくる
- ブラウザに警告が表示される
- Search Console「セキュリティの問題」にレポートが表示される
その他、管理画面に入れないなど一般的な不具合か改ざんかわからない場合もあります。
詳細は以下の記事をご覧ください。
修復したサイトの実例(表面上の問題)
今回ご紹介するサイトは、トップページにアクセスしたさいに Cloudflare のキャプチャが表示されていました。
どうやら、外部のサイトにリダイレクトを試みているようです。
同様のパターンを何度か見てきましたので、同じような症状が出ていたらまずはハッキングを疑ったほうがよいかもしれません。

ログイン画面にはアクセスできましたが、エラーコードが出ている上、ログインできない状態。
この症状だけではハッキングと断定できず、様々な原因が考えられます。

site: コマンドで検索すると、明らかに不正なページが複数出てきました。
こうなっていたらハッキングによる改ざんは確定です。放置しておいても勝手に直ることはなく、ひどいときは全データを削除されてしまいます。

修復したサイトの実例(FTP による不正ファイルの確認)
FTP で WordPress がインストールされているディレクトリ(ルート)を確認したところ、一目でわかる不正ファイルが複数設置されていました。

- 追加された不正ファイル例
-
- about.php
- admin.php
- content.php
- header.php
- radio.php
- wp-confiq.php
いずれもハッキングされたサイトに仕込まれていることが多い、典型的なファイル名です。
- 改ざんされたファイル例
-
- .htaccess
- index.php
- wp-blog-header.php
- wp-cron.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...また、admin.php の中身は「認証なしで使えるファイルマネージャー」でした。
ファイルの URL にアクセスすれば、だれでもサーバー内を好き勝手いじくり回せる、ということです。
WordPress にログインしなくてもいろいろできてしまうので、ログインセキュリティだけ強化しても意味がないことがわかりますね。
具体的な修復手順
修復のゴールは、「不正ファイルをすべて削除して元に戻す」ことです。
しかし、FTP でファイルを 1 つずつ確認していくのは現実的ではありません。マルウェアを開いて PC が感染するリスクもあります。
そこでおすすめなのは「必要なファイル以外はいったんすべて消してから最終チェックする」方法です。
01. /wp-content 以外を削除する
まずはルートにある .htaccess と wp-config.php をダウンロードしておきます。

もし現在の WordPress バージョンを覚えていない場合、wp-includes > version.php もダウンロードしておきましょう。
ファイル内にバージョンが記載されており、どのバージョンで復元すればよいかわかります。

必要なファイルをダウンロードしたら wp-content を残してすべて削除します。

error はサーバーで強制的に設置されるディレクトリです。
サーバーによっては他のディレクトリが標準設置されていますし、WordPress 外に必要なファイルを置いているケースもあります。
02. /wp-content 内の修復
続いて wp-content 内を修復していきます。
まずは cache を含めたキャッシュ関連ファイルと不正ファイルを削除しておきます。

もし .htaccess があったら、全ディレクトリに同じファイルが仕込まれている可能性大です。
サイトの状況により異なりますが、数千個の .htaccess があることも珍しくありません。

全ディレクトリを目視で確認するのは大変なので、ファイル検索機能を使うのがおすすめです(ここでは FileZilla を使用しています)。

あとは各ディレクトリをチェックして不正ファイルを削除していきます。
03. /wp-content/plugins 内の修復
plugins には、プラグインが入っています。
プラグインを偽装したマルウェアが仕込まれていることが多く、とくに下図のような Duplicatepost と wp はとても多く見られる偽装ファイルです。

この偽造ファイルは、管理画面のプラグイン一覧からは確認できません。
ここでどれが不正ファイルか見抜くのはとても難しいので、後述するセキュリティプラグインによるスキャンを併用してください。
04. /wp-content/themes 内の修復
themes にはテーマファイルが入っています。
ここにもテーマを偽装したファイルが仕込まれている可能性があります。今まで確認したなかでとくに多いのは twentytwenty に偽装した不正ファイルです。

中には inc のみ入っており、ここに不正ファイルが入っています。

これも削除しておきましょう。
プラグインと同様、不正ファイルをすべて見つけるのは難しいので、後ほどスキャンして再チェックします。
05. /wp-content/uploads 内の修復
uploads には、管理画面からアップロードした画像や、プラグインが設置したバックアップファイル等が入っています。
2026 など数字のみのディレクトリには、年別にメディアが格納されています。

通常、その中に PHP ファイルが入ることはありません。
先ほどの .htaccess と同じくファイル検索で .php を探して、怪しいファイルがあれば削除しておきましょう。
ファイル名は完全にランダムですが、8dyxSGF.php のような意味のわからないファイル名になっているものは高確率で不正ファイルです。
パスワードの変更と復旧
不正ファイルをあらかた削除したあと、以下の手順で元に戻していきます。
- データベースパスワードの変更
- ログインパスワードの変更(ログイン後でも可)
- WordPress コアファイルをアップロード
データベースパスワードを変更する
データベース情報は、最初にダウンロードしておいた wp-config.php に書かれています。
/** The name of the database for WordPress */
define( 'DB_NAME', 'seoryco_sample' );
/** Database username */
define( 'DB_USER', 'sample_user' );
/** Database password */
define( 'DB_PASSWORD', 'sdY%uzmc3f6p9pjM' );| データベース名 | seoryco_sample |
|---|---|
| データベースユーザー名 | sample_user |
| データベースパスワード | sdY%uzmc3f6p9pjM |
サーバー管理画面(コントロールパネル)にログインし、データベースパスワードを変更しておきましょう。
以下は ConoHa WING の画面です。

複数サイトを運営している場合、別のデータベースのパスワードを変更しないようご注意ください。
パスワード変更後、wp-config.php の DB_PASSWORD も合わせて変更しておきます。
ログインパスワードを変更する
WordPress ログインパスワードはほぼ確実に漏洩しているので必ず変更してください。
データベース(phpMyAdmin)から変更する方法は、以下の記事で解説しています。
WordPress 6.8 のログインパスワードをデータベースから変更する方法
データベース操作に慣れていない場合、管理画面にログインしたあとプロフィール編集画面から変更しても大丈夫です(※ ログイン後、最優先で行ってください)。
WordPress コアファイルをアップロードする
wp-admin や wp-includes を含め、最初の手順で削除したコアファイルをアップロードして元の状態に戻していきます。
最後に wp-config.php をアップロードすれば、WordPress 管理画面にログインできるようになっているはずです。

管理画面にログインできない場合、以下のパターンが考えられます。
- データベースパスワードが間違っている
- テーマやプラグインの主要ファイルが改ざんされている
- index.php 等が自動的に書き換えられるタイプのマルウェアが仕込まれている
このあたりは対応方法がケースバイケースとなります。
管理画面に入ったあとの作業
WordPress 管理画面に入れたら、以下の作業を進めます。
- ユーザー確認
- パーマリンク設定リセット(.htaccess 復旧)
- プラグイン更新 / 不要なプラグインの削除
- テーマ更新 / 不要なテーマの削除
ユーザーを確認する
まずは[ユーザー]に入り、不正なユーザーが追加されていないか確認してください。

先ほどログインパスワードを変更していなかった場合は、ここで変更しておきましょう。
強固なパスワードについて、以下の記事で解説しています。あわせてご覧ください。
自分のメールアドレスやパスワードが漏洩していないかチェックするツール 3 選
パーマリンク設定を更新する
次に、[設定]>[パーマリンク]に入り、何も変更せず「変更を保存」をクリックします。

これで最初に削除した .htaccess が自動的に復旧します(同時に WordPress 内部がフラッシュされます)。
プラグインを確認する
[プラグイン]に入り、未更新のプラグインがあればすべて更新してください。
また、無効状態になっている停止中のプラグインはいったん削除をおすすめします。
WordPress への侵入は、ログイン画面からではなく、プラグインの穴を突いたものも多数あります。もし未更新のプラグインが複数あったとしたら、それが原因である可能性大です。
テーマを確認する
[外観]>[テーマ]に入り、テーマが未更新であれば更新してください。
また、利用中のテーマ(+子テーマ)と WordPress 標準の Twenty 系テーマを 1 つ残し、その他はすべて削除しておきましょう。

プラグインと同じく、使わないものを残しておくとそれだけセキュリティ面で脆弱になります。
Wordfence インストールとスキャン
最後にセキュリティプラグインを導入し、スキャン機能を使って不正ファイルが残っていないか確認します。
セキュリティプラグインは多数ありますが、最もおすすめなのは「Wordfence」です。
実際に複数サイトで検証したところ、無料プラグインのなかでは最も検知率が高く、ふだんの運営においても不正アクセスを高確率でブロックしてくれます。
Wordfence インストール
[プラグイン]>[プラグインを追加]から Wordfence を検索してインストール・有効化します。

有効化後、ライセンス認証を求められます。
「Wordfence ライセンスを入手」をクリック。

Free 欄にある「Get a Free License」をクリック。

ボタンの下にある「I’m OK waiting 30 days ~」のリンクをクリックします。

メールアドレスを入力し、Wordfence 規約やプライバシーポリシー同意のチェックを入れて「Register」をクリック。

Wordfence から送られてくるメール内にある「Install My License Automatically」をクリックすると、自動的にライセンスキーが入力された状態で画面が開きます。
そのまま「ライセンスインストール」をクリックして登録完了です。

[Wordfence]>[スキャン]に進み、「スキャンオプションとスケジューリング」に入ります。

ここで「高感度」に変更してから元の画面に戻り、「新しいスキャンを開始する」をクリック。

不正ファイルが見つかると、具体的なファイル名が表示されます。

1 つずつ FTP で確認して削除してもよいですが、テーマやプラグインが対象になっていた場合は、丸ごとインストールし直したほうがよいです。
すべてのファイルを削除したら再度スキャンし、警告が出ない状態になれば完了です。
Wordfence はアンインストールしてもよいですが、日常の不正アクセスをブロックしてくれるのでそのままインストールしておくことをおすすめします。
Search Console での対応方法
「セキュリティの問題」が表示されていた場合
もしサイトにアクセスしたさいに「偽のサイトにアクセスしようとしています」と警告が出ていたら、Search Console にもアラートが出ているはずです。

Search Console を確認し、「セキュリティの問題」が出ていないか確認してください。

「セキュリティの問題」ページを開くと、理由と URL の例が表示されます(すべての疑わしい URL が表示されるとはかぎりません)。

すべての不審なファイルを取り除き、サイトが完全に復旧したら「審査をリクエスト」しましょう。

例文:
サーバー内の全ファイルを調査し、ハッキングにより不正に改ざんされたファイルをすべて修正・削除しました。
問題がなければ、12 時間ほどで Google から審査完了のメールが届き、Chrome の警告も削除されます。

とくにアラートが出ていなかった場合
「セキュリティの問題」アラートが出ていなくても、検索結果に不正なページが多数出ていた場合は対応しておきましょう。
と言っても、やるべきことは「トップページの URL 検査&インデックス登録リクエスト」のみです。
ブログ記事が Google 検索のインデックスに登録されない原因と解決策
修復が完了していれば、不正なページはすべて削除された状態になっています。Google のクローラーがそれらのページを確認して 404 を検知すれば、次第に検索結果から削除されていきます。
不正ページ数にもよりますが、検索結果が完全に戻るまで数週間~数ヶ月かかります。
もしかするとサイト全体の検索評価が下がって順位も下落しているかもしれませんが、すぐに回復させる手段はありません。通常どおり運営を続け、評価が戻るまで待ってください。
WordPress ハッキングに関するまとめ
ハッキング被害にあってしまったら、基本的には「ファイルを総入れ替え」することになります。
画像ファイルと見せかけた不正ファイルや、修正してもすぐファイルを改ざんしてくる悪質なプログラムもありますから、まずは大元を探して対処してください。プラグインによる除去だけでは対応しきれないこともあります。
ハッキングされているかも、と思ったらお気軽にご相談ください。相談・事前調査のみであれば無料で承ります。
別のケースでご依頼いただいたお客様のリアルなレビューはこちら。
