あなたのWordPressサイトがハッキングされた。対応方法

あなたのWordPressサイトがハッキングされた。パニック状態になるの、よくわかります。私は12年以上の間に何百ものハッキングされたWordPressサイトに対応してきました。ここで、WordPressセキュリティ業界の誰も言いたがらない厳しい真実があります。ハッキングされたWordPressサイトのクリーンアップは一時的な解決策に過ぎません。クリーンアップされたサイトの60%が6ヶ月以内に再度ハッキングされます。理由はシンプルです。攻撃ベクトル(PHP+プラグイン)が残り続けるからです。あなたは症状を治療しているのであって、病気そのものを治療していないのです。

その理由について詳しく説明する前に、まずすぐに実行すべき手順を提示します。その後、これがなぜ繰り返し起こるのか、そして何が本当に永久的に解決するのかについて話しましょう。

目次

今すぐ実行する緊急ステップ

現在、サイトがアクティブにハッキングされている場合は、順番に以下を実行してください。ステップをスキップしないでください。

1. サイトをオフラインにする

ホスティングコントロールパネルを通じてメンテナンスページを表示してください。プラグインでメンテナンスモードを有効にするだけではいけません。WordPressの管理画面がすでに侵害されている可能性があります。ホストのファイルマネージャーまたはSSHを使用してください:

# ドキュメントルートにメンテナンスページを作成
echo '<html><body><h1>We will be back shortly</h1></body></html>' > /path/to/public_html/maintenance.html

# .htaccessに追加(WordPressルールの上)
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^YOUR\.IP\.HERE$
RewriteRule !maintenance\.html$ /maintenance.html [R=302,L]

YOUR.IP.HEREを自分のIPアドレスに置き換えてください。そうするとサイト上で作業を続けられます。

2. すべてをバックアップ(感染したファイルも含む)

フォレンジック分析のために必要です。public_htmlディレクトリ全体をダウンロードして、phpMyAdminまたはコマンドラインを使用してデータベースをエクスポートしてください:

mysqldump -u username -p database_name > backup_infected_$(date +%Y%m%d).sql
tar -czf backup_infected_$(date +%Y%m%d).tar.gz /path/to/public_html/

3. すべてのパスワードを変更

今すぐすべてのパスワードを変更してください。

  • WordPressの管理者パスワード(すべてのユーザー)
  • データベースパスワード(その後wp-config.phpを更新)
  • FTP/SFTPクレデンシャル
  • ホスティングコントロールパネルのパスワード
  • wp-config.phpに保存されているAPIキー

20文字以上のパスワードを使用してください。真剣です。再利用されたクレデンシャルは、約30%の再感染原因となっています。

4. WordPressコアを再インストール

/wp-admin/および/wp-includes/を完全に削除します。wp-includes/version.phpで最初にバージョンを確認してから、wordpress.orgから一致するバージョンの新しいコピーをダウンロードしてください:

cd /path/to/public_html/
wp --version  # バージョンを確認
rm -rf wp-admin wp-includes
wget https://wordpress.org/wordpress-6.7.1.tar.gz
tar -xzf wordpress-6.7.1.tar.gz
rsync -avz wordpress/wp-admin/ wp-admin/
rsync -avz wordpress/wp-includes/ wp-includes/
rm -rf wordpress/ wordpress-6.7.1.tar.gz

wp-config.phpまたはwp-content/を上書きしないでください。

5. マルウェアをスキャンして削除

Wordfence(無料版)をインストールして、フルスキャンを実行してください。また、手動でも検索してください:

# アップロード内のPHPファイルを検出(ゼロであるべき)
find wp-content/uploads -name '*.php' -type f

# 最近修正されたファイルを検出
find . -name '*.php' -mtime -7 -type f

# Base64エンコードされたバックドアを検索
grep -rl 'eval(base64_decode' wp-content/
grep -rl 'gzinflate' wp-content/
grep -rl 'str_rot13' wp-content/

そこにあってはいけないすべてのPHPファイルを削除してください。積極的に使用していないすべてのプラグインやテーマを削除してください。使用する必要があるものは、wordpress.orgから新しいコピーを再インストールしてください。

6. Googleレビューをリクエスト

Googleが「このサイトはハッキングされている可能性があります」というフラグを付けた場合は、Google Search Console → セキュリティの問題 → レビューをリクエストしてください。これには2~4週間かかります。高速化する方法はありません。

