WordPressハッキング後の
復旧手順完全ガイド
WordPressがハッキングされたと気づいたとき、パニックになることはありません。正しい手順に従って対応すれば、確実に復旧できます。このページでは発覚から完全復旧まで時系列で手順を解説します。「今すぐやること」から「長期的な再発防止」まで体系的にカバーします。
📋 目次
このページで解説する内容
🚨 1. 【今すぐ】緊急対応:最初の30分でやること
サイトをメンテナンスモードにする
「WP Maintenance Mode」プラグインを有効化、またはFTPで以下のファイルを配置してサイトをオフラインにします。訪問者への被害拡大を防ぎます。
- 管理画面にアクセスできる場合:プラグインで即座にメンテナンスモードを有効化
- 管理画面にアクセスできない場合:FTPで
.maintenanceファイルをWordPressルートに配置(ファイル内容は<?php $upgrading = time(); ?>)
サーバー会社に連絡する
サーバー会社のサポートに連絡し、ハッキングを報告します。多くのサーバー会社は緊急対応サポートを提供しています。スパムメールの送信やDDoS攻撃の踏み台になっている場合は特に急いで連絡してください。アカウントが停止される前に連絡することで、より迅速な支援が受けられます。
証拠の保全(現状のバックアップを作成)
感染状態のままでもバックアップを作成します。これは①調査のための証拠保全、②バックアップからの復旧ができなかった場合の手動駆除のための参照用として必要です。感染ファイルは別の場所(別のFolderやUSBドライブ等)に保存してください。
全パスワードを一時的に変更する
攻撃者が継続アクセスできないように、まず最重要のパスワードを変更します。FTPパスワード・サーバーコントロールパネルのパスワードを最優先で変更してください。
🔍 2. 被害状況のアセスメント
復旧方法の選択は被害の深刻度によって異なります。まず状況を把握しましょう。
| 確認項目 | 確認方法 | 被害の深刻度 |
|---|---|---|
| サイトが別サイトにリダイレクト | シークレットモードでアクセス | 🔴 高 |
| Googleに警告表示 | Google SafeBrowsing確認 | 🔴 高 |
| 見知らぬ管理者アカウント存在 | ユーザー一覧を確認 | 🔴 高(DBアクセスあり) |
| スパムメール大量送信 | サーバー会社からの通知 | 🔴 高 |
| Wordfenceが改ざんファイルを検出 | Wordfenceスキャン結果 | 🟠 中〜高 |
| 管理画面にアクセスできない | ログイン試行 | 🟠 中〜高 |
| 不審なファイルがある | FTPでファイル確認 | 🟡 中 |
| サイトが重い・遅い | PageSpeed等でテスト | 🟡 中(マイニングの可能性) |
ハッキングの影響は同一サーバー上の他のWordPressサイトにも及ぶ可能性があります。同一のサーバーアカウントで複数のサイトを運営している場合、全てのサイトをスキャンしてください。特に
wp-content/uploads/や.htaccessに不審なコードが見つかった場合、他のサイトも同様の感染が疑われます。
💾 3. バックアップからの復元(最速・最確実)
感染前のクリーンなバックアップがある場合、これが最も確実な復旧方法です。
感染していない日時のバックアップを特定する
バックアップの日付と感染の疑われる日時を照合します。感染日時はアクセスログや不審なファイルの作成日時から推測できます。
バックアップをステージング環境で先に確認
可能であれば、バックアップを本番環境に直接復元する前に別のURLや別のフォルダで動作確認します。感染が含まれていないことを確認してから本番復元します。
サーバーファイルを完全削除してから復元
既存のサーバーファイルを削除(感染状態のバックアップは別保存済み)し、クリーンなバックアップのファイルを再アップロードします。DBも同様に復元します。
復元後すぐに全パスワード・秘密鍵を変更
バックアップ復元直後は攻撃者が知っているパスワードのままです。全認証情報を変更してから公開してください。
🛠️ 4. バックアップがない場合の手動クリーンアップ
バックアップがない場合の手順です。→ より詳しい手順はマルウェアスキャン・駆除ページを参照してください。
WordPressコアファイルを公式版で上書き
wordpress.orgから同バージョンをDL→wp-admin/とwp-includes/をFTPで上書き(wp-config.php・wp-content/は上書きしない)。
全プラグイン・テーマを削除して再インストール
wp-content/plugins/・wp-content/themes/を削除し、公式から再ダウンロードして再インストールします。
wp-content/uploadsのPHPファイルをスキャン・削除
通常uploadsフォルダにPHPファイルは存在しません。PHPファイルが見つかった場合は即座に削除してください。
データベースのマルウェアコードを除去
phpMyAdminで不審なJavaScript・eval()・base64_decode等が含まれるレコードを検索・削除します。→ 詳細手順
Wordfenceで最終スキャン
全ファイルを再度Wordfenceでスキャンし、残存するマルウェアがないことを確認します。問題がなければメンテナンスモードを解除します。
🔑 5. 全認証情報のリセット
クリーンアップ後、攻撃者が再侵入できないよう全ての認証情報を変更します。
-
WordPressの全ユーザーのパスワードを変更 特に管理者・編集者権限のユーザーを優先。「ユーザー」→「編集」→「新しいパスワードを生成」で強力なパスワードを設定します。
-
WordPressの秘密鍵(Security Keys)を再生成 wp-config.phpの秘密鍵を新しい値に更新。これにより全ての既存ログインセッションが無効化されます。https://api.wordpress.org/secret-key/1.1/salt/で新しい値を取得。
-
データベースのパスワードを変更 サーバーのコントロールパネルでDBパスワードを変更し、wp-config.phpの
DB_PASSWORDも更新します。 -
FTP/SFTPのパスワードを変更 サーバーのコントロールパネルでFTPアカウントのパスワードを変更します。
-
サーバーコントロールパネルのパスワードを変更 エックスサーバー・ConoHa WING等の管理パネルのパスワードを変更します。
-
メールアカウントのパスワードを変更 WordPressの通知メールアドレスに使用しているメールサービスのパスワードも変更します。
🔎 6. GoogleとSEOの復旧対応
Google Search ConsoleでURL検査ツールを使用
「URL検査」ツールで主要ページをインデックスリクエストします。スパムページが大量に生成された場合は「カバレッジ」レポートで状況を確認します。
スパムページが生成されている場合は削除とnoindex設定
攻撃者が作成したスパムページを削除し、URLがインデックスから削除されるまでの間はnoindexを設定します。URL削除ツールで緊急削除申請も可能です。
「セキュリティの問題」から再審査申請
Googleからの警告が出ている場合は「セキュリティの問題」→「審査をリクエスト」から申請します。対応内容を具体的に記載すると審査がスムーズになります。
Googleのブラックリストから解除されるまで通常2〜14日かかります。ただし、SEOランキング自体の回復はそれ以上かかる場合があります。特に「キーワードハイジャック」(スパムキーワードが大量に挿入された)場合、正常なページ品質の回復には数週間〜数ヶ月かかることがあります。定期的にSearch Consoleで検索クエリを確認し、スパムキーワードでの表示が残っていないか監視してください。
⚖️ 7. 個人情報漏洩の場合の法的対応
会員サイト・ECサイトなどで個人情報が漏洩した可能性がある場合は法的対応が必要です。
| 対応 | 必要なタイミング | 相談先 |
|---|---|---|
| 個人情報保護委員会への報告 | 一定数以上の個人情報漏洩(要件確認) | 個人情報保護委員会(ppc.go.jp) |
| 本人への通知 | 高リスクの個人情報漏洩 | 法律事務所へ相談 |
| クレジットカード情報漏洩 | 決済情報が含まれる場合 | クレジットカード会社・決済代行会社に連絡 |
| 警察への被害届 | 不正アクセスによる被害 | 都道府県警察のサイバー犯罪相談窓口 |
🛡️ 8. 復旧後のセキュリティ強化(再発防止)
復旧後すぐに以下のセキュリティ強化を実施してください。感染の原因を解消せずに再開すると、数日以内に再感染する可能性があります。
- 感染の原因となったプラグイン・テーマを更新または削除WPScan DBで脆弱性を確認し、修正済みバージョンに更新または代替プラグインに移行
- Cloudflare WAFを導入して攻撃をエッジでブロック無料プランでも基本的なDDoS・ボット攻撃を防げる
- ログインページのURLを変更・2要素認証を導入SiteGuard WP Pluginで管理画面URLを変更
- 自動バックアップを設定(日次推奨)UpdraftPlus等で毎日自動バックアップ+外部ストレージ保存
- Uptime Robot等の稼働監視を設定次回の問題を早期発見するための監視体制を構築
- PHPバージョンを最新の安定版に更新サーバーコントロールパネルでPHP 8.2以上に更新
- セキュリティチェックリストで全項目を確認60項目チェックリストで抜け漏れを確認する