「WordPressサイトがマルウェアに感染して不審なサイトへ飛ばされる」「Google検索で『改ざんの疑い』と警告が出た」「身に覚えのない管理者ユーザーが勝手に増えている」——このようなマルウェア感染事故は、サイト管理者にとって最も緊迫したトラブルの一つです。
マルウェアに感染したまま放置すると、訪問者に被害を及ぼすだけでなく、検索エンジンのインデックス削除(ブラックリスト登録)やドメインの信用失墜、さらにはサーバー停止措置など深刻な事態に発展します。
しかし、焦ってファイルを適当に削除したり上書きしたりすると、サイトが真っ白になって動かなくなったり、見落としたバックドア(裏口)から数日後に再感染したりする危険性があります。マルウェア駆除で最も重要なのは、「正しい手順に従い、感染箇所を特定して根本から安全に排除する」ことです。
本ガイドでは、WordPressがマルウェアに感染した際の【緊急初動対応】から、感染箇所の特定・スキャン手法、コアファイル・テーマ・プラグイン・データベースの完全駆除手順、再感染を防ぐセキュリティ強化策まで、専門知識がない方でも実践できるように分かりやすく徹底解説します。
🚨 【緊急】感染発覚時にまず行うべき初動対応チェックリスト
- 1. 現状のフルバックアップ(ファイル+データベース)を隔離取得する
※復元用ではなく「感染証跡の保全・調査用」として必ず手元にダウンロードしてください。 - 2. サイトへのアクセスを一時遮断する(メンテナンスモード or IP制限)
※訪問者への二次被害(マルウェア拡散や詐欺サイト誘導)と検索エンジンの評価低下を防止します。 - 3. 全ての認証情報(WordPress管理者、FTP/SSH、DB、レンタルサーバー管理画面)を変更する
※攻撃者に奪われた認証情報を無効化し、作業中のさらなる改ざんを防ぎます。
1. WordPressがマルウェア感染している代表的な症状・サイン
WordPressサイトがマルウェアに侵入・改ざんされた場合、以下のような特有の挙動や痕跡が現れます。自社サイトに当てはまる項目がないかチェックしてください。
| 感染の症状・サイン | 具体的な現象と危険性 |
|---|---|
| 不審なサイトへの自動リダイレクト | サイトへアクセスすると、海外の詐欺サイト、アダルトサイト、偽のセキュリティ警告画面へ勝手に転送される(リダイレクトハッキング)。※Google検索経由のアクセス時のみ転送される巧妙な手口も多数存在します。 |
| Google検索結果での警告表示 | Googleの検索結果に「このサイトは第三者によって改ざんされている可能性があります」や「このサイトにアクセスするとコンピュータに損害を与える可能性があります」と表示される。 |
| 見覚えのない管理者アカウント | WordPress管理画面の「ユーザー一覧」に、登録した覚えのない見知らぬ管理者権限(Administrator)ユーザーが追加されている。 |
| 不審なスパム記事・SEOスパムの大量生成 | カジノ、ブランド偽物、医薬品などのスパム記事やページが数千〜数万件勝手に投稿され、インデックスされている(SEOスパム・スパムインジェクション)。 |
| サーバー負荷の急増・メール大量送信 | サーバーCPU使用率が100%に張り付く、またはサーバー会社から「大量の迷惑メール(スパムメール)が送信されているためメール機能を停止しました」と通告される。 |
| PHPファイルに難読化コードが混入 | index.php や wp-config.php、テーマの functions.php の先頭に、eval(base64_decode(...)) や gzinflate() などの難読化された長い不審コードが追記されている。 |
2. 感染箇所と不正ファイルを特定する4つの調査・スキャン手法
マルウェアを漏れなく駆除するには、サイト内のどこが改ざんされ、どの不正ファイルが設置されているかを正確に特定する必要があります。以下の4つの手法を組み合わせて調査を行いましょう。
手法1:オンラインURLスキャナーで外部から診断
まずはサイト外部からアクセスして、既知のマルウェアスクリプトやブラックリスト登録状況を即座に確認します。
- MozCheck(無料診断ツール):URLを入力するだけで、WordPressのセキュリティ設定不備や脆弱性、SEO状況を総合スキャンします。
- Sucuri SiteCheck:外部からWebサイトをスキャンし、悪意あるリダイレクトスクリプトやGoogleブラックリスト判定を検出します。
手法2:WordPressセキュリティプラグインで内部スキャン
管理画面にアクセスできる場合は、専用のセキュリティプラグインを一時的に導入してファイルスキャンを実行します。
- Wordfence Security:WordPress公式リポジトリのコアファイル・テーマ・プラグインと現在のファイルを照合し、改ざんされたファイルや追加された不審ファイルをハイライト表示します。
- MalCare:サーバー負荷をかけずにディープスキャンを行い、難読化された複雑なバックドア(Webシェル)を高精度に検出します。
手法3:WP-CLIによる公式ファイル整合性チェック
SSH接続が可能なサーバー環境であれば、WP-CLIコマンドを用いてWordPress公式のチェックサム(ハッシュ値)と自サイトのファイルを一括照合できます。
# WordPressコアファイルの改ざん・未認証ファイルを検知
wp core verify-checksums
# プラグインの改ざんを検証(公式リポジトリ掲載プラグインのみ対応)
wp plugin verify-checksums --all
改ざんされたファイルや余計なファイルが存在する場合、エラーとともにファイルパスが出力されるため、感染箇所の特定が劇的に早くなります。
手法4:Linux/SSHコマンドによる不審ファイル探索
サーバーのターミナルから、最近更新されたファイルや、マルウェアによく使われる危険なPHP関数を検索します。
# 過去7日以内に変更・作成されたPHPファイルを検索
find . -type f -name "*.php" -mtime -7
# uploadsディレクトリ内に混入した危険な実行ファイル(PHPなど)を検索
find ./wp-content/uploads/ -type f -name "*.php*" -o -name "*.phtml" -o -name "*.ico"
# eval, base64_decode, shell_exec などの危険関数を含むファイルを検索
grep -rniE "(eval\s*\(|base64_decode|gzinflate|str_rot13|shell_exec|passthru)" ./wp-content/
3. 【完全実践】WordPressマルウェアを安全に完全駆除する5ステップ
マルウェア駆除において「見つかった怪しいファイルだけを手動で1つずつ消す」というやり方は絶対にNGです。マルウェアは複数箇所に巧妙なバックドア(侵入経路)を分散配置しているため、1箇所でも残ると数時間〜数日で元通りに再感染してしまいます。
確実に駆除するには、「公式のクリーンなファイルで完全に置き換える(総入れ替え)」手順を踏む必要があります。以下の5ステップに従って実行してください。
ステップ1:現状の隔離バックアップを保存する
作業を始める前に、現在の全ファイルとデータベース(SQLダンプ)を手元にダウンロードします。これは復旧用ではなく、万が一のデータ破損時の比較用・証拠保全用です。マルウェアが含まれているため、解凍してローカルPC上で不用意に実行しないよう隔離保管してください。
ステップ2:WordPressコアファイルをクリーン再配置する
WordPressの本体ファイル(wp-admin、wp-includes、およびルート直下のPHPファイル)を公式の未改ざんファイルに入れ替えます。
- WordPress日本語公式サイトから、現在使用しているバージョンと同じ(または最新)のクリーンなZIPファイルをダウンロード・展開します。
- サーバー上の
wp-admin/ディレクトリおよびwp-includes/ディレクトリを完全に削除します。 - 公式ZIPから展開した新しい
wp-admin/とwp-includes/をサーバーへアップロードします。 - ルートディレクトリにある
index.php、wp-login.php、wp-settings.phpなどのコアPHPファイルを公式のクリーンファイルで上書きします。(※wp-config.phpと.htaccessは上書きせず残します)
ステップ3:プラグイン・テーマを公式から新規再インストール
マルウェア感染の9割以上は、プラグインやテーマの脆弱性を突いて仕込まれます。既存のプラグイン・テーマフォルダ内には無数のバックドアが潜んでいる可能性が高いため、フォルダごと削除して公式から再ダウンロードするのが鉄則です。
- プラグイン(wp-content/plugins/):現在インストールしているプラグインの一覧をメモした後、
pluginsディレクトリ内の全フォルダを一旦削除。WordPress公式リポジトリまたは購入元から最新版を再ダウンロードして配置します。 - テーマ(wp-content/themes/):使用していない不要なテーマは全て削除します。親テーマは公式から再取得して差し替えます。子テーマ(自作カスタマイズ)がある場合は、
functions.phpや各テンプレートファイル内に不審なコード(evalや難読化文字列)が紛れ込んでいないか行単位で入念に目視点検します。
ステップ4:uploadsディレクトリ内の不正スクリプトを完全排除
画像やPDFなどのメディアファイルが保存される wp-content/uploads/ ディレクトリは、通常PHPファイルが存在してはならない場所です。攻撃者はこのフォルダ内に .php や .phtml、偽装した画像ファイル(拡張子は .jpg だが中身はPHPコード)を設置して実行させます。
wp-content/uploads/ディレクトリ内を検索し、存在するすべての.php,.phtml,.php5,.suspected等の実行ファイルを完全に削除します。uploads直下に意図しない.htaccessが置かれていないか確認し、不審な記述があれば削除します。
ステップ5:wp-config.php・.htaccessの点検とSALT(暗号化キー)再生成
ルート直下の重要設定ファイルを点検・初期化し、ログインセッションを強制リセットします。
- .htaccessの初期化:リダイレクトハッキングの多くは
.htaccessに悪意ある転送ルールが追記されています。一度中身を以下のWordPress標準設定に戻します。# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress - wp-config.phpの目視確認:データベース接続情報の直前や末尾に不審なPHPコードが埋め込まれていないか点検します。
- 秘密鍵(SALT)の再生成:WordPress公式ソルト生成APIにアクセスして新しいキーを発行し、
wp-config.php内のAUTH_KEYやLOGGED_IN_KEYなどの定義をすべて書き換えます。これにより、攻撃者が保持している可能性のある既存のログインCookieやセッションが全滅し、強制ログアウトさせることができます。
ステップ6:データベース内の悪意あるコード・不正アカウントの削除
ファイルだけでなく、データベース内部(phpMyAdmin等)にも不正なデータが注入されている場合があります。
wp_usersテーブルの点検:見覚えのない管理者ユーザーが登録されていないか確認し、不正なアカウントを削除します。wp_postsテーブルの確認:記事本文やタイトルに悪意あるJavaScript(<script src="https://evil-site.com/malware.js">等)やiframeが埋め込まれていないかSQL検索し、置換・削除します。wp_optionsテーブルの確認:siteurlやhome、ウィジェット設定、自動ロードされるオプション(autoload = 'yes')の中に不審なJavaScriptコードが保存されていないか確認します。
4. 駆除後に必ず行うべき再感染防止・セキュリティ強化策
マルウェアを除去しても、「侵入された原因(セキュリティの穴)」を塞がなければ、数日以内に再び同じ攻撃を受けて感染します。駆除作業完了後は、ただちに以下の再感染防止策を講じてください。
🛡️ 再感染をゼロにするためのセキュリティ強化チェックリスト
- 1. 全コンポーネントを最新版にアップデート:WordPress本体、テーマ、プラグインをすべて最新バージョンに更新します。放置された古いプラグインは最大の侵入口です。
- 2. ファイルパーミッション(権限)の厳格化:ディレクトリは
755、ファイルは644、重要ファイルwp-config.phpは400または440に設定し、Web経由の不正書き換えをブロックします。 - 3. uploadsフォルダでのPHP実行を禁止:
wp-content/uploads/.htaccessを作成し、PHPの実行を無効化します(設定例は下記)。 - 4. 2段階認証(2FA)の導入とログインURLの変更:管理者ログイン画面に2段階認証を設定し、ブルートフォース攻撃やパスワード漏えいからの侵入を遮断します。
- 5. WAF(Web Application Firewall)の有効化:レンタルサーバーのWAF機能やCloudflareなどのクラウドWAFを有効にし、不正なSQLインジェクションやファイルアップロード攻撃をネットワーク層で弾きます。
uploadsフォルダ内でのPHP実行禁止設定(.htaccess)
wp-content/uploads/ 直下に .htaccess ファイルを作成し、以下のコードを記述することで、万が一画像フォルダ内に不正なPHPファイルをアップロードされても実行不能にできます。
# uploadsディレクトリ内のPHP実行を完全禁止
<Files *.php>
Order Deny,Allow
Deny from all
</Files>
<Files *.phtml>
Order Deny,Allow
Deny from all
</Files>
5. 自力での駆除が危険・困難な場合の判断基準
以下のようなケースでは、自力での復旧作業は二次被害を広げるリスクが高いため、専門のセキュリティ復旧業者やプロの保守サービスへの相談を強く推奨します。
- 駆除しても数日後に何度も再感染する(親サーバーや別ドメイン、cron設定にバックドアが残っている可能性大)
- 会員サイトやECサイトで個人情報・クレジットカード情報漏えいの懸念がある(フォレンジック調査と公的機関への報告が必要)
- コアファイルやDBの構造に詳しくなく、サイトを壊してしまう不安がある
- 業務多忙で調査やクリーンインストールに時間を割けない
WordPressの保守・セキュリティ対策については、以下の関連ガイドもあわせてご確認ください。
- WordPressセキュリティ診断ツールおすすめ比較|無料・オンライン・プラグインの選び方
- WordPress改ざん復旧完全マニュアル|原因特定からバックドア根絶・安全なデータ復元手順まで
- WordPress監視・保守代行サービスの選び方|費用相場と失敗しない比較ポイント
- WordPressセキュリティ対策 完全ガイド|初心者から中小企業まで守る実践チェックリスト
- WordPressで多い攻撃手法と防ぎ方|最低限のセキュリティ対策
- WordPress診断サービスを比較!目的別に選べるおすすめツールまとめ
まとめ:定期スキャンと事前対策でサイトを安全に守ろう
WordPressのマルウェア駆除は、「個別のファイルを怪しいからと消す」対症療法ではなく、「クリーンな公式ファイルによる総入れ替え」と「侵入経路となった脆弱性の完全閉鎖」を行うことが唯一の確実な解決策です。
また、マルウェア被害に遭ってから対処するのではなく、日頃からセキュリティ診断を実施し、設定不備や古いプラグインを早期発見することが最も効果的な防衛策となります。
MozCheckなら、URLを入力するだけでWordPressサイトのセキュリティ健全性・設定状況をわずか数十秒で無料スキャンできます。サイトの安全確認にぜひお役立てください。
コメントを残す