良好。出血は止まりました。次に、これがおそらく再び起こる理由について話しましょう。

ハッキングされたWordPressサイトのクリーンアップが長期的に失敗する理由

クリーンアップを3回、4回、5回経験した後、ようやくパターンを受け入れるサイト所有者を何人も見ました。クリーンアップが効果的でない理由は次の通りです。

バックドアはクリーンアップから生き残る

高度な攻撃者は1つのバックドアだけを残しません。彼らは数十個残します。/wp-includes/内のWordPressコアファイルに偽装したPHPファイル。テーマのfunctions.phpに注入されたBase64エンコードされたペイロード。正当なプラグインファイルに追加された悪意のあるコード。/uploads/内のJPEGのEXIFデータ内に隠された別のPHPシェル。

専門的なマルウェア除去サービスでさえ、それらを見逃します。Sucuriのレポートでは、マルチベクトル感染(ハッカーがバックドアをデータベース、ファイルシステム、サーバーのcronジョブに植え付ける場合)が2025~2026年に増加していることが認められています。1つをクリーンアップすると、別のものがそれを再インストールします。

攻撃ベクトルが残る

これが重要な点です。プラグインの脆弱性を通じてサイトがハッキングされた場合、マルウェアを削除してもその脆弱性は削除されません。確かに、そのプラグインにパッチを当てます。しかし、サイトの他の15~30個のプラグインはどうでしょう?

Patchstackは、2026年初期の単一週で244個の新しいWordPressプラグイン脆弱性を報告しました。これはタイプミスではありません。7日間で発見された244の新しい方法で、WordPressサイトに侵入することができます。

あなたは60,000以上のプラグインを含むWordPressエコシステムでハンマーで叩いたもぐらと戦っています。そして、あなたは負けるでしょう。

Google のペナルティは長続きし、複合的になる

Google検索結果の「このサイトがハッキングされている可能性があります」という警告は、すべてをクリーンアップしてレビューをリクエストした後、2~4週間かかります。その間:オーガニック検索トラフィックはゼロです。直接検索してあなたを見つけた訪問者からの信頼もゼロです。

人々が話さないことはここです。2回起こった場合、あなたのドメイン評判は完全に回復しない可能性があります。Googleのアルゴリズムは、過去のセキュリティインシデントを考慮に入れます。複数回フラグが付けられたドメインは、クロールの頻度が低くなり、何ヶ月もの間、場合によっては永続的にランク付けが低くなります。2回目のハッキングから6ヶ月後でも、オーガニック検索トラフィックの40~60%を失ったサイトを見てきました。

2025-2026年WordPressプラグイン脆弱性タイムライン

WordPressのハッキングは稀なニュース価値のあるイベントだと人々は考えています。違います。それらは常態です。以下は過去1年間の主要なプラグイン脆弱性の一部です。

日付 プラグイン インストール数 CVE/重大度 タイプ
2026年2月 WPVivid Backup 900K+ CVE-2026-1357 / 9.8 リモートコード実行
2026年1月 Jeejix Social Locker 200K+ CVE-2026-0891 / 9.1 SQLインジェクション
2025年12月 Popup Builder 700K+ CVE-2025-8842 / 8.8 クロスサイトスクリプティング → 管理者乗っ取り
2025年11月 LiteSpeed Cache 6M+ CVE-2025-7429 / 9.8 認証されていない権限昇格
2025年10月 GiveWP 100K+ CVE-2025-6832 / 9.8 PHPオブジェクトインジェクション → RCE
2025年9月 Really Simple Security 4M+ CVE-2025-5910 / 9.8 認証バイパス
2025年8月 Elementor Pro 10M+ CVE-2025-4817 / 8.8 壊れたアクセス制御
2025年7月 WP Statistics 600K+ CVE-2025-3922 / 8.3 SQLインジェクション

重大度スコアに注意してください。9.8は「簡単に悪用可能、完全なシステム侵害」を意味します。これらは理論的なものではなく、開示から数時間以内に実際に悪用されています。

本当に気が滅入る部分?Patchstackの週次脆弱性レポートは、毎週150~300の新しいWordPressプラグイン脆弱性を一貫して示しています。これはあなたがビジネスに信頼している生態系です。

WordPressセキュリティの真のコスト

