WordPress 安全防護實戰:弱密碼、檔案竄改、XML-RPC 攻擊怎麼防

如果你的 WordPress 網站今天被植入後門,你會在第幾天後發現?WordPress 安全防護不是裝一個外掛就完事,真正會讓你被打開的是三件最容易忽略的事:弱密碼、檔案被偷偷改過、以及 XML-RPC 這個你可能從來沒聽過的後門。

這篇文章是我前陣子去參加台北小聚聽完 Raymond 的分享之後整理的筆記。Raymond 從滲透測試的角度來說明基礎防護知識,我從 WP 站長的角度介紹哪些工具可以自己跑,以及說明為何需要尋找專業的資安團隊來協助。

一、弱密碼檢查:駭客最便宜的入侵方式

弱密碼指的是被列在常見密碼字典裡的那種——admin123P@ssw0rd你的網站名+2024,攻擊者不會猜你的密碼,他們會拿一份幾百萬筆的字典檔對你的登入頁瘋狂測試,直到猜對為止。

WordPress 預設有個叫 wp-login.php 的登入頁,全世界都知道在哪,攻擊者每天用機器人跑遍所有 WordPress 站台,掃出弱密碼的帳號就能直接登入。

如何預防弱密碼攻擊

對不想碰命令列的站長來說,三個外掛任選一個就能解決:

Solid Security

https://tw.wordpress.org/plugins/better-wp-security/

免費版就有「Weak Password Detection」功能,啟用後它會引導你進行一連串的登入防護設定,任何使用弱密碼的使用者下次登入會強制要求改密碼,不改就不能進後台。

Wordfence

https://tw.wordpress.org/plugins/wordfence/

免費版的 Scan 功能會自動掃描所有使用者,比對他們提供的資料庫,如果你的密碼在歷史外洩事件裡出現過,會直接在掃描報告標紅,Pro 版額外提供密碼字典攻擊模擬。

Jetpack Protect

https://tw.wordpress.org/plugins/jetpack-protect/

由 Automattic 官方出品,背後接的是業界知名的 WPScan 漏洞資料庫(超過 21,000 筆已知漏洞)。免費版會自動掃描你站上所有外掛、主題、WordPress 核心版本,發現有漏洞的元件直接通知。原本的 WPScan WordPress 外掛已經不再為一般使用者提供支援,官方推薦改用這個。

弱密碼這部分它沒有獨立 UI,但配合 Solid Security 或 Wordfence 的弱密碼檢測,搭配 Jetpack Protect 的外掛漏洞掃描,可以涵蓋登入端與漏洞端兩個面向。

選擇建議:一般站長裝 Solid Security 或 Wordfence 就夠用,再加裝 Jetpack Protect 補上漏洞掃描的部分。

順手做一件事:刪掉可疑帳號

