WordPress改ざん復旧完全マニュアル|原因特定からバックドア根絶・安全なデータ復元手順まで

「サイトを開くと勝手に怪しい海外通販や偽警告ページに飛ばされる」「Google検索で『このサイトは第三者によって改ざんされている可能性があります』と警告が出た」「管理画面に身に覚えのない管理者アカウントが追加されている」——これらはWordPressサイトが第三者によって改ざんされた典型的な被害症状です。

WordPressの改ざん被害は、企業の社会的信用やブランドイメージを大きく損なうだけでなく、訪問者へのマルウェア二次感染、Google検索結果からのインデックス削除(検索順位の急落・ブラックリスト化)、さらにはサーバー会社からの強制アカウント停止といった致命的なビジネス損害を引き起こします。

改ざん被害に直面した際、「とりあえず数日前のバックアップから元に戻せば大丈夫だろう」と安易に対処するのは極めて危険です。なぜなら、侵入経路となった脆弱性や、サーバー奥深くに仕込まれた「バックドア(裏口スクリプト)」を放置したままでは、復旧後わずか数時間〜数日で再び改ざんされるからです。

本マニュアルでは、WordPressサイトが改ざんされた際に今すぐ行うべき【緊急初動対応】から、改ざん箇所の特定、バックドアの完全根絶、ファイルおよびデータベースの安全な復旧手順、Google警告解除の申請フロー、再発防止策までを体系的かつ実践的に徹底解説します。

目次

📋 この記事でわかること

  • 改ざん発覚直後に被害拡大を防ぐ緊急初動3ステップ
  • 日本語スパム・不正リダイレクトなど代表的な改ざん被害パターン
  • 攻撃者の侵入経路(脆弱性・認証突破)を特定するログ調査法
  • 再感染を防ぎながらファイルをクリーン復元する安全な実践手順
  • データベース(SQL)に埋め込まれた悪意あるコード・不正アカウントの清掃法
  • Google Search Consoleでの警告解除申請(再審査リクエスト)の手順と例文
  • 自力復旧と専門業者依頼の境界線・判断基準

🚨 【緊急】改ざん発覚直後にまず行うべき3つの初動対応

サイトの改ざんが発覚、または疑われる場合、パニックになって不用意にファイルを上書きしたり削除したりしてはいけません。二次被害の防止と原因究明のために、以下の3つの初動対応を最優先で実施してください。

初動対応ステップ 実施目的 具体的な対応内容
1. サイトへのアクセス遮断 訪問者の二次被害防止・攻撃者操作遮断 .htaccessで管理者IP以外を503/メンテナンス画面に転送
2. 現状データの証拠保全(隔離バックアップ) 原因調査用ログ・改ざん痕跡の記録 改ざん状態の全ファイル・全DBダンプを隔離保存
3. 全関連アカウントのパスワード即時変更 侵入セッションの切断・追加入力阻止 サーバー管理画面、FTP/SSH、DB、WP全管理者のパスワード変更

1-1. サイトへのアクセス遮断(メンテナンスモード化)

改ざんされたサイトを一般公開したまま放置すると、サイト訪問者が詐欺サイトへリダイレクトされたり、マルウェアをダウンロードさせられたりして二次被害が拡大します。また、Googleなどのクローラーが改ざんコンテンツを検知すると、即座に検索結果に警告を表示し始めます。

Webサーバーのルートディレクトリにある .htaccess に以下の記述を追加し、管理者のIPアドレスからのみアクセスを許可し、一般訪問者には503エラー(一時利用不可)またはメンテナンスメッセージを返します。

# .htaccess による管理者IP制限と503メンテナンス設定例
<IfModule mod_rewrite.c>
RewriteEngine On
# あなたの固定グローバルIPアドレスを指定(例: 203.0.113.195)
RewriteCond %{REMOTE_ADDR} !=203.0.113.195
# メンテナンス画像や静的ファイルは除外(必要に応じて)
RewriteCond %{REQUEST_URI} !^/maintenance.html$
RewriteRule .* /maintenance.html [R=503,L]
</IfModule>

<IfModule mod_headers.c>
Header always set Retry-After "3600"
</IfModule>

⚠️ 注意:メンテナンス用プラグインを有効化するだけでは、すでに管理画面を乗っ取られている場合や.htaccessレベルでリダイレクトされている場合に対応できません。必ずサーバーファイル(.htaccess やWebサーバー設定)でアクセスを制限してください。

1-2. 現状データの証拠保全(隔離バックアップ)

