「ある日突然、WordPressの管理画面にログインできなくなった」「パスワード再発行メールを送信しても届かない」「見知らぬ管理者が勝手に追加されている」「自分の権限がなぜか『購読者』に格下げされている」――このような異常事態に直面している場合、あなたのサイトは第三者によって「管理者権限を乗っ取られた(アカウントハイジャック)」可能性が極めて高いです。
WordPressの乗っ取りは、単にブログが更新できなくなるだけにとどまりません。攻撃者によって顧客の個人情報やクレジットカード情報が窃取されたり、サイトがフィッシング詐欺やマルウェア配布の踏み台に悪用されたり、Googleから危険サイトとして警告を受けて検索結果から除外されるなど、壊滅的な被害へと直結します。
しかし、決して慌ててはいけません。管理画面に入れない状態であっても、サーバー管理パネルやデータベース(phpMyAdmin)、SSH(WP-CLI)を通じて管理者権限を強制的に奪還し、サイトを安全に完全復旧させる手順が確立されています。
本記事では、乗っ取り被害の兆候チェックから、二次被害を防ぐ緊急初動対応、データベース操作による管理者権限の強制奪還手順、侵入者の完全排除とバックドア駆除、そして二度と乗っ取らせない恒久的なセキュリティ強化策まで、ステップバイステップで網羅解説します。
⚠️ 被害拡大を防ぐための超重要ルール
- 焦って再ログイン試行を繰り返さない: パスワードが変更されている場合、試行を繰り返しても無意味であり、IPブロック等の二次障害を招く恐れがあります。
- 管理画面奪還だけで安心しない: 管理画面を取り戻しても、サーバー内に「バックドア(裏口ファイル)」が残っていれば数時間〜数日で再び乗っ取られます。必ず完全駆除まで実行してください。
- 作業前に必ず現状バックアップを確保する: 被害原因の調査や、復旧作業中の万が一の破損に備え、改ざんされた状態のファイルとDBを丸ごと保存してください。
🚨 あなたのWordPressは乗っ取られている?5つの典型的な被害兆候
「乗っ取り」と「単純なログインパスワード忘れやプラグイン不具合」は対処法が全く異なります。まずは以下の5つの兆候に当てはまるか確認し、乗っ取り被害の確度を診断しましょう。
| 兆候・症状 | 乗っ取りの可能性 | 攻撃者の手口・メカニズム |
|---|---|---|
| ① パスワードが合っているはずなのにログインできず、リセットメールも届かない | 🔴 極めて高い (99%) | 管理者のメールアドレスとパスワードが攻撃者のものに書き換えられている。 |
| ② ログインはできるが「権限がありません」と表示される(購読者に降格) | 🔴 極めて高い (95%) | 管理者のユーザー権限(ロール)が攻撃者によって「購読者」や「寄稿者」に強制変更された。 |
| ③ ユーザー一覧に見覚えのない管理者(英数字の羅列など)が存在する | 🔴 極めて高い (100%) | 脆弱性やバックドアを経由して、攻撃者が裏口用の新規管理者アカウントを追加した。 |
| ④ サイト上に身に覚えのない広告・スパム記事・海外カジノページが大量生成されている | 🟡 高い (90%) | SEOポイズニング(検索エンジンを騙して不正サイトへ誘導する手口)の踏み台にされている。 |
| ⑤ サイト閲覧時に偽セキュリティ警告や海外詐欺サイトへ強制転送(リダイレクト)される | 🟡 高い (85%) | JavaScriptや.htaccess、テーマヘッダーに不正リダイレクトコードが埋め込まれている。 |
上記のうち1つでも該当する場合、即座に緊急対応フェーズに移行する必要があります。
🛑 【STEP 0】二次被害・改ざん拡大を防ぐ緊急初動対応
管理者権限の奪還作業を始める前に、まずは「攻撃者の追加アクセス遮断」「被害の証拠保全」「関連アカウントの保護」を実施します。
1. サイトへの外部アクセスを一時遮断(メンテナンス化 / IP制限)
攻撃者がリアルタイムでサイトを操作したり、一般訪問者にマルウェア被害が拡大するのを防ぐため、.htaccess を編集して作業者のIPアドレス以外からのアクセスを遮断します。
# .htaccess による緊急IP制限(作業者IPのみ許可)
<RequireAll>
Require ip あなたのグローバルIPアドレス
</RequireAll>
# Apache 2.2系の場合
Order deny,allow
Deny from all
Allow from あなたのグローバルIPアドレス
FTPやレンタルサーバーのファイルマネージャーから、WordPressルートディレクトリにある .htaccess の最上部に上記を追記します。これにより、外部からのアクセスを一時的に完全に遮断できます。
2. サーバー管理パネル・FTP/SSH・DBパスワードの即時変更
乗っ取りの侵入経路がWordPress本体だけでなく、サーバーアカウントやFTP経由である可能性を排除するため、以下のパスワードを直ちに強力なものへ変更してください。
- レンタルサーバーのコントロールパネルログインパスワード
- FTP / SFTP / SSH 接続パスワードおよび秘密鍵
- MySQL / MariaDB データベース接続パスワード(※変更した場合は
wp-config.php内のDB_PASSWORDも合わせて更新してください)
3. 現状のファイル一式とデータベースの完全バックアップ取得
「汚染された状態のバックアップなんて取って意味があるのか?」と思われるかもしれませんが、以下の理由から必須の作業です。
- 復旧作業で誤ってデータを消失・破壊してしまった場合のロールバック用
- どのようなマルウェアが埋め込まれ、どのファイルが改ざんされたかを後から差分調査(フォレンジック)するため
FTP経由でサーバー上の全ファイル(wp-content/uploads/ 等を含む)をダウンロードし、phpMyAdmin等のエクスポート機能でデータベース(.sql)を保存してください。
🔑 【STEP 1】管理画面に入れない状態から管理者権限を強制奪還する3つの方法
管理画面にログインできない、またはパスワードリセットメールが届かない場合でも、サーバーやデータベースを直接操作することで、管理者権限を確実に取り戻すことができます。環境に合わせて以下の3つの方法から選択してください。
奪還手法の選び方:
- 方法A:phpMyAdmin(DB直接操作) ➔ 【最も推奨】 エックスサーバー、ConoHa、さくら、ロリポップ等ほぼ全環境で利用可能
- 方法B:WP-CLI(SSH接続) ➔ SSH接続が可能なVPSや開発環境で最速(1分で完了)
- 方法C:functions.php(FTP経由) ➔ DB操作に不安がある場合の代替手段
方法A:【推奨】phpMyAdminでパスワード再設定&管理者権限を復元する
レンタルサーバーの管理画面から「phpMyAdmin」にログインし、データベースを直接書き換える王道の復旧手順です。
手順①: wp_users テーブルでメールアドレスとパスワードを書き換える
- phpMyAdminにログインし、該当WordPressのデータベースを選択します。
- 左側メニューから
wp_usersテーブル(接頭辞が異なる場合は〇〇_users)をクリックします。 - 自分の元のアカウント行、または管理者らしき行を探し、「編集(鉛筆アイコン)」をクリックします。
- 以下の項目を書き換えます:
user_pass: 関数プルダウンから 「MD5」 を選択し、値の入力欄に 「新しく設定したい強力なパスワード」 を入力します(WordPressはMD5ハッシュで保存されたパスワードを初回ログイン時に自動で最新の安全なハッシュに変換します)。user_email: あなたが確実に受信できるメールアドレスに変更します。
- 画面下部の「実行」ボタンをクリックして保存します。
手順②: wp_usermeta テーブルで管理者ロール(権限)を復元する
アカウントが「購読者」などに格下げされていた場合、パスワードを変更しても管理画面の操作ができません。以下の手順で管理者権限(Administrator)へ修復します。
wp_usermetaテーブルを開きます。user_idが手順①で修正したユーザーIDと一致するレコードを探します。- 以下の2つの
meta_keyの値を修正します:meta_keyがwp_capabilitiesの行 ➔meta_valueをa:1:{s:13:"administrator";b:1;}に書き換えmeta_keyがwp_user_levelの行 ➔meta_valueを10に書き換え
手順③: 管理者アカウントごと消去されていた場合の「緊急管理者作成SQL」
攻撃者によって既存の管理者ユーザーが完全に削除されていた場合は、phpMyAdminの「SQL」タブから以下のクエリを実行し、新しい管理者アカウントを強制作成します。
-- 緊急管理者ユーザーの作成クエリ(テーブル接頭辞が wp_ の場合)
INSERT INTO `wp_users` (
`user_login`,
`user_pass`,
`user_nicename`,
`user_email`,
`user_status`,
`display_name`,
`user_registered`
) VALUES (
'emergency_admin',
MD5('YourStrongPassword2026!#'),
'Emergency Admin',
'your-safe-email@example.com',
0,
'Emergency Admin',
NOW()
);
-- 作成したユーザーに管理者権限を付与
INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`)
VALUES (
(SELECT `ID` FROM `wp_users` WHERE `user_login` = 'emergency_admin'),
'wp_capabilities',
'a:1:{s:13:"administrator";b:1;}'
);
INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`)
VALUES (
(SELECT `ID` FROM `wp_users` WHERE `user_login` = 'emergency_admin'),
'wp_user_level',
'10'
);
※ YourStrongPassword2026!# と your-safe-email@example.com は任意の値に変更して実行してください。これでユーザー名 emergency_admin で管理画面へログインできるようになります。
方法B:WP-CLI(SSH接続)で最速コマンド復旧する
サーバーにSSH接続でき、WP-CLIが導入されている場合は、ターミナルから1行のコマンドで即座にパスワード変更や新規管理者作成が可能です。
# 既存ユーザー(例: ID 1)のパスワードとメールアドレスを強制更新
wp user update 1 --user_pass="NewComplexPassword!#99" --user_email="admin@yourdomain.jp"
# または新規の緊急管理者アカウントを即時作成
wp user create emergency_admin admin@yourdomain.jp --role=administrator --user_pass="NewComplexPassword!#99"
方法C:FTP経由で functions.php に一時記述して管理者を強制追加する
データベース操作が難しい場合は、FTP経由で現在有効化されているテーマの functions.php の末尾に以下のコードを一時的に追記します。
// 【緊急用】管理者アカウント強制追加コード(ログイン成功後に必ず削除してください)
function emergency_add_admin_account() {
$user = 'temp_admin';
$pass = 'TemporaryPassword2026!';
$email = 'your-email@example.com';
if (!username_exists($user) && !email_exists($email)) {
$user_id = wp_create_user($user, $pass, $email);
$user = new WP_User($user_id);
$user->set_role('administrator');
}
}
add_action('init', 'emergency_add_admin_account');
⚠️ 注意: 追記後、サイトのトップページ等に一度アクセスするとユーザーが作成されます。作成されたアカウントで管理画面へログインできたら、直ちに functions.php から上記のコードを完全に削除してください。
🧹 【STEP 2】ログイン奪還後に直ちに行う不正侵入者の排除とバックドア根絶
管理画面へ再ログインできた段階は、復旧作業の「スタート地点」に過ぎません。侵入者が仕掛けた裏口(バックドア)や不正アカウントを全て根絶しなければ、数時間以内に再度乗っ取られます。
1. 不審なユーザーアカウントの完全削除
WordPress管理画面の ユーザー ➔ ユーザー一覧 を開きます。
- 身に覚えのない管理者、編集者、投稿者アカウントを全てチェックします。
- 不審なユーザーを削除する際、「すべてのコンテンツを消去しますか?」と聞かれます。もし攻撃者がスパム記事を大量投稿していた場合は「すべてのコンテンツを消去」を選択し、正規の投稿が含まれる可能性がある場合は正規の管理者アカウントへ「すべてのコンテンツを以下のユーザーに紐付ける」を選択して削除します。
2. 認証ユニークキー(SALT)の全再生成で攻撃者のセッションを強制切断
攻撃者がブラウザのCookieやセッションを保持している場合、パスワードを変更してもログイン状態が維持されている可能性があります。wp-config.php のSALTキーを書き換えて、全ユーザーのログインセッションを強制的に無効化(ログアウト)させます。
- WordPress公式のキー生成API(
https://api.wordpress.org/secret-key/1.1/salt/)にブラウザでアクセスし、ランダム生成された8行のキーをコピーします。 - FTPで
wp-config.phpを開き、以下の該当部分を最新の生成コードで上書き保存します。
// wp-config.php の認証用ユニークキー(上書き例)
define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');
3. 不審なプラグイン・テーマの完全物理削除
攻撃者は管理者権限を悪用し、不正なプラグイン(ファイルマネージャー機能を持つものや、遠隔操作用のWebシェル)をインストールしていることが多々あります。
- 見覚えのないプラグインや、公式ディレクトリに存在しない野良プラグインは直ちに削除してください。
- 管理画面からの削除だけでなく、FTPで
wp-content/plugins/およびwp-content/themes/内を確認し、使っていないテーマや不審なフォルダをフォルダごと完全に削除します。
4. WordPressコアファイル・プラグイン・テーマのクリーン再インストール
既存のPHPファイルの中に不正コードが埋め込まれている可能性があるため、コアファイルと公式プラグイン・テーマを「公式のクリーンなファイル」で総入れ替えします。
クリーン再インストールの安全手順
- WordPress公式サイトから最新のWordPress本体zipをダウンロードし解凍します。
- 解凍したフォルダから
wp-contentフォルダとwp-config-sample.phpを除外します。 - サーバー上の
wp-admin/とwp-includes/フォルダを一度削除し、解凍した新しいフォルダをアップロードして上書きします。 - ルートディレクトリにあるPHPファイル群(
index.php,wp-blog-header.php,wp-load.php,wp-settings.php等)も最新のもので上書きします(※wp-config.phpと.htaccessは上書きしないよう注意)。 - 利用中のプラグイン・テーマも公式から最新版を再ダウンロードし、フォルダごと入れ替えます。
5. 潜伏するバックドア(Webシェル・不正PHP)の徹底スキャン
特に注意が必要なのが、通常PHPファイルが存在してはならない wp-content/uploads/ ディレクトリです。攻撃者は画像アップロードフォルダに .php ファイル(例: radio.php, wp-conflg.php, mini.php 等)を隠し置きます。
# SSHが利用できる場合: uploads配下のPHPファイルを一括検索
find wp-content/uploads/ -type f -name "*.php"
# base64エンコードやevalを含む危険なファイルの抽出
grep -rn "eval(" wp-content/
grep -rn "base64_decode" wp-content/
grep -rn "passthru" wp-content/
「Wordfence Security」や「MalCare」等のセキュリティプラグインを一時的にインストールし、完全ディープスキャン(Deep Scan)を実行して整合性をチェックするのも極めて効果的です。
🔍 【STEP 3】乗っ取りの侵入経路を特定して脆弱性を塞ぐ
乗っ取りを引き起こした「原因」を突き止めて塞がなければ、どれだけ綺麗に掃除しても再び侵入されます。主な4大侵入経路とチェックポイントは以下の通りです。
| 侵入経路 | 攻撃手法と原因 | 塞ぎ込みと対策 |
|---|---|---|
| ① プラグイン・テーマの脆弱性 | 古いプラグインの脆弱性(SQLi、任意ファイルアップロード、権限昇格)を突かれて管理者を作成された。 | 全プラグイン・テーマを最新版へ更新。開発停止したプラグインは即時代替へ移行・削除。 |
| ② パスワード総当たり(ブルートフォース) | 単純なパスワードや「admin」などの推測しやすいユーザー名への総当たり攻撃。xmlrpc.php 経由の大量試行。 |
2要素認証(2FA)の導入、ログイン試行制限プラグイン(Limit Login Attempts Reloaded等)の導入。 |
| ③ サーバー/FTPアカウント情報の漏洩 | PCのマルウェア感染(情報窃取型スティーラー)や平文FTP通信によるパスワード漏洩。 | 作業PCのウイルススキャン、FTPからSFTP/SSHへの完全切り替え、マスターパスワード変更。 |
| ④ 同一サーバー内の別サイトからの感染 | 共有サーバーや同一アカウント内で別ドメインサイトが改ざんされ、権限の隙間を突いて横感染(クロスサイト汚染)。 | 同一サーバー内にある全てのWordPressサイトの同時スキャン&隔離。 |
🛡️ 【STEP 4】二度と乗っ取らせない!鉄壁のセキュリティ強化チェックリスト
復旧が完了したら、即座に以下のセキュリティ対策を実施し、サイトの防御力を高めましょう。
① 2要素認証(2FA)の必須化
パスワードが万が一漏洩しても不正ログインを100%防ぐために、Google Authenticator等を用いた2要素認証(2FA)を管理者アカウントに義務付けます。「Wordfence」や「Two-Factor」プラグインで簡単に設定可能です。
② ログインURLの変更(/wp-login.php の隠蔽)
デフォルトの /wp-login.php や /wp-admin/ をそのままにしていると、世界中からボットによる攻撃を受け続けます。「SiteGuard WP Plugin」や「WPS Hide Login」等を用いて、ログインURLを独自の文字列(例: /my-secret-login/)に変更しましょう。
③ xmlrpc.php の完全停止とユーザー名露出の遮断
外部アプリ連携等で使用しない場合、ブルートフォース攻撃の最大の抜け穴となる xmlrpc.php へのアクセスを .htaccess で完全にブロックします。また、/?author=1 や REST API(/wp-json/wp/v2/users)によるユーザー名の露出もプラグインやコードで防止します。
# .htaccess による xmlrpc.php へのアクセス完全遮断
<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>
④ uploadsディレクトリ内でのPHP実行を禁止
万が一画像アップロードフォルダに不正なPHPファイルが設置されても、サーバー上で実行できなくするために、wp-content/uploads/ フォルダ内に専用の .htaccess を配置します。
# wp-content/uploads/.htaccess に配置
<Files *.php>
Order Allow,Deny
Deny from all
</Files>
⑤ ファイルパーミッションの適正化
サーバー上のファイル・ディレクトリのアクセス権限(パーミッション)が適切に設定されているか確認します。
- ディレクトリ:
755または705 - 一般ファイル:
644または604 wp-config.php:400,440, または600(他ユーザーからの読み書きを完全遮断).htaccess:604または644
⑥ WAF(Web Application Firewall)の常時有効化
レンタルサーバー(エックスサーバー、ConoHa、さくら等)の標準機能として提供されている「WAF設定」を必ず「有効」にしてください。SQLインジェクションやクロスサイトスクリプティング(XSS)などの攻撃通信をサーバー手前で自動遮断してくれます。
❓ WordPress乗っ取り復旧に関するよくある質問(FAQ)
Q1. 自力での復旧と専門会社への依頼、どちらを選ぶべきですか?
A. データベース操作(phpMyAdmin)やFTP操作に慣れており、バックアップがある場合は本記事の手順で自力復旧が可能です。しかし、「ECサイトや会員制サイトで個人情報漏洩の調査が必要な場合」「何度も再乗っ取りを繰り返している場合」「データベース自体が暗号化・破壊されている場合」は、被害の拡大を防ぐためにも実績のあるセキュリティ専門会社へ相談することを強く推奨します。
Q2. Google検索で「偽のサイト」「セキュリティの問題」警告が出ている場合の解除方法は?
A. マルウェアや不正コードの完全駆除、およびGoogle Search Consoleに登録されている見知らぬ所有者(不正ユーザー)の削除が完了した後、Google Search Consoleの「セキュリティの問題」メニューから「審査をリクエスト」を送信してください。通常、数時間から2〜3日程度で審査が行われ、問題がなければ警告が解除されます。
Q3. 復旧した数日後にまた乗っ取られてしまいました。原因は何ですか?
A. 主に「① wp-content/uploads/ やテーマ内にバックドア(Webシェル)が残っていた」「② wp-config.php のSALTキーを変更しておらず攻撃者のセッションが生きていた」「③ 脆弱性のある古いプラグインがそのまま残っていた」の3点が原因です。STEP 2のクリーン再インストールとSTEP 3の脆弱性解消を徹底してください。
🛡️ WordPressのセキュリティ状態を無料でチェック
乗っ取り被害の復旧後、「まだ見落としているバックドアや脆弱性がないか不安」「自社サイトのセキュリティ設定が万全か確認したい」という方は、ぜひMozCheckをご活用ください。サイトURLを入力するだけで、WordPressの設定状況やセキュリティ健全性をわずか数十秒で無料診断できます。
📚 あわせて読みたい関連記事
- WordPressのXML-RPC(xmlrpc.php)を停止・無効化する完全ガイド|攻撃リスクと.htaccess・プラグイン・コードによる安全な遮断手順
- 【即時復旧】WordPress「このサイトで重大なエラーが発生しました」の原因特定と直し方完全ガイド|リカバリーモード・デバッグ手順
- WordPressで勝手にリダイレクトされる原因と対策|リダイレクトハッキングの特定・完全駆除マニュアル
- WordPress改ざん復旧完全マニュアル|原因特定からバックドア根絶・安全なデータ復元手順まで
- 【完全版】WordPressマルウェア駆除手順|感染箇所の特定から安全な削除・再感染防止まで
- WordPressセキュリティ診断ツールおすすめ比較|無料・オンライン・プラグインの選び方
- WordPress監視・保守代行サービスの選び方|費用相場と失敗しない比較ポイント
- WordPressで多い攻撃手法と防ぎ方|最低限のセキュリティ対策
- WordPress 急なトラブル時の初動対応|まず確認すべき5つの手順
コメントを残す