マルウェアの概要
このタイプは、WordPress本体よりも先に読み込まれる .htaccess を改ざんし、
- ログイン画面(/wp-login.php)を403にする
- 管理画面に入れても「プラグイン一覧」「投稿一覧」など“管理に必要な画面だけ”を403にする
ことで、管理者の復旧作業を妨害します。
一方で攻撃者だけが使える“例外ルール(Allow)”を残し、バックドアへの入口を温存するのが特徴です。(blog.website-malware-removal.com)
この記述があれば99%マルウェア
1) 「PHPを全部403にする」ブロック
今回の .htaccess には、拡張子が php / php7 / phtml などのファイルを Deny from all(403) でまとめて遮断するルールが含まれていました。
- /wp-login.php
- /wp-admin/plugin-install.php
- /wp-admin/edit.php
など、管理画面の多くはPHPファイルなので、これだけで“ログイン画面403”や“一覧だけ403”が発生します。(wordpress.stackexchange.com)
2) 「特定の1ファイルだけ許可」の例外
さらに危険なのが、特定のPHPファイル名だけ Allow from all で例外的に通すパターンです。
これは攻撃者が使うバックドア(入口)であることがほとんどです。
(正規運用で「PHP全部禁止+謎のPHPだけ許可」をやる理由がほぼないため)
3) “アップロード対策”のフリをしている
「PHP実行を止める」は本来、uploads 配下など“実行させたくない場所”だけに適用するのが一般的です。
サイト全体でPHPを止めると、WordPress自体が成立しません。
そのため、
- もっともらしい拡張子リスト
- 例外ファイルだけ許可
という構造が見えた時点で、改ざん(マルウェア)を強く疑います。(blog.sucuri.net)
典型的な症状
ログイン画面が403
- /wp-login.php が403
- /wp-admin/ が403
→ .htaccess 改ざん(またはWAFを装った遮断)の可能性が高いです。(center.u-fellows.co.jp)
管理画面に入れたとしても「一覧だけ403」
- プラグイン一覧(plugins.php)が403
- 投稿一覧(edit.php)が403
→ “管理機能だけ潰して復旧を遅らせる”タイプでよく見られます。(blog.website-malware-removal.com)
なぜ攻撃者は403にするのか
- 管理者がプラグイン停止や更新をできない
- スキャンや復旧作業が進まない
- 攻撃者だけが例外ファイル(バックドア)で再侵入できる
つまり 「締め出し+再侵入の確保」 が目的です。(wordpress.org)
駆除と復旧の方法
1) .htaccess を一時退避して正常化
- まず .htaccess をバックアップ
- 改ざんが疑われるルール(PHP全面ブロック/特定ファイル許可)を除去
- WordPressの「パーマリンク設定を保存」で正規の最小構成を再生成
(“消しても戻る”場合は、別のバックドアが再生成しています)(stackoverflow.com)
2) 例外許可されているPHPファイルを最優先で隔離
- Allowされている“特定PHP”は最優先で調査・隔離
3) コア再設置+wp-content全点検
- wp-admin / wp-includes は公式で上書き
- wp-content(特に uploads / themes / plugins)に不審ファイルがないか全点検
再発防止のセキュリティ対策
- 不要プラグイン削除・更新停止を作らない
- WAF導入
- ファイル改ざん監視
- uploads配下など“必要箇所だけ”PHP実行を禁止(サイト全体で禁止しない)(blog.sucuri.net)
まとめ:403は「設定ミス」より先に改ざんを疑う
次が同時に起きたら、設定不備より 改ざん(マルウェア) を疑うのが現実的です。
- ログイン画面が403
- 管理画面の一覧だけ403
- .htaccess に「PHP全面Deny」+「特定PHPだけAllow」
早期に原因を切り分け、入口(例外許可ファイル)と再生成元を潰すことが復旧の近道です。
著者情報
WordPressのセキュリティ復旧・運用支援を専門する CreativeStudio樂のエンジニアユニット によって執筆されております。
WordPressのマルウェア駆除、改ざん復旧、セキュリティ強化の豊富な実務経験に基づき、企業サイトやブログ運営者が安心してサイトを運営できるよう支援しています。
