前回は、不正アクセスがあったかどうかを確認する話でした。
今回は、その先です。
管理画面に入れなくなった場合。
パスワードが通らない。ログインはできるが権限がない。あるいは、アカウントごと消えている。
そういう状態から、どうやって戻すかを書きます。

まず、落ち着いてください
慌てて操作すると、状況が悪くなります。
とくに、いきなりファイルを消したり、WordPressを入れ直したりしないでください。 原因が分からなくなりますし、直っていないのに直ったつもりになります。
順番があります。
1. 本当に乗っ取りか、確かめる
入れない理由は、乗っ取りとは限りません。
まず疑うこと
パスワードの入力ミス。 大文字と小文字、日本語入力の切り替え。意外とこれです。
ログイン画面を変更していた。 セキュリティのプラグインで、URLを変えていませんか。
プラグインやテーマの不具合。 更新の直後なら、その可能性があります。
試行回数の制限に引っかかっている。 何度か間違えると、一定時間ロックされます。
乗っ取りを疑う症状
次のような場合は、乗っ取りの可能性があります。
・パスワードを変えた覚えがないのに通らない
・パスワード再設定のメールが届かない
・ログインはできるが、メニューが減っている
・自分のアカウントが一覧から消えている
・「権限がありません」と表示される
・管理者用のメニューだけが出ない 「メールが届かない」は、とくに要注意です。 登録メールアドレスごと変えられている可能性があります。
2. 記録を取る
手を動かす前に、いまの状態を残してください。
画面を撮る。 エラーの表示、ユーザー一覧、おかしなところ。
日時を控える。 いつ気づいたか。
可能なら、ファイルとデータベースをまるごと控える。 復旧の前に、いまの状態をコピーしておきます。
面倒に思えますが、あとで「何が起きたか」を調べるときに、これしか手がかりがありません。
3. 復旧の経路を選ぶ
使える手段によって、方法が変わります。
データベースを触れる(phpMyAdmin) → 方法A
SSHでコマンドが使える(WP-CLI) → 方法B
FTPだけ使える → 方法C 上から順に、確実です。
方法A:データベースから直す
レンタルサーバーの管理画面から phpMyAdmin を開ける場合です。多くのサーバーで使えます。
先に、必ずバックアップを取る
データベースを直接触るので、間違えると戻せません。
phpMyAdmin の「エクスポート」から、まるごと控えてください。これをやらずに進めないでください。
ユーザーの表を開く
左の一覧から、データベースを選んで、`wp_users` という表を開きます。
注意点があります。 表の名前は `wp_` で始まるとは限りません。セキュリティのために別の文字にしていることがあります。
その場合は、`_users` で終わる表を探してください。
まず、中身を見る
直す前に、確認します。
user_login ユーザー名
user_email メールアドレス
user_registered 登録日時 知らないユーザーが増えていないか。 登録日時が最近のものがないか。
自分のメールアドレスが、別のものに変わっていないか。
ここで見つかったものは、控えておいてください。 まだ消しません。
パスワードを書き換える
自分の行の「編集」を開いて、`user_pass` の欄を探します。
長い文字列が入っています。これを消して、新しいパスワードを入れます。
そのとき、関数の欄で `MD5` を選んでください。
1. user_pass の値を消す
2. 新しいパスワードを、そのまま入力する
3. 左側の「関数」で MD5 を選ぶ
4. 実行 なぜ MD5 なのか。 WordPress は古い形式のパスワードも受け付けて、次にログインしたときに新しい形式へ自動で置き換えます。 応急処置として使えます。
ログインできたら、管理画面からもう一度パスワードを設定し直してください。
メールアドレスも直す
変えられていた場合は、`user_email` を自分のものに戻してください。
これを直さないと、次にパスワードを忘れたときに、また困ります。
権限が外されている場合
ログインはできるのに、メニューが少ない。 その場合は、権限の情報が書き換えられています。
`wp_usermeta` という表を開いてください。
`meta_key` が `wp_capabilities` になっている行を探します。自分の `user_id` のものです。
中身が、こうなっていれば管理者です。
a:1:{s:13:"administrator";b:1;} 違うものが入っていたら、上の値に書き換えてください。
ここでも注意です。 `wp_capabilities` の `wp_` の部分は、表の名前に合わせて変わります。表が `xyz_users` なら、`xyz_capabilities` になっています。
方法B:コマンドから直す
SSHでサーバーに入れて、WP-CLI が使える場合です。いちばん速い方法です。
まず、ユーザーを確認する
wp user list ユーザーの一覧と、それぞれの権限が表示されます。
知らない管理者がいないか、ここで分かります。
パスワードを変える
wp user update ユーザー名 --user_pass='新しいパスワード' これだけです。
アカウントごと消されている場合
新しく作れます。
wp user create 新しいユーザー名 メールアドレス --role=administrator --user_pass='パスワード' 権限を戻す
wp user set-role ユーザー名 administrator 方法C:FTPしか使えない場合
これは最後の手段です。 他の方法が使えないときだけにしてください。
やること
使っているテーマの `functions.php` を開いて、いちばん上に次の行を足します。
<?php
// 復旧用。実行したら、すぐ消すこと
add_action('init', function () {
$user = get_user_by('login', 'rescue_admin');
if (!$user) {
$id = wp_create_user('rescue_admin', 'ここに強いパスワード', 'メールアドレス');
if (!is_wp_error($id)) {
(new WP_User($id))->set_role('administrator');
}
}
}); 保存して、サイトを一度開いてください。 それで作られます。
そのユーザーでログインできたら、いますぐこのコードを消してください。
消し忘れると危ないです
このコードは、パスワードがファイルに書かれた状態です。
そして、置いたままにすると、誰でも同じユーザーで入れる状態になります。
ログインできた瞬間に消す。 ここを徹底してください。
入れたあと、すぐにやること
入れて安心してはいけません。 ここからが本題です。