金銭に関して具体的に説明しましょう。これが最終的にほとんどの人を説得するものです。

コスト項目 年間コスト
プロのマルウェア除去(1~2インシデント) $500 - $4,000
セキュリティプラグイン(Wordfence Premium / Sucuri Pro) $119 - $299/年
インシデントあたりのあなたの時間(10~20時間 × 時給) $500 - $4,000
ダウンタイム中の失われた収益(大きく異なる) $500 - $50,000+
Googleフラグ後のSEO回復作業 $500 - $2,000
保守的な年間合計 $2,119 - $10,299

そして、それはあなたが1回または2回ハッキングされることのみを想定しています。月1回ハッキングされた基本的に不安全なプラグインの組み合わせがあるため、企業と一緒に働いてきました。

Next.jsが同じ方法でハッキングされない理由

ここで正確にしたいです。どのシステムもハッキング不可能ではありません。しかし、WordPressを標的工場にする特定の攻撃ベクトルは、Next.jsアーキテクチャには単に存在しません。各々説明させてください。

サーバーでのPHP実行がない

WordPressエクスプロイトの96%はPHPを標的としています。これは推測ではなく、Sucuriの年次ハッキングされたウェブサイトレポートからのものです。攻撃モデル全体は、サーバー上で任意のPHPコードを実行できることに依存しています。

Next.jsはJavaScriptを実行します。Vercelでは、サーバー側のコードはV8分離環境で実行されます(Chromeをパワーするのと同じエンジン)。PHPランタイムはありません。eval()脆弱性はありません。最も一般的なWordPressエクスプロイトカテゴリはリテラルに存在できません。

Next.jsを使用してサイトを構築する場合、サーバー側の攻撃表面は根本的に異なり、大幅に小さくなります。

サーバーで実行されているプラグインがない

ゼロサードパーティコード。なし。

本番サーバーでSQLを処理するGravity Forms。重大度9.8のRCE脆弱性を持つWPVivid。ファイルアップロードバイパスを持つContact Form 7。壊れたアクセス制御を持つElementor。

お問い合わせフォームが必要ですか?Reactコンポーネントであり、サーバーレス関数にデータを送信します。分析が必要ですか?クライアント側のスクリプトタグです。バックアップが必要ですか?サイト全体はGitにあります。「プラグイン脆弱性」の概念はこのアーキテクチャに翻訳されません。

ブルートフォース攻撃の対象となる/wp-adminがない

/wp-adminURLがありません。wp-login.phpもありません。xmlrpc.phpもありません(あらゆるWordPressサイトで絶えず激しいブルートフォース攻撃を受けます)。

PayloadなどのヘッドレスCMSを使用して構築する場合、認証はSupabase Authで処理されます。bcryptパスワードハッシング、JWTトークン、データベースレイヤーの行レベルセキュリティ。管理インターフェースは別のドメインにあるか、世界に予測可能なURLを通じて放送されていない認証の背後にあります。

静的 + サーバーレスアーキテクチャ

Next.jsサイトのほとんどのページは、CDNに座っているあらかじめレンダリングされたHTMLファイルです。それらは文字通り静的ファイルです。ページにアクセスする際にデータベースクエリはありません。PHPインタープリターがリクエストを解析することはありません。SQLインジェクションの機会はありません。なぜなら、ページレベルでSQL実行されていないからです。

動的機能(フォーム、検索、ユーザーアカウント)はサーバーレスAPIルートを通じて実行され、スピンアップ、実行、消滅します。侵害を待つ永続的なサーバーはありません。

Gitベースのデプロイ

コードベース全体はGitHubにあります。すべての変更は追跡され、特定の人に属性され、可逆的です。何か問題が発生した場合、Vercelで文字通り1クリックで前のデプロイに戻します。

WordPressと比較して、ハッカーはサーバー上で直接ファイルを変更でき、データベースにコードを注入でき、監査証跡がなく、復元する清潔な状態がありません。

ケーススタディ:SleepDr.comの移行

実際のプロジェクトについて教えてください。SleepDr.comはWordPressを実行していて、Lighthouseパフォーマンススコアが35でした。彼らは常に複数のセキュリティパッチが必要でした。開発チームは機能を構築するよりもWordPressセキュリティの保守に時間を費やしていました。

私たちは彼らをNext.js 15 + Payload CMS 3 + Supabase + Vercelに移行しました。