「早く直したい」という一心で既存データを上書き・削除してしまうと、「いつ・どのファイルが・どのIPから・どの脆弱性を突いて書き換えられたのか」というフォレンジック(原因究明)の証拠がすべて消失します。

必ず、改ざんされた現状の「Web公開ディレクトリ全ファイル」と「データベース全テーブル」をバックアップし、作業用ローカル環境などの安全な隔離領域にダウンロード保存してください。

# SSHが利用可能な場合の隔離バックアップコマンド例
# 1. ファイル一式のアーカイブ
tar -czvf /tmp/hacked_site_backup_$(date +%Y%m%d_%H%M%S).tar.gz /var/www/html/

# 2. データベース全ダンプの取得
mysqldump -u db_user -p --single-transaction --routines --triggers db_name > /tmp/hacked_db_backup_$(date +%Y%m%d_%H%M%S).sql

1-3. 全関連アカウントのパスワード即時変更

攻撃者がFTPアカウントやホスティング管理画面、データベース接続情報を保持している場合、いくらファイルを修正しても即座に再侵入されます。以下の認証情報をすべて強固なランダム文字列(20文字以上)に変更してください。

  • サーバー/ホスティング管理画面のログインパスワード
  • FTP/SFTP/SSHの接続アカウント・秘密鍵
  • データベース(MySQL/MariaDB)の接続ユーザーパスワード(※後ほど wp-config.php も書き換えます)
  • WordPressの全管理者(Administrator)アカウントのパスワード

🔍 代表的なWordPress改ざんの症状と被害パターンの見極め

WordPressの改ざんは、攻撃者の目的によって手口が大きく異なります。まずは自身のサイトがどの被害パターンに該当するかを特定しましょう。

改ざん被害パターン 主な症状・検知のきっかけ 攻撃者の主な目的
① 日本語スパムハック
(Japanese Keyword Hack)
Google検索結果にブランド偽物・医薬品・カジノ等の不審な日本語タイトルやURLが大量にインデックスされる ブラックハットSEO、不正アフィリエイトへの誘導
② 不正リダイレクトハック
(Conditional Redirect)
Google検索経由やスマホ端末からのアクセス時のみ、詐欺警告・成人向けサイト等へ強制転送される フィッシング詐欺、不正広告収益の獲得
③ バックドア&不正管理者追加 身に覚えのない管理者ユーザーが存在する、ファイルのタイムスタンプが不正に変更されている サーバーのリソース悪用、踏み台化、長期的な潜伏
④ Google検索の警告表示
(Deceptive Site)
ブラウザでアクセス時に赤画面「偽のサイトにアクセスしようとしています」「改ざんの疑い」とブロックされる ブラウザ・セキュリティベンダーによる危険判定
⑤ コア・DBのコード書き換え index.phpheader.php、DBの wp_options に難読化スクリプト(base64/eval)が埋め込まれている マルウェア配信、スパムメール送信(SPAM bot)

パターン①:日本語スパムハック(Japanese Keyword Hack)

国内のWordPressサイトで最も被害件数が多い手口です。サイト内に数千〜数万件のランダムなPHPファイルや静的HTML(例: /brand-sale-xyz123.html など)が生成され、Google検索結果を偽ブランド品や不正通販サイトのキーワードで埋め尽くします。

Googleで site:あなたのドメイン と検索した際に、身に覚えのない商品名や中国語・不自然な日本語が並んでいる場合、このスパムハックに感染しています。

パターン②:条件付き不正リダイレクトハック

「管理者がPCで直接URLを入力してアクセスしても普通に表示されるが、Google検索からスマートフォンでアクセスした訪問者だけが不審なサイトへ転送される」という巧妙な手口です。

これは .htaccess やテーマの functions.php、または wp_options テーブル内に、HTTPリファラー(参照元)がGoogle/Yahoo等であるか、ユーザーエージェントがモバイルであるかを判定する条件分岐スクリプトが仕込まれているために発生します。


🛠️ 【原因特定】攻撃者はどこから侵入したのか?3大侵入経路の調査

改ざんを復旧する前に、「なぜ改ざんされたのか」という根本原因(侵入経路)を特定しなければ、復旧作業を行っても再び同一の穴から侵入されてしまいます。WordPressが改ざんされる原因の95%以上は以下の3点に集約されます。

📌 WordPress改ざんの3大侵入経路

  1. プラグイン・テーマの既知の脆弱性(更新放置・ゼロデイ脆弱性・海賊版プラグイン)
  2. 管理者アカウントのパスワード脆弱性・総当たり攻撃(Brute Force / REST API経由)
  3. サーバー環境の設定不備(パーミッションの過剰付与、他サイトとの共用サーバー汚染)