掃完弱密碼之後,順便進後台 → 使用者 → 全部使用者,看看有沒有不該存在的管理員。常見的後門帳號特徵:

  • 帳號名稱很怪(像 wp-configadmin2support
  • 最近才註冊但你不記得加過
  • email 是你不認識的網域

看到這種帳號直接刪掉,並把該帳號發過的文章重新指派給你自己。如果你光是看到使用者列表裡有 5 個叫 admin 的帳號就一頭霧水——那很可能你已經被入侵了,這些都是駭客自己加的。

預防勝於檢查

不管哪一派,最後都要走到同一步:把密碼政策設好。其實前面提到的 Solid Security 免費版就內建完整的 Password Requirements 設定,可以強制:

  • 最少 16 字元
  • 必須混合大小寫、數字、特殊符號
  • 90 天強制更換
  • 禁止重複使用過去用過的密碼

啟用並設完成後,未來新密碼就不會再掉進弱密碼陷阱。Wordfence 也有類似功能在 Login Security → Settings 裡,看你裝哪個就用哪個的設定,不需要再多裝一個外掛。

二、檔案完整性比對:你的程式碼有沒有被偷偷改過

第二個風險更隱蔽,攻擊者進來之後不會馬上破壞你的網站,他們會在你的主題或外掛裡塞一段惡意程式碼,可能是:

  • SEO Spam(在你的頁面塞滿賣假包包的連結)
  • 後門程式(讓他下次可以直接進來)
  • 加密貨幣挖礦腳本(用你的訪客電腦挖礦)

問題是,這些程式碼藏在 wp-content/plugins/ 底下幾百個檔案裡的某一行,你怎麼知道哪裡被改了?

工具一:WordPress 官方核心檔案校驗

WordPress 官方對核心檔案有提供校驗碼。用 wp-cli 跑:

wp core verify-checksums

它會把你網站上的 WordPress 核心檔案逐一比對官方版本,如果有任何一個檔案被動過會跳出來提醒你,外掛部分可以用 wp plugin verify-checksums --all

工具二:GitHub 上的 wp-cli/checksum-command

這是 wp-cli 的官方擴充,安裝方式:

wp package install wp-cli/checksum-command

裝完之後就能對所有外掛、主題做完整性比對,對於沒在官方 WordPress.org 倉庫的付費外掛,這個工具沒辦法檢查,這時候要靠下一個工具。

工具三:手動建立檔案指紋

進階一點的做法是定期把 wp-content/ 整個目錄做一次 hash 紀錄,下次比對如果有差異就知道哪裡被改了,但這對非工程背景的站長來說已經是另一個世界,這部分通常會由維護方代為處理。

三、XML-RPC 攻擊:那個你從來沒打開過的後門

XML-RPC 是 WordPress 一個老舊的遠端呼叫介面,原本設計給手機 App、Pingback、Trackback 用,問題是你 99% 不會用到它,但它預設是開的。

攻擊者愛它的原因是:透過 XML-RPC 的 system.multicall 功能,他們可以一次測試 500 組密碼,是直接打 wp-login.php 的 500 倍效率。等於用 1/500 的時間就能破解你的弱密碼。

怎麼檢查自己有沒有開

打開瀏覽器,把網址換成你的網站加上 /xmlrpc.php

https://你的網站.com/xmlrpc.php

如果看到「XML-RPC server accepts POST requests only.」這行字,代表它是開的。

關閉的方法(三選一)

  1. 裝外掛:「Disable XML-RPC」這類外掛,安裝啟用就完成
  2. .htaccess:在裡面加一段規則擋掉 xmlrpc.php 的請求
  3. 主機層級擋掉:請主機商或工程師處理,最徹底

如果你完全沒用過 Jetpack 或 WordPress 手機 App,直接關掉沒有任何副作用。

四、用 WPScan 做完整的漏洞掃描

WPScan 是業界最常用的 WordPress 漏洞掃描器,開源、免費、技術人員實務都在用,我介紹它不是要每個站長都自己跑,而是讓你知道專業的健檢長什麼樣,以及它能查出哪些前面外掛掃不到的東西。

GitHub 連結:github.com/wpscanteam/wpscan

它由 Ruby 寫成,背後維護一個專屬的 WordPress 漏洞資料庫(WPVulnDB),收錄了核心、外掛、主題的所有已知 CVE,免費版每天可以查 25 次外掛漏洞,對單一站台的健檢來說綽綽有餘。

安裝

macOS(已裝 Homebrew):

brew install wpscan

Linux(Ubuntu/Debian):

sudo apt install ruby ruby-dev
sudo gem install wpscan

也可以直接用官方 Docker image:

docker pull wpscanteam/wpscan
docker run --rm wpscanteam/wpscan --url https://你的網站.com

裝完之後,去 wpscan.com 註冊一個免費帳號,會拿到 API token。後面所有需要查漏洞庫的指令都要加上 --api-token=你的token

用法一:基本掃描

wpscan --url https://你的網站.com --api-token=你的token

跑完會列出 WordPress 版本、主題、暴露的檔案、發現的使用者名稱、以及對應的 CVE 漏洞清單,如果你的站台是電商或會員制,建議在凌晨流量低時跑,避免被 WAF 擋下。

用法二:列出所有外掛

wpscan --url https://你的網站.com --enumerate p --api-token=你的token

--enumerate p 會列出能偵測到的所有外掛(passive 模式),要挖更深加 --enumerate ap(aggressive,會送更多請求):

wpscan --url https://你的網站.com --enumerate ap --api-token=你的token

aggressive 模式會掃出 vulnerable plugins、popular plugins、所有偵測得到的版本,但會送幾千次請求,請確認你有權限掃這個站。

用法三:找出可登入的使用者名稱

wpscan --url https://你的網站.com --enumerate u

很多 WordPress 站台沒關掉 REST API 或 author archive,攻擊者可以直接列出所有使用者名稱,這個指令幫你站在攻擊者角度看自己有沒有暴露——如果它能列出 admin、editor 這些帳號,駭客也能。

對策是裝 Stop User Enumeration 外掛或在 nginx/.htaccess 擋掉 ?author= 參數。

用法四:模擬密碼字典攻擊

wpscan --url https://你的網站.com \
  --usernames admin,editor \
  --passwords /path/to/passwords.txt \
  --max-threads 5

這是滲透測試常用的指令:拿一份密碼字典(網路上找 rockyou.txt),對指定的使用者做暴力破解測試,跑完如果有任何一個帳號被破出來,那個帳號的密碼就是字典裡的那一行。

--max-threads 5 限制同時連線數,不要設太高,會被主機 firewall 鎖 IP。

用法五:把報告存成 JSON 給工程師

wpscan --url https://你的網站.com \
  --api-token=你的token \
  --output report.json \
  --format json

JSON 格式方便後續做自動化比對。例如每月跑一次、把結果丟進 diff 工具,就能知道這個月新增了哪些漏洞。

用法六:定期更新漏洞資料庫

WPScan 本機會快取漏洞資料庫,跑掃描前先更新一下:

wpscan --update

這個指令會去 WPVulnDB 拉最新的 CVE 清單,確保你掃出來的結果是最新的。

怎麼讀掃描結果

WPScan 用三種顏色標示風險:

  • 🔴 紅色 [!]:有已知漏洞,立刻處理
  • 🟡 黃色 [?]:可能有問題,需要進一步確認
  • 🟢 綠色 [+]:偵測到的資訊,未必是漏洞

實務上多數站長卡在「掃出來十幾個紅色警告」之後就不知道下一步——哪些是真的會被打、哪些是低風險。這也是為什麼有些人寧可付錢請人解讀報告:工具只告訴你哪裡有洞,不會告訴你「這個洞在你的環境下可不可能被利用」。

五、自己跑工具,還是找人做?

寫到這裡你可能發現一件事——這些工具的安裝步驟看起來都不長,但每一個都假設你會用 SSH、會看錯誤訊息、會自己判斷掃描結果裡哪些是真漏洞、哪些是誤報。

這就是門檻所在。

我整理一下幾種狀況,你可以對號入座:

狀況適合的做法
個人部落格、無金流裝 Wordfence 免費版 + 關掉 XML-RPC 即可
公司官網、無會員資料加上強制密碼政策 + 每月跑一次 WPScan 外掛掃描
電商、有客戶資料上述全部 + 定期檔案完整性比對 + 安全事件處理流程
已經被入侵過別自己救,找人來做完整清查

最後一項特別重要,已經被植入後門的站台,自己刪掉看到的惡意檔案通常沒用,駭客會在你看不到的地方留好幾個備援,我們看過最棘手的案例是站長以為清乾淨了,結果三天後又被植入廣告,因為主機層級已經被攻陷,駭客拿到系統權限。


整理一下

WordPress 安全防護的三個核心動作:

  1. 弱密碼檢查 — 把 admin 帳號刪掉、強制 16 字元以上密碼
  2. 檔案完整性 — 用 wp core verify-checksums 定期比對核心檔案,外掛用 wp plugin verify-checksums --all
  3. 關掉 XML-RPC — 99% 的網站根本不需要它,預設打開純粹是技術債

如果你看到這裡發現自己連 SSH 怎麼連都不知道,那大概你也不會想花一個週末研究這些指令,這時候找人做兩小時就解決,會比你自己摸索三週還划算。

我們有提供 WordPress 安全健檢服務,會跑完上述所有檢查項目,附上一份白話的報告告訴你網站現在的狀態、哪些地方有風險、優先處理順序是什麼。有興趣的話與我們聯絡

目錄

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

Picture of 賴俊吾 / Oberon Lai
賴俊吾 / Oberon Lai

現為全職 WordPress 工程師,網站開發經歷 11 年,專攻前端工程與 WordPress 佈景主題、外掛客製化開發

訂閱電子報

Hi,我是 Oberon,我會固定在每週五早上發送接案心得以及與 WordPress 相關的電子報,同時也會分享一些實用的開發知識,讓你在 WordPress 的接案路上不孤單!

專注於分享 WordPress 開發、接案技巧、專案管理等自由工作者必備知識與心得

© 2025 想點創意科技有限公司

想點創意科技有限公司 | 統一編號 90516823
Designed by Hend Design | 隱私權政策

訂閱電子報

Hi,我是 Oberon,我會固定在每週五早上發送接案心得以及與 WordPress 相關的電子報,同時也會分享一些實用的開發知識,讓你在 WordPress 的接案路上不孤單!