WordPressが乗っ取られたらまず確認すること|症状チェックリストと復旧手順

WordPressセキュリティ

Hikosachi 開発チームです。

「サイトを開いたら知らないページに飛ばされる」「見覚えのない管理者ユーザーがいる」——WordPressサイトの乗っ取り(改ざん)は、気付いたときにはすでに被害が広がっていることが少なくありません。

この記事では、乗っ取りが疑われるときにまず確認することと、応急処置から復旧・再発防止までの手順を、順番どおりに進められるチェックリストとしてまとめました。

こんな症状があれば乗っ取りを疑ってください

  • サイトや検索結果のリンクから、海外の通販サイト・ギャンブルサイト等へ勝手に転送される(スマホからだけ、検索エンジン経由だけ、といった条件付きのことも多い)
  • 管理画面の「ユーザー」に、見覚えのない管理者アカウントがある
  • 書いた覚えのない投稿・固定ページが増えている、または既存ページに不審なリンクが埋め込まれている
  • Google Search Console の「セキュリティの問題」に警告が出ている、検索結果に「このサイトはハッキングされている可能性があります」と表示される
  • サーバー会社から「不審なファイル」「迷惑メールの大量送信」等の連絡が来た
  • 管理者パスワードで急にログインできなくなった

ひとつでも当てはまる場合は、以下の順番で落ち着いて対応してください。
いきなりファイルを削除したり、WordPressを再インストールしたりするのは避けてください。

原因の手がかりまで消えてしまい、同じ穴から再び侵入される原因になります。

ステップ1:被害の拡大を止める(応急処置)

  1. 現状のバックアップを取る
    改ざんされた状態のままでよいので、ファイル一式とデータベースを保存します。原因調査と、万一の作業ミスからの復旧に使います。
  2. 必要ならメンテナンス表示にする
    訪問者を不審なサイトへ転送している場合は、サーバーの管理画面でサイトを一時的に非公開にする、またはメンテナンスページに切り替えます。
  3. パスワードをすべて変更する
    WordPressの全管理者ユーザーに加えて、サーバー管理画面・FTP/SFTP・データベースのパスワードも変更します。WordPressのパスワードだけ変えても、別の経路の認証情報が漏れていれば再侵入されます。
  4. 不審なユーザーを削除する
    見覚えのない管理者ユーザーは、削除前に作成日時とメールアドレスを控えてから削除します。

ステップ2:どこを改ざんされたかを確認する

確認したい場所

  • wp-content/uploads/ 配下の PHP ファイル
    本来は画像などのメディアしか置かれない場所です。ここに .php ファイルがあれば、Webシェル(遠隔操作用の不正プログラム)の可能性が高いです。
  • 最近更新されたファイル
    サーバーのファイルマネージャーやFTPで更新日時順に並べ、自分が作業していない日時に変更されたファイルを探します。特に wp-config.php、.htaccess、テーマの functions.php、header.php は改ざんされやすい箇所です。
  • .htaccess のリダイレクト設定
    検索エンジンやスマホからのアクセスだけを外部へ転送する記述が追加されていないか確認します。
  • 見覚えのないプラグイン・テーマ
    インストールした覚えのないものが無いか、管理画面とファイル(wp-content/plugins/、wp-content/themes/)の両方で確認します。
  • サーバーのアクセスログ
    改ざんされた日時の前後に、どのURLへどんなリクエストがあったかを確認すると、侵入経路の手がかりになります。

侵入経路としてよくあるもの

  • 更新していないプラグイン・テーマの既知の脆弱性(最も多い原因です)
  • 推測されやすいパスワードへの総当たり(wp-login.php や xmlrpc.php への大量のログイン試行)
  • 同じサーバー内の別サイトや、使っていない古いWordPressからの感染
  • パソコンのウイルス感染などによる、FTPやサーバー管理画面の認証情報の漏えい

ステップ3:復旧する

  1. 改ざん前のバックアップがあれば、それを基準に戻すのが最も確実です。
    ただし、戻した直後は侵入時と同じ脆弱性が残っているため、すぐにステップ4の対策を行ってください。
  2. バックアップが無い場合は、WordPress本体を「ダッシュボード → 更新 → 再インストール」で上書きし、プラグイン・テーマも公式配布元から入れ直します。uploads 配下の PHP ファイルなど、不正なファイルは個別に削除します。
  3. wp-config.php の認証用キー(ソルト)を新しい値に置き換えます。
    公式の生成ページ(https://api.wordpress.org/secret-key/1.1/salt/)で作れます。これにより、ログイン中のセッションがすべて無効になります。
  4. Google Search Console で警告が出ていた場合は、修正後に「審査をリクエスト」します。

自力での判断が難しい場合や、顧客情報を扱うサイトの場合は、無理をせずアイネクシオへの相談も検討してください。

ステップ4:再発を防ぐ

  • WordPress本体・プラグイン・テーマを常に最新に保つ(自動更新の活用を検討する)
  • 使っていないプラグイン・テーマは無効化ではなく削除する
  • 管理者ユーザーは必要最小限にし、推測されにくいパスワードと2段階認証を使う
  • 定期的なバックアップを、サーバーとは別の場所にも保存する
  • ログイン画面や xmlrpc.php への攻撃を、攻撃元IPの段階で遮断する

最後の「攻撃元IPの段階で遮断する」は、Hikosachi が得意とする部分です。
Hikosachi Protector は、ハニーポットや導入サイトから集めた攻撃元IPのリストを使い、攻撃者がログイン画面や脆弱性を探しに来た時点でアクセスを遮断します。

実際に観測している攻撃の傾向は日次の脅威レポートでも毎日公開しています。

Hikosachi LogoHikosachi 防御中