3-1. Webサーバーアクセスログの調査コマンド

サーバーのアクセスログ(access.log)を調査し、改ざんが発生した時間帯に不審なPOSTリクエストや、プラグインディレクトリへの直接アクセスがないか確認します。

# 1. 不審なPOSTリクエスト(ファイルアップロードや設定変更)を抽出
grep "POST " /var/log/nginx/access.log | grep -E "(wp-content|wp-admin|xmlrpc\.php)" | awk '{print $1, $4, $6, $7, $9}' | head -n 30

# 2. 過去24〜72時間以内に作成・変更された不審なPHPファイルを探索
find /var/www/html/ -type f -name "*.php" -mtime -3 -ls

# 3. eval, base64_decode, assert, gzinflate 等の悪用関数を含む不審スクリプトを検索
grep -rnEi "(eval\s*\(|base64_decode\s*\(|gzinflate\s*\(|str_rot13\s*\(|passthru\s*\(|shell_exec\s*\()" /var/www/html/wp-content/

特に /wp-content/uploads//wp-includes/ 配下に存在する .php ファイルは、正規のWordPress運用では原則として存在しないため、見つかった場合はほぼ確実に攻撃者が設置したバックドアです。


📂 【完全実践】改ざんされたWordPressを安全に復元する6ステップ

改ざん被害からサイトをクリーンかつ確実に復元するための標準復旧フローです。「感染ファイルを1つずつ探して消す」という対症療法は必ず見落としを生むため、「公式の安全なファイルで総入れ替えする」手法を適用します。

🛡️ 安全復旧の全体プロセスフロー

【ステップ1】WordPressコアファイルの完全新規入れ替え

【ステップ2】テーマ・プラグインの公式最新版によるクリーン再インストール

【ステップ3】/wp-content/uploads/ の徹底的な不正ファイル除去

【ステップ4】データベース(SQL)に混入した不正コード・不正管理者の洗浄

【ステップ5】wp-config.php の点検・SALT(秘密鍵)再生成

【ステップ6】Linux cron / mu-plugins / 残存バックドアの最終点検

ステップ1:WordPressコアファイルの完全新規入れ替え

WordPress本体のコアファイル(wp-admin/, wp-includes/, およびルート直下のPHPファイル群)には、攻撃者によって巧妙に隠蔽されたバックドアコードが埋め込まれているケースが多発します。

既存のコアファイルを修復しようとせず、WordPress公式サイトからダウンロードした正規の最新版ファイルで全置換します。

# コアファイル置換のコマンド例(※事前にバックアップ必須)
# 1. 公式最新版WordPressをダウンロード
cd /tmp
wget https://ja.wordpress.org/latest-ja.tar.gz
tar -xzvf latest-ja.tar.gz

# 2. 既存の感染した wp-admin, wp-includes を完全削除
rm -rf /var/www/html/wp-admin
rm -rf /var/www/html/wp-includes

