快速答案:會復發,代表上次清的是症狀不是入口。後門最常藏在五個地方: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 小時,看檔案有沒有再生。再生就代表還有載入器沒找到,回到第一步。
我們實際遇過的情況 #
一個站的 mu-plugins 裡有一支帶密碼保護的後門載入器,酬載放在 uploads,另外還有疑似被藏起來的管理員。第一次處置完,後門自己長了回來;第二次把來源切斷之後,才確認沒有再生。一家企業站我們隔離了核心目錄裡的資料庫管理工具和兩套檔案管理器,當天回報「已處置」,複查時卻發現漏掉一支偽裝成一般外掛、前台就能直接打開而且密碼寫死的後門,只好更正早上的回報——這就是為什麼要五個地方都查完才算數。
還有一個站被放了好幾支無檔案化的執行器,掃檔案看不到它們。也有客戶接連兩次「文章被入侵」,中間換過管理員密碼,文章照樣被灌;換了密碼沒效,就代表入口不在帳號這一層。
什麼時候該找人 #
這篇的每一步都在動檔案系統和資料庫,錯一步正式站就掛;電商站的訂單和會員資料也在同一個資料庫裡。如果你沒有 SSH 和主機紀錄的存取權,能做的其實只有備份和換密碼。
WPTOOLBEAR網站工具熊