快速答案:會復發,代表上次清的是症狀不是入口。後門最常藏在五個地方:mu-plugins 目錄、uploads 裡的 PHP 檔、被拿來當後門的正常檔案管理工具、核心目錄裡多出來的檔案、以及隱藏管理員或應用程式密碼。五個地方都查完,才能說清乾淨。
為什麼會這樣 #
攻擊者不會只放一支程式。通常是一支「載入器」加一支「酬載」:你刪了酬載,載入器下次執行時把它寫回來;你刪了載入器,排程或資料庫裡的另一段程式再把載入器生出來。更進階的做法是無檔案化——程式碼存在資料庫的 option 或 cron 事件裡,掃檔案永遠掃不到。所以「掃描顯示乾淨」不等於乾淨。
怎麼處理 #
五個必查的地方 #
- wp-content/mu-plugins:這裡的檔案會自動載入、後台無法停用、外掛列表也不明顯。很多站長根本不知道這個目錄存在。
- wp-content/uploads:這裡只該有圖片和文件,任何 .php 都不該存在。
- 被當後門用的正常工具:Tiny File Manager、Adminer、各種 File Manager 外掛。它們本身是合法軟體,所以掃毒不會報警,但攻擊者放進來的版本通常前台就能直接打開、密碼寫死在檔案裡。
- 核心目錄:wp-admin、wp-includes 裡多出來的檔案;根目錄的 index.php 或 wp-config.php 被多加一行 include。
- 帳號層:隱藏管理員、應用程式密碼、wp_options 裡不認識的排程事件。
處理步驟 #
- 比對檔案:
wp core verify-checksums查核心;外掛與官方版本比對;列出最近七天修改過的檔案。 - 找到可疑檔案先隔離(搬出網站根目錄)不要只刪,之後要比對用。
- 看主機的存取紀錄,找是誰在呼叫那支檔案(IP、User-Agent),在防火牆封掉。
- 所有憑證全換:WordPress 管理員、資料庫密碼、SFTP、主機面板。只換其中一種沒用。
- 補漏洞:這次是從哪支外掛進來的,就更新或換掉那支。
- 觀察 48 小時,看檔案有沒有再生。再生就代表還有載入器沒找到,回到第一步。
我們實際遇過的情況 #
一家客戶早上清完,下午發現後門自己長回來;第二次處置先找到載入器隔離、換掉所有憑證,之後確認未再生。一家企業站我們隔離了 Adminer 和兩套檔案管理器後回報「已處置」,複查時發現漏了一支前台可直接存取、密碼寫死的檔案管理外掛,只好更正早上的回報——這就是為什麼要五個地方都查。
另一家客戶的 mu-plugins 裡有一支帶密碼保護的後門載入器,酬載放在 uploads,還有一個疑似隱藏的管理員。一家客戶被放了好幾支無檔案化的執行器。也有客戶在兩個月內兩次「文章被入侵」,中間改過密碼,沒用,因為入口是檔案層的後門。
什麼時候該找人 #
這篇的每一步都在動檔案系統和資料庫,錯一步正式站就掛;電商站的訂單和會員資料也在同一個資料庫裡。如果你沒有 SSH 和主機紀錄的存取權,能做的其實只有備份和換密碼。
WPTOOLBEAR網站工具熊