# 3. クリーンな公式コアファイルをコピー
cp -r /tmp/wordpress/wp-admin /var/www/html/
cp -r /tmp/wordpress/wp-includes /var/www/html/
cp /tmp/wordpress/*.php /var/www/html/

# ※ wp-config.php や .htaccess は上書きされないよう注意して手動確認

ステップ2:テーマ・プラグインを公式から新規再インストール

改ざん被害において、プラグインやテーマのディレクトリ内に無関係なファイル名(例: wp-class-cache.php, alfa-rex.php 等)でバックドアが潜伏しているケースが最も多いです。

  • 既存の /wp-content/plugins/ ディレクトリの名前を変更して無効化(例: plugins_infected
  • 新規に空の plugins/ ディレクトリを作成し、WordPress公式ディレクトリまたは開発元の正規購入元から最新版ZIPをダウンロードして再配置
  • 利用中のテーマ(/wp-content/themes/自社テーマ/)についても、公式サイトのオリジナルデータとGit等の差分比較(diff)を行い、不正に挿入されたコードがないか1行ずつ検証
  • 長期間更新が停止しているプラグインや、使用していないテーマ・プラグインはすべてサーバーから完全に削除

ステップ3:/wp-content/uploads/ 内の不正スクリプトを完全排除

画像やPDFを格納する uploads/ フォルダは、攻撃者がファイルアップロード脆弱性を突いてバックドアPHPを設置する代表的なターゲットです。本来、uploads/ ディレクトリ内に実行可能な .php ファイルが存在することは一切ありません。

# 1. uploadsディレクトリ内のすべてのPHP関連ファイルを検索・一覧化
find /var/www/html/wp-content/uploads/ -type f -name "*.php*" -ls

# 2. 拡張子が偽装されたスクリプト(.ico, .txt, .jpg等で中身がPHP)を検出
find /var/www/html/wp-content/uploads/ -type f \( -name "*.ico" -o -name "*.png" -o -name "*.jpg" -o -name "*.txt" \) -exec grep -l "<?php" {} \;

# 3. 検出された不正ファイルを隔離・削除した上で、uploads直下にPHP実行禁止の.htaccessを配置

/wp-content/uploads/.htaccess を新規作成し、以下の記述を追加してディレクトリ内でのPHP実行を完全に遮断します。

# /wp-content/uploads/.htaccess
# uploads内でのすべてのPHPスクリプト実行を拒否
<Files *.php>
deny from all
</Files>
<Files *.phtml>
deny from all
</Files>
<Files *.php5>
deny from all
</Files>

ステップ4:データベース(SQL)の改ざん箇所の徹底洗浄

ファイルだけでなく、データベース内部にも不正なデータが書き込まれています。特に以下のテーブルとカラムを点検・修正します。

対象テーブル 点検箇所 改ざんの典型例と確認クエリ
wp_options siteurl, home, active_plugins 不正な外部ドメインへのURL書き換え、隠しプラグインの自動ロード
SELECT * FROM wp_options WHERE option_name IN ('siteurl','home');
wp_users & wp_usermeta ユーザー一覧・権限 不正に追加された管理者権限ユーザー(administrator)の確認・削除
SELECT ID, user_login, user_email, user_registered FROM wp_users;
wp_posts post_content, guid 記事本文への隠しリンク(display:none)、スパムアフィリエイト、不正JavaScript(<script src="https://evil...">)の埋め込み

不審な管理者ユーザーが見つかった場合は、WordPress管理画面(または phpMyAdmin / WP-CLI)から該当アカウントを削除し、そのユーザーが投稿したコンテンツの有無を確認してください。

ステップ5:wp-config.php の点検とSALT(認証用秘密鍵)の再生成

wp-config.php の先頭や末尾に不審な include / require 文や eval() が追記されていないか目視で確認します。

さらに、攻撃者が古いCookieセッションを保持してログイン状態を維持することを防ぐため、WordPressのSALT(暗号化用ソルト・秘密鍵)をすべて再生成します。

  1. WordPress公式のキー生成ページ(https://api.wordpress.org/secret-key/1.1/salt/)にアクセス
  2. 生成された新しい一意のキーセットをコピー
  3. wp-config.php 内の AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY 等の既存記述を上書き置換

これにより、現在サイトにログインしているすべてのユーザー(攻撃者を含む)のセッションが強制切断・無効化されます。

ステップ6:cron / mu-plugins / 残存バックドアの最終点検

攻撃者は、自身が削除された場合に自動で復活できるよう、以下の場所に「永続化バックドア」を仕込むことがあります。

  • 必須プラグイン(/wp-content/mu-plugins/:管理画面のプラグイン一覧に表示されずに自動実行されるため、中身を必ず確認し、身に覚えのないPHPファイルは削除します。
  • WordPress Cron(WP-Cron):不正なスケジュールタスクが登録されていないか、WP-CLI(wp cron event list)等で確認します。
  • サーバーのLinux crontab:サーバーのcron設定(crontab -l/etc/cron*)に、不審な外部スクリプトを定期ダウンロード・実行する記述がないか点検します。

🌐 Google検索の警告表示(ブラックリスト)を解除する手順

改ざんによってGoogleに「偽のサイトにアクセスしようとしています」「このサイトは第三者によってハッキングされている可能性があります」と判定された場合、復旧作業が完了した後にGoogle Search Consoleから再審査リクエスト(審査依頼)を提出する必要があります。

📝 Google再審査リクエストの具体的な手順

  1. Google Search Console にログイン
  2. 左側メニューの「セキュリティと手動による対策」>「セキュリティの問題」を開く
  3. 検出されている問題(マルウェア、ハッキングされたコンテンツ、有害なダウンロード等)の詳細を確認
  4. サイト上の改ざんファイル・データベース・脆弱性が完全に排除されたことを再確認した上で、「審査をリクエスト」ボタンをクリック
  5. 具体的な対処内容を記述して送信(※以下の申請文例を参考にしてください)

📄 再審査リクエスト申請文の記述例

サイト管理責任者様 / Google審査チーム様

当サイトにおいて、過去のプラグイン脆弱性に起因する不正なファイル改ざんおよびスパムコンテンツの埋め込み被害が確認されたため、以下の通り全面的な復旧・駆除およびセキュリティ強化措置を完了いたしました。

【実施した対応内容】
1. WordPressコアファイル、テーマ、プラグインをすべて公式最新版へクリーン再インストール・総置換
2. /wp-content/uploads/ 内およびサーバー全体の不審ファイル・バックドアの完全スキャンおよび削除
3. データベース内に埋め込まれていた不正スクリプト・スパム投稿・不正管理者ユーザーの完全削除
4. wp-config.phpの暗号化SALT再生成および全関連アカウント(WP/FTP/DB/サーバー)のパスワード変更
5. WAFの有効化、およびuploadsディレクトリでのPHPスクリプト実行禁止措置の実施

現在、サイト内のすべての悪意あるコンテンツは完全に排除されており、安全性が確保されています。
ご確認の上、セキュリティ警告の解除をお願い申し上げます。

通常、申請から数時間〜数日(概ね1〜3営業日以内)でGoogleによる再クロール・診断が行われ、問題がなければ警告が自動解除されます。


🛡️ 二度と改ざんされないための再発防止・セキュリティ強化策

改ざんから復旧した後は、二度と同じ被害を繰り返さないようサイトの防御壁を恒久的に強化します。

対策項目 具体的な設定・推奨アクション 防御できる脅威
1. WAFの有効化 サーバー付属のWAF機能またはCloudflare等のクラウドWAFを有効化 SQLインジェクション、XSS、不正ファイルアップロードのリアルタイム遮断
2. 管理画面の防壁強化 ログインURL変更(プラグイン利用)、2要素認証(2FA)導入、IP制限 総当たり攻撃(ブルートフォース)、パスワード漏洩時の不正侵入
3. 自動更新の適切な設定 マイナーバージョン自動更新を有効化、定期的なプラグイン更新ルーチン 既知の公開脆弱性を突いた自動スキャン攻撃
4. パーミッションの最適化 ディレクトリ: 755 / ファイル: 644 / wp-config.php: 600 または 400 Webサーバー権限での不正ファイル書き換え防止
5. 継続的な自動バックアップ 日次の外部クラウドバックアップ(30世代以上保持) 万一の再被害時におけるクリーンデータの確保

⚖️ 自力復旧か専門会社への依頼か?判断基準とチェックリスト

WordPressの改ざん復旧は高度なサーバー知識・PHPコード解読能力を要します。無理に自力で対応しようとしてデータを完全に破損させてしまったり、バックドアを残したまま再感染を繰り返してGoogleブラックリストが長期化したりするリスクがあります。

以下の判断基準を参考に、自力対応するか専門のセキュリティ復旧会社へ相談するかを判断してください。

判断項目 自力復旧が可能な目安 専門会社へ依頼すべき目安(推奨)
バックアップの有無 改ざん前の明確にクリーンなバックアップが存在する バックアップがない/いつ感染したか不明
サーバー・コマンド知識 SSH操作、grep検索、SQLクエリの実行に慣れている FTPの基本操作しか分からず、コードが読めない
改ざんの深刻度 特定プラグインのみの被害で原因が明白 日本語スパムが数万件生成 / サーバー全体に拡散
ビジネス緊急度 個人の趣味ブログで多少のダウンタイムが許容できる 企業のコーポレートサイト・ECサイトで即時復旧が必須

専門業者による復旧費用の相場は、軽微なマルウェア駆除で数万〜10万円程度、大規模な改ざん・データベース復旧で15万〜30万円前後が一般的です。


まとめ:迅速な初動とクリーンな再構築で改ざんから完全復帰

WordPressのサイト改ざん復旧において最も重要なのは、「場当たり的な対症療法を行わず、公式ファイルによる確実な総置換とデータベースの徹底洗浄を実施すること」です。

そして復旧完了後は、放置された脆弱性や設定不備をなくし、定期的なセキュリティスキャンによって常に安全な運用状態を維持することが不可欠です。

🛡️ あなたのWordPressサイトの安全性を今すぐ無料診断

「サイトに潜む脆弱性や設定不備がないか確認したい」「改ざんリスクを事前に検知したい」という方は、ぜひMozCheckをご活用ください。URLを入力するだけで、WordPressの設定状況やセキュリティ健全性をわずか数十秒で無料スキャンできます。

📚 あわせて読みたい関連記事

投稿者

🧰 WordPress無料診断

サイト改善の第一歩をお届け

当サイト「MozCheck」は、WordPressサイトの不安をチェックできる無料診断サービスです。
URLを入力するだけ。登録不要、すぐに診断結果が表示されます。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です