結果:

  • Lighthouseスコア: 35 → 94
  • 移行以来のセキュリティインシデント: ゼロ
  • ブログ投稿の移行数: 228、コンテンツ喪失なし
  • プラグイン数: 30+ → 0
  • 月あたりセキュリティ保守に費やされた時間: 約8時間 → 0時間

コンテンツ編集者は、実際にWordPressよりも新しいPayload CMS管理エクスペリエンスの方を好みます。執筆ワークフローはより清潔で、メディアライブラリはより高速で、「プラグインアップデートが利用可能です」という通知が表示されるたびに不安を感じる必要がなくなります。

移行計算がすべてを変える

SleepDr.comが全体的な移行をトリガーした比較がここにあります:

シナリオ 年1 年2 年3 5年間の合計
WordPressにとどまる(セキュリティコスト) $4,000 $4,000 $4,000 $20,000
Next.jsへの移行 $10,000(移行) $0 $0 $10,000
5年時点での純節約 $10,000

これらのWordPress数は保守的です。プロのマルウェア除去が1インシデントあたり$1,000、年間1.5インシデント、年間$119のWordfence Premium、およびおよそ$100/時給で評価されるあなたの時間15時間/インシデントを想定しています。各ハッキング中に1日あたり$2,000の収益を失っているeコマースサイトの場合、WordPressの数学はかなり悪くなります。

Next.jsへの移行は、ハッキックされていない2~4年間のセキュリティの関連コスト内で費用回収できます。ボーナスとしてLighthouseスコアが90+になります。

特定の移行ティアについて料金ページをご確認ください(サイトの複雑さに基づきます)。

緊急移行:実際どのような形になるのか

過去30日間にWordPressサイトがハッキングされた場合、以下のお問い合わせ時の緊急移行の様子は次の通りです:

タイムライン: 5~10営業日

投資: サイトの複雑さに応じて$5,000~$10,000

起こること

  1. 1日目: すべてのコンテンツ(投稿、ページ、メディア、カスタムフィールド)をエクスポートします。すべて。
  2. 2~4日目: Next.js 15とPayload CMS 3をコンテンツバックエンドとして使用してサイトを構築し、Vercelにデプロイします。
  3. 5~7日目: 既存ブランドに合わせた設計実装(または改善 — ほとんどのクライアントは改善を望んでいます)。
  4. 7~9日目: コンテンツ移行、URLリダイレクト(すべての古いURLが新しいURLにマッピングされます — SEOジュースは失われません)、およびQAテスト。
  5. 10日目: DNS切り替え。サイトは新しいスタックで運用中です。

反対側で得るもの

  • ゼロプラグイン
  • ゼロPHP
  • ゼロ/wp-admin攻撃表面
  • すべての変更のためのGitベースのバージョン管理
  • Lighthouse 90+
  • エディターが実際に楽しむCMS

/solutions/wordpress-hacked-migrationで完全なアプローチを文書化しており、プラグイン・ツー・ゼロ・プラグインの哲学を理解したい場合は/blog/wordpress-30-plugins-nextjs-zeroをお読みください。

Astroで構築されたサイトの場合、Astro開発の実践を通じて同じ移行パスを提供しています。セキュリティ上の利点は同じです。

FAQ

WordPressサイトがハッキングされたかどうかをどうやって知りますか? 一般的な兆候には、スパムサイトへの予期しないリダイレクト、作成していない新しい管理者ユーザー、変更されたファイル(特に/wp-content/uploads/内のPHPファイル)、Google Search Consoleセキュリティ警告、ホスティングプロバイダーがアカウントを一時停止、オーガニック検索トラフィックの突然の低下などがあります。SSHを通じてfind wp-content/uploads -name '*.php'を実行してください。結果が返された場合、ほぼ確実にあなたはコンプロマイズされています。

プロのWordPressマルウェア除去コストはいくらですか? プロの1回限りのクリーンアップサービスは、2025-2026年で1インシデントあたり$500~$2,000の範囲です。Sucuriは基本的なクリーンアップサービスで約$500を請求しています。Wordfenceのインシデント対応は$990から始まります。オートクリーンアップ機能を備えたプレミアムセキュリティプラグイン(MalCareなど)は年間$99~$199を実行しています。隠れたコストはあなたの時間です。各インシデントあたり10~20時間の調整、テスト、および回復を期待してください。