1. ユーザーの一覧を見る
「ユーザー」を開いて、管理者を全部確認してください。
知らない管理者がいたら、まず権限を「購読者」に下げてください。 いきなり削除しないほうがいいです。その人が作った投稿やファイルの持ち主が分からなくなります。
そして、誰がいつ作ったかを控えてください。
2. パスワードを全部変える
WordPressの管理者だけではありません。
・WordPress の全ユーザー(とくに管理者)
・サーバーの管理画面
・FTP / SFTP
・データベース
・メールアカウント
・ドメイン管理の画面 どこから入られたか分からない以上、全部変えるしかありません。
3. ログイン状態を、全部切る
パスワードを変えても、すでにログインしている相手はそのまま残ります。
これを切るには、`wp-config.php` の中にある「認証用ユニークキー」を書き換えます。
WordPress.org が、書き換え用の値を自動で生成するページを用意しています。 「WordPress secret key」で検索すると出てきます。
そこで作られた8行を、`wp-config.php` の同じ部分と丸ごと入れ替えてください。
これをやると、自分も含めて全員がログアウトされます。 それが目的です。
define('AUTH_KEY', '...');
define('SECURE_AUTH_KEY', '...');
define('LOGGED_IN_KEY', '...');
define('NONCE_KEY', '...');
define('AUTH_SALT', '...');
define('SECURE_AUTH_SALT', '...');
define('LOGGED_IN_SALT', '...');
define('NONCE_SALT', '...'); 書き換える前に、このファイルのコピーを取ってください。
ここで終わりではありません
いちばん大事なことを書きます。
パスワードを変えて、入れるようになっても、それで解決ではありません。
入られた原因が、まだ残っています
相手がどうやって入ったのか。その経路が塞がっていなければ、また同じことが起きます。
そして多くの場合、戻ってこられるようにする仕掛けが置かれています。
ファイルの中に隠されていたり、データベースに書き込まれていたり。パスワードを変えただけでは、それは消えません。
だから、次を確認します
不審なファイルが置かれていないか。
正規のファイルが書き換えられていないか。
データベースに、おかしなものが入っていないか。
これが第3回の内容です。
やってはいけないこと
いきなり全部消す
原因が分からなくなります。 そして、消し漏れがあれば意味がありません。
WordPressを入れ直して終わりにする
本体を入れ直しても、テーマやプラグイン、アップロードしたファイル、データベースは残ります。
そこに仕掛けがあれば、直っていません。
古いバックアップを、確認せずに戻す
そのバックアップが、すでに感染している可能性があります。
いつから入られていたかが分からないうちは、戻す時期を決められません。第4回で詳しく書きます。
公開したまま放置する
改ざんされたサイトは、訪問者に被害を与えることがあります。
状況によっては、いったん公開を止める判断も必要です。
自分でやらない判断
次のような場合は、専門の業者に相談することを勧めます。
顧客の情報を預かっている。 会員情報、問い合わせの内容、購入履歴。
決済を扱っている。
復旧しても、また同じことが起きる。 経路が塞げていない状態です。
何をすればいいか分からない。 無理に触ると、状況が悪化します。
時間が経つほど、被害は広がります。 早めに判断してください。
まとめ
- 慌てて操作しない。 いきなり消したり入れ直したりしない
- まず、本当に乗っ取りかを確かめる(入力ミス、URL変更、ロックの可能性)
- 再設定メールが届かないなら、メールアドレスも変えられている可能性
- 手を動かす前に、記録を取る
- 復旧は、データベース → コマンド → FTP の順で確実
- データベースを触る前に、必ずエクスポートで控える
- 表の名前は `wp_` とは限らない
- パスワードは MD5 を選んで書き換える。ログイン後に設定し直す
- FTPだけの方法は最後の手段。入れたらすぐコードを消す
- 入れたあと、知らない管理者は削除せず、まず権限を下げる
- 関係するパスワードを全部変える(サーバー、FTP、DB、メール、ドメイン)
- 認証用ユニークキーを書き換えて、全員のログイン状態を切る
- 入れても終わりではない。 戻ってくる仕掛けが残っている可能性
入れるようになったのは、出発点です。
次回は、マルウェアや不審なファイルを見つける方法を書きます。どこを探すのか、何を見れば分かるのか。見た目に出ないものが多いので、探し方を知らないと見つかりません。

