WordPress 後門攻擊模式辨識速查:11 種常見手法與清除方式

這篇需要 SSH 操作

這篇提到的攻擊痕跡需要透過 SSH 連進伺服器才能檢查和清除。還不熟悉 SSH?請先看SSH 連線教學。

處理 WordPress 中毒案件看多了會發現,攻擊者的手法翻來覆去就那幾種。

這篇整理了 11 種實務上遇過的攻擊模式。掃描的時候對照著看,可以更快判斷你的站被用了哪些招。


檔案層

index.php 植入 + 暫存 PHP

index.php 被加入 goto 混淆碼。每次有人訪問網站,惡意碼用 uniqid('', true) 在根目錄產生隨機命名的 PHP(通常 6a 開頭),執行完再刪。執行被中斷的話暫存檔就會留下來。

清法:先清 index.php(源頭),再刪所有 6a*.php,最後核心重裝。

重複子目錄 + cache.php

在合法目錄裡建同名子目錄,塞 cache.php。像 Handler/Handler/cache.php。正常專案不會出現 Handler/Handler/ 這種路徑,目錄名重複就是辨識關鍵。

shadow-bot.php 多點散佈

同一個檔名出現在多個子目錄。你清了一個,其他地方還有。用 find . -name "shadow-bot.php" 全站搜一遍,全部刪。

Cookie 後門

檔案就一兩行:eval(base64_decode($_COOKIE['xxx']))。攻擊者透過 cookie 傳入要執行的程式碼。檔案本身看起來很無害,特別不起眼。

帶密碼的 Webshell

session_start() + SHA256 密碼驗證 + eval()。攻擊者用瀏覽器直接開這個 PHP,輸入密碼就有完整 shell。常偽裝成佈景主題檔案。

GitHub 假圖片 Payload

惡意碼從 GitHub user-images CDN 下載一個 .jpg,實際內容是 base64 編碼的 PHP。利用 GitHub 的高信譽繞過 URL 黑名單。要刪的是載入器(那個 curl/file_get_contents 的 PHP),光刪結果沒用。

ACL / Immutable 保護

惡意檔案用 chattr +i 設了 immutable,或加了 ACL 規則。你 rm 刪不掉、--force 也覆蓋不了。先 chattr -i 再 setfacl -b,然後才能刪。

PHP-FPM 即時寫回

你刪了 index.php,下一個 HTTP 請求進來 PHP-FPM worker 又把惡意版寫回去。因為 worker 記憶體裡還跑著被竄改的版本。先 kill 掉 FPM pool 再清。


資料庫層

假管理員帳號

多出不認識的管理員。email 用 @security.local 或 @local.invalid,建立日期集中在同一天。wp user delete 刪除,記得 --reassign。

應用程式密碼持久化

攻擊者在管理員帳號底下建了應用程式密碼。你改了登入密碼,他照樣用 REST API 進出。後台使用者清單看不出來,要查 wp_usermeta 的 _application_passwords。

mu-plugins Runtime 後門

在 wp-content/mu-plugins/ 放 PHP 檔案,每次載入頁面自動執行。不出現在後台外掛列表,多數管理者根本不知道它存在。你刪了其他所有後門,mu-plugin 一個人就能撐起整條攻擊鏈。


幾個提醒

實務上很少只遇到單一種攻擊模式。一次入侵通常同時部署 3~5 種後門。你清了四個,第五個就會把前四個全部寫回來。先掃完再一次清,不要邊看邊刪。

不確定的時候用 cat 看內容。變數名看得懂、有函數說明、有正常的外掛頭部註解 = 可能正常。通篇一兩個字母的變數名配 base64 字串 = 後門。

速查

刪不掉 → 查 lsattr 有沒有 immutable

刪了又出現 → 先停 PHP-FPM pool

改了密碼還被入侵 → 查應用程式密碼和 session salt

清了檔案還被入侵 → 查 mu-plugins 和 WP-Cron 排程

搞不定?讓專人處理

WP 中毒救援 $5,500 起 | 外掛衝突排查含版面復原 $4,000 起

了解服務方案 →

文章分享