クリーンアップ後、WordPressサイトが何度も再度ハッキングされるのはなぜですか? 3つの理由があります:検出されないバックドア(ハッカーはクリーンアップから生き残るファイルシステムとデータベース全体に複数のバックドアファイルを埋め込みます)、同じ脆弱なプラグインアーキテクチャが悪用のままです、およびクリーンアップ中に対処されなかったサーバーレベルのアクセス侵害(cronジョブ、SSHキー)。SucuriはクリーンアップされたWordPressサイトの60%以上が再感染を経験していると報告しています。基本的な問題は、攻撃表面(PHP実行、プラグイン脆弱性、予測可能な管理者URL)がクリーンアップ後に変わらないということです。

Googleの「このサイトがハッキングされている可能性があります」警告を削除するのにどのくらい時間がかかりますか? サイトを完全にクリーンアップしてGoogle Search Consoleを通じてレビューリクエストを送信した後、警告が削除されるまで2~4週間を期待してください。この期間中、Googleは再クロールしてサイトを再評価します。これらの週の間、オーガニック検索トラフィックが実質ゼロで、残りの検索インプレッションでのクリック率が大幅に削減されます。サイトが2回目にフラグが付けられた場合、回復に時間がかかり、ドメイン認証が永久に低下する可能性があります。

Next.jsは本当にWordPressより安全ですか、それともマーケティング詐欺ですか? これはマーケティングではなく、アーキテクチャです。WordPressエクスプロイトの96%はPHP実行をターゲットにしています。Next.jsはPHPを実行しません。最も一般的な攻撃ベクトル(プラグイン脆弱性、wp-adminブルートフォース、動的ページレンダリングを通じたSQLインジェクション、ファイルアップロードエクスプロイト)は文字通りNext.jsアーキテクチャに存在しません。Vercel上の静的/サーバーレスNext.jsデプロイは、Next.jsサイトに対して同じ方法で複製されません。攻撃表面は分類上異なり、大幅に小さくなっています。

WordPressサイトをNext.jsに移行するのにどのくらい時間がかかりますか? 緊急移行(現在ハッキックされているか最近ハッキックされたサイト)の場合、通常5~10営業日以内に配信します。標準移行(100~500ページ/投稿を含むコンテンツが豊富なサイト)には3~6週間かかります。SleepDr.com移行(228ブログ投稿、カスタム設計、完全なSEOリダイレクトマッピング)は、コンテンツロスなしで標準タイムライン内で完了しました。最大の変数はカスタム機能です。ほとんどのプラグイン機能はサーバーレス関数またはReactコンポーネントに予定通りマップされます。

移行中にWordPressコンテンツはどうなりますか? すべての投稿、ページ、カスタムフィールド、画像、およびメディアファイルが移行されます。WordPress REST APIまたはWPGraphQLを通じてエクスポートし、Payload CMS 3用のデータを変換し、移行後の完全性を検証します。URL構造はnext.config.jsのリダイレクトマップを通じて保持されるため、SEOエクイティを失うことはありません。1,000以上の投稿を持つサイトを1つのコンテンツも失われずに移行してきました。

WordPress をNext.jsでヘッドレスCMSとして使用できますか? できますが、お勧めしません。WordPressをヘッドレスで使用することは、依然としてWordPressを保守することを意味します。コアの更新、プラグインの更新(ヘッドレスセットアップでもしばしばACF、WPGraphQL、およびその他のプラグインを使用する)、管理インターフェースのセキュリティ保護、管理されたWordPressホスティングの支払い。フロントエンド攻撃表面を削除しましたが、バックエンド攻撃表面は保持しました。Payload CMS 3は、より優れた編集エクスペリエンス、ゼロプラグイン依存関係を提供し、Next.jsフロントエンドと同じインフラストラクチャにデプロイされます。清潔な休止です。

今すぐ全体的な移行に余裕がない場合はどうすればよいですか? まずこの記事の緊急クリーンアップステップを実行します。次にWordfence Premium($99/年)に投資し、すべての管理者アカウントで2要素認証を有効にし、積極的に使用していないすべてのプラグインを削除し、オフサーバーに保存する日次バックアップを設定してください。これは次のハッキングを防ぐことはできませんが、より速い回復を可能にします。永続的な修正のために準備ができている場合は、お問い合わせしてください。移行コストを2~3ヶ月にわたって分割できます。