WordPress 網站遭入侵後的正確復原步驟:從隔離到驗收

網站遭入侵後,幾乎所有站長的第一反應都相同:立刻還原備份,讓網站看起來恢復正常。這個直覺可以理解,卻往往讓問題在幾週後重演——有時甚至更快。真正的 WordPress 網站入侵復原,不是把網站拉回昨天的樣子,而是找出攻擊者進來的那道門,再把它堵上。

跳過取證直接還原,就像醫生連診斷都沒做就開藥。備份裡未必沒有後門,漏洞也原封不動留在主機上,攻擊者隨時可以重入。本文拆解正確的處理順序,從隔離到驗收,說明每個階段為何不能省略,以及哪個環節最容易被輕率帶過。

為什麼直接還原備份會讓問題重演

網站遭入侵後,攻擊者通常不只改一個檔案。他們的標準作業是植入後門(Backdoor),讓自己下次不需要重複利用同一個漏洞就能再次進入。這些後門可能藏在主題資料夾、外掛目錄,也可能混在 WordPress 核心的 wp-content/uploads 底下偽裝成圖片。

備份本身不一定乾淨。如果備份是在入侵發生後才觸發的排程備份,或攻擊者在你察覺前已潛伏數天,那份備份裡的惡意程式早就一起被打包進去了。還原這份備份,等於把後門也一起帶回來。

漏洞沒補才是核心問題。備份還原完,舊版外掛、未更新的 PHP 版本、仍在使用的弱密碼——全部原封不動。攻擊者走同一條路,通常在幾小時到幾天內就會重入。

隔離是第一步,不是選項

發現入侵後,第一個動作是把網站從公開環境切離,不是查看哪裡被改、也不是先聯繫主機商。原因很直接:網站還在上線狀態,惡意程式可能繼續對訪客發動攻擊,同時日誌也可能持續被攻擊者清除。

隔離的方式視主機環境而定:

  • 暫停 DNS 解析或關閉 HTTP 連接埠:讓外部流量無法抵達伺服器,但伺服器本身仍可供你透過 SSH 存取
  • 切換成維護頁面:若無法直接斷網,至少關閉 WordPress 前台輸出,防止訪客被重新導向至惡意網站
  • 鎖定管理員登入入口:封鎖 wp-login.php 的外部存取,防止攻擊者在取證期間繼續使用被竊的帳號

隔離完成後,才進入下一個階段。時序很重要,一旦先動了檔案系統,部分足跡就會被覆寫。

取證——找出攻擊者的入口

取證(Forensic Analysis)是整個流程最容易被跳過的步驟,也是跳過後最常導致問題重演的原因。這個步驟只需要回答一個問題:攻擊者怎麼進來的?

讀存取日誌找異常請求

伺服器的存取日誌(Access Log)是第一份證據。重點不在於哪些 IP 造訪過網站,而是找異常的請求模式。

幾個常見跡象值得優先篩查:對 wp-admin/admin-ajax.php 的密集 POST 請求、對未知 PHP 檔案路徑的直接呼叫(尤其是 wp-content/uploads 底下出現 .php 副檔名),以及短時間內來自同一 IP 的大量登入嘗試。

時間軸比 IP 位址更重要。從日誌找出第一次可疑請求的時間戳,往前 24 至 72 小時的紀錄通常能看出攻擊者的偵察階段。

比對檔案異動時間

入侵後被修改的檔案,其異動時間(Modified Time)會和攻擊前的基準狀態不同。有兩個方向可以著手:

  • WordPress 核心檔案比對:用 WP-CLI 的 wp core verify-checksums 指令,直接比對核心檔案的雜湊值(Checksum),確認哪些核心檔案被竄改
  • 可疑 PHP 檔案掃描:在 wp-content 底下找近期被異動的 PHP 檔案,特別注意 eval()base64_decode()gzinflate() 這類常用於混淆惡意程式的函式

這個步驟不需要列出所有修改過的檔案,核心目標是找到最初的入口——是外掛漏洞、主題後門,還是被破解的管理員密碼。

清除惡意程式

確認入口後,清除的範圍才能準確。盲目清除容易遺漏,也容易誤刪正常檔案。

外掛與主題的惡意程式清除

已知被入侵的外掛或主題,最穩妥的做法是直接刪除並重新從官方來源下載安裝,不要嘗試逐行修復——混淆過的惡意程式難以人工辨識完全,重新安裝乾淨版本是更可靠的選擇。

若無法確定是哪個外掛的問題,可以使用像是 Wordfence 或 MalCare 這類資安外掛進行全站掃描。這類工具會比對官方 WordPress 外掛庫的雜湊值,把被竄改的檔案標記出來。掃描結果應作為參考,最終仍需人工確認,避免誤刪客製化的合法修改。

WordPress 資料庫的惡意內容

攻擊者有時會在資料庫注入惡意程式碼,常見位置包括 wp_options 表的 siteurlhome 欄位,以及 wp_posts 表的文章內容。典型跡象是頁面出現隱藏的外部連結,或 siteurl 被改為攻擊者控制的網域。

使用 phpMyAdmin 或 WP-CLI 搜尋資料庫中的 <script 標籤、外部網域注入,以及 Base64 編碼的長字串,是快速篩查的標準做法。

修補漏洞,再談還原

清除惡意程式之後,漏洞還在就是一切歸零。這個階段的工作分三塊。

版本更新:WordPress 核心、所有外掛、主題一律升級到最新穩定版。如果某個外掛已停止維護(官方頁面顯示「超過 2 年未更新」且不相容最新版本),這次入侵正是移除的最好理由。

帳號審查:進後台的「使用者」列表,刪除所有不認識的管理員帳號。攻擊者通常在植入後門的同時,也會新增一個隱藏的管理員帳號作為備用入口。所有現有管理員帳號強制更換密碼,建議長度 16 字元以上,以密碼管理器生成。

伺服器層設定:確認 PHP 已升級到受支援版本(建議 8.1 以上);如果是共享主機,確認 wp-config.php 的檔案權限設為 400440,防止外部讀取資料庫連線資訊。

還原備份的正確時機與驗收

走到這一步,才是備份發揮作用的時機。這裡需要的不是把整個網站回滾,而是用乾淨的備份補回確定被惡意竄改、且無法重新安裝的部分——例如自訂的 functions.php 邏輯、特定的媒體檔案。

如果必須完整還原,請選擇入侵時間點之前最近的乾淨備份,並在還原後重新執行一次惡意程式掃描,確認備份本身是乾淨的。

驗收標準不是「網站看起來正常」,而是:

  • 資安掃描結果清空:Wordfence 或同類工具無任何標記的異常檔案
  • 存取日誌無異常請求:觀察還原後 48 小時的日誌,確認沒有重複出現的可疑請求模式
  • Google Search Console 無安全警告:若入侵期間網站曾被 Google 標記為惡意軟體散布來源,需在 Search Console 申請複審

取證步驟確認了入口,清除惡意程式消除了後門,修補漏洞封住了原始弱點——這三步缺一,備份還原只是把問題往後推。

相關文章
標籤: 網站安全, 惡意程式清除, WordPress 入侵, 取證分析, 漏洞修補