WordPress 被駭了嗎?6 個感染跡象判斷法 + SSH 備份 SOP

這篇需要 SSH 操作

這篇文章的備份操作需要透過 SSH 連進伺服器執行。還不熟悉 SSH?請先看SSH 連線教學。

某天打開自己的網站,首頁直接跳到賭博網站。

或者沒這麼明顯:後台突然登不進去、Google Search Console 寄來惡意軟體通知、伺服器帳單暴增。

這些都是被駭的訊號。確認感染之後,第一步不是清除——是備份。


判斷感染的 6 個跡象

不是每次被駭都像跳轉色情網站那樣明顯。有些跡象很容易被當成系統問題略過。

後台白屏或無法登入

打開 /wp-admin/ 直接白屏,或帳號密碼沒變卻登不進去。可能是 index.php 被植入惡意程式碼導致 PHP fatal error,也可能是攻擊者改了管理員密碼。

前台出現異常轉址或注入內容

點進網站被導到賭博或假購物網站。或者頁面看起來正常,但滑到底部多了一堆日文或簡體字連結。

這類手法通常只對搜尋引擎或特定 User-Agent 觸發,你自己在瀏覽器直接開可能看不到。試著用 Google 搜尋你的網站,看搜尋結果的描述是不是正常的。

Google 標記為危險網站

瀏覽器跳出紅色警告頁,或 Google Search Console 發了安全性問題通知。到這個階段通常感染已有一段時間,Google 爬蟲先掃到的。

Nginx / Apache error log 出現隨機命名 PHP

伺服器的 error log 裡看到類似這種錯誤:

include(6a609xxxxx.php): failed to open stream

那串亂數檔名是惡意程式用 uniqid() 動態產生的暫存檔。是很典型的感染痕跡。

伺服器 Load 異常飆高

CPU 或記憶體突然飆高,但流量沒有明顯增加。可能是被拿去挖礦、發垃圾信、或當跳板攻擊其他伺服器。

DOM 裡出現不明外部 JavaScript

前台看起來正常,但打開 DevTools 的 Elements 面板,發現 <head> 或 <body> 被塞了一段 <script src="https://可疑網域/...">。可能在做 cookie stealing、keylogging、或把訪客導到釣魚頁面。

快速自查清單

  • 開無痕視窗訪問首頁,看有沒有被轉址。
  • Google 搜尋 site:你的網域,看搜尋結果描述有沒有異常。
  • 打開 DevTools → Network 面板,看有沒有連到不認識的外部網域。
  • SSH 進伺服器跑 top 或 htop,看 CPU 使用率。

確認被駭後,第一步:備份

直覺反應是趕快清掉惡意程式。但正確順序是先備份。

備份的目的不是要還原到感染狀態,而是:保留現場證據、萬一清理過程刪錯還有得救、搞清楚攻擊者從哪進來之後才能對症下藥。

打包網站目錄

SSH 進伺服器,把整個網站目錄壓成 tar.gz:

cd /home/runcloud/webapps
tar -czf /tmp/SITENAME-backup-$(date +%Y%m%d%H%M).tar.gz SITENAME/

打包時間取決於網站大小,幾十 GB 的站可能要跑好幾分鐘。過程中看到 file changed as we read it 是正常警告,不影響備份完整性。

匯出資料庫

先查資料庫帳密:

grep -E "DB_NAME|DB_USER|DB_PASSWORD" /home/runcloud/webapps/SITENAME/wp-config.php

然後用 mysqldump 匯出:

mysqldump -u DB帳號 -p'DB密碼' DB名稱 > /tmp/SITENAME-db-$(date +%Y%m%d%H%M).sql

確認備份檔 + 下載到本機

先看備份檔大小,太小代表打包可能有問題:

ls -lh /tmp/SITENAME-*

用 SCP 拉回本機。備份留在伺服器上不安全——攻擊者可能還在裡面,一定要下載走:

scp -P 埠號 root@伺服器IP:/tmp/SITENAME-backup-*.tar.gz "本機路徑/"
scp -P 埠號 root@伺服器IP:/tmp/SITENAME-db-*.sql "本機路徑/"

幾個容易踩的坑

備份是感染狀態,不是拿來還原的

做完備份有人會想說「那直接還原到上週的乾淨備份就好了」。問題是你不確定攻擊者什麼時候進來的。上週的備份可能已經被感染,只是還沒觸發。

這份備份的功能是保留現場和救援保險,不是還原用。

不要邊掃邊清

看到一個惡意檔案就馬上刪,刪完繼續掃。這樣做的問題是:有些惡意程式會互相監控,你刪了 A,B 會把 A 寫回來。

正確做法是先完整掃一遍,列出所有感染點,然後一次清乾淨。

主機面板的備份不一定可靠

RunCloud、cPanel 的自動備份可能週期是每天或每週,而且備份檔存在同一台主機上。攻擊者若有 root 權限,面板備份也可能被汙染。SSH 手動打包下載到本機是最穩的做法。

備份完之後

接下來要做的是:全站檔案掃描、資料庫掃描、清除惡意程式、重裝核心、清帳號改密碼、收尾加固。每個步驟都有眉角,後面的文章會逐一拆開來講。

貼給你的 AI 用

如果你不確定自己的網站有沒有被駭,把下面這段貼給 ChatGPT 或 Claude,他會引導你檢查:

我的 WordPress 網站可能被駭了。請引導我做初步檢查。

我的環境:
- 主機商:[填入,例如 Cloudways / RunCloud / SiteGround]
- 網站網址:[填入]

請幫我確認以下跡象:
1. 用無痕視窗打開首頁,有沒有被轉址
2. Google 搜尋 site:我的網域,搜尋結果描述有沒有異常
3. 能不能正常登入後台
4. 後台有沒有不認識的管理員帳號

根據我的回答判斷是否需要進一步做 SSH 掃描。如果需要,教我怎麼 SSH 連進伺服器,然後引導我備份網站目錄和資料庫。每一步等我回報結果再繼續。

SSH 操作注意事項

SSH 指令送出去就是送出去了,沒有 Ctrl+Z。操作前請注意:

  • AI 給的指令,跑之前自己看一遍,確認路徑和檔名是對的再按 Enter。
  • 不要整段複製貼上一口氣跑完。一次一個指令,看到結果再下一步。
  • 刪除和覆蓋操作不可逆。備份沒做完之前,不要動任何清除步驟。
  • 不確定的時候就停下來問。問 AI、問主機商、問會的朋友,都比直接跑好。

SSH 基礎教學請看這篇。

搞不定?讓專人處理

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

了解服務方案 →

文章分享