2026年5月20日
2026年5月20日
WordPressのマルウェアを検出・除去する方法
はじめに
WordPressサイトがマルウェアに感染すると、スパムの送信・他サイトへの攻撃・訪問者へのウイルス配布などが発生します。Googleにブラックリスト登録されると検索流入がゼロになります。感染の検出から除去・再発防止まで体系的に対処する手順を解説します。
症状・原因
- Google Chromeで「このサイトは危険です」と表示される
- Google Search Consoleにセキュリティ問題の警告が届いた
- サイトにスパムリンクや見知らぬコンテンツが追加されている
- サーバーから大量のメールが送信されている
- 管理画面にログインできない
解決手順
ステップ1:感染を確認する
# サーバーサイドでのマルウェアスキャン
# ClamAVを使用(インストールが必要)
sudo apt install clamav
sudo freshclam # ウイルス定義を更新
sudo clamscan -r /var/www/html --infected --log=/tmp/clamscan.log
# 最近変更されたPHPファイルを確認(過去7日間)
find /var/www/html -name "*.php" -newer /var/www/html/wp-config.php \
-not -path "*/cache/*" | sort
# 不審なコードパターンを検索
grep -r "eval(base64_decode" /var/www/html --include="*.php" -l
grep -r "preg_replace.*\/e" /var/www/html --include="*.php" -l
grep -r "system\|exec\|shell_exec\|passthru" /var/www/html --include="*.php" -l
ステップ2:Wordfenceでスキャンする
Wordfence スキャン手順:
1. プラグイン → Wordfence Security インストール・有効化
2. Wordfence → スキャン → 「新しいスキャンを開始」
3. スキャン完了後の対応:
- 「変更されたWordPressコアファイル」→ 「修復」でオリジナルに戻す
- 「マルウェアシグネチャが見つかりました」→ 該当ファイルを確認・削除
- 「不明なファイル」→ 不審なら削除
Wordfenceのスキャンレベルを最高に設定:
Wordfence → スキャン → スキャンの種類 → 「高感度」
ステップ3:WordPressコアファイルを再インストールする
# WP-CLIでコアファイルを再インストール(設定・データは保持)
wp core download --force
# または手動で:
# 1. wordpress.org から最新版をダウンロード
# 2. wp-content/ と wp-config.php 以外を上書き
# 3. wp-content/plugins/ と wp-content/themes/ のコアファイルを確認
# データベースのWordPressテーブルを確認
wp db check
# wp_options テーブルの不審なオプションを確認
wp option list | grep -E "malware|inject|eval|base64"
ステップ4:バックドアを除去する
# よくあるバックドアパターンを検索・除去
# base64エンコードされたコード
grep -r "eval(base64_decode" /var/www/html --include="*.php" \
-l | xargs grep -l "eval" > /tmp/suspicious.txt
cat /tmp/suspicious.txt
# ファイル名が不審なPHPファイル
find /var/www/html/wp-content/uploads -name "*.php"
find /var/www/html -name "*.php" -newer /var/www/html/index.php \
-not -path "*/uploads/*" -not -path "*/cache/*"
# wp-includes に追加されたファイル(コアにないものは削除)
# WordPressの正規ファイルリストと比較
wp core verify-checksums
// functions.php: 不審な関数の実行をブロック(検知用)
// 本番環境での危険な関数の実行を記録
if (!defined('WP_DEBUG') || !WP_DEBUG) {
// disable_functions を php.ini で設定することを推奨
// disable_functions = exec,passthru,shell_exec,system,proc_open,popen
}
ステップ5:感染後の再発防止
# 全パスワードをリセット
wp user list --format=ids | xargs wp user update --user_pass="$(openssl rand -base64 20)"
# 全セッションを無効化(全ユーザー強制ログアウト)
wp session destroy --all
# セキュリティキーを再生成
wp config shuffle-salts
# ファイルパーミッションを修正
find /var/www/html -type f -exec chmod 644 {} \;
find /var/www/html -type d -exec chmod 755 {} \;
chmod 600 /var/www/html/wp-config.php
# 不要なプラグイン・テーマを削除
wp plugin list --status=inactive --format=ids | xargs wp plugin delete
wp theme list --status=inactive --format=ids | xargs wp theme delete
注意事項
- マルウェア除去作業の前に必ずバックアップを取ってください。除去作業でサイトが壊れた場合の復元に必要です
- Googleのブラックリストに登録された場合、マルウェア除去後にSearch Consoleから「セキュリティ問題の再審査リクエスト」を送信してください
- 感染経路の特定と修正(古いプラグイン・脆弱なパスワード等)をしないと再感染します
まとめ
find コマンドと grep でサーバー上の不審なファイルを特定し、Wordfenceのスキャンと wp core verify-checksums でコアファイルの改ざんを検出します。wp core download --force でコアを再インストールし、バックドアを除去します。最後にパスワード全リセット・セキュリティキー再生成・パーミッション修正を行い再発防止します。