|
昨天在處理一位客戶主機被駭過重灌之後,CPU 還是異常飆高的狀態,但因為主機權限不在客戶這邊,僅能就有限的資訊來進行評估 CPU 飆高的問題,為了避免你的客戶可能也遇到類似的問題,我整理了幾個 WP 網站容易被攻擊的地方以及對應方式~ 一、弱密碼檢查:駭客最便宜的入侵方式弱密碼指的是被列在常見密碼字典裡的那種—— 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 補上漏洞掃描的部分。 順手做一件事:刪掉可疑帳號掃完弱密碼之後,順便進後台 → 使用者 → 全部使用者,看看有沒有不該存在的管理員。常見的後門帳號特徵:
看到這種帳號直接刪掉,並把該帳號發過的文章重新指派給你自己。如果你光是看到使用者列表裡有 5 個叫 預防勝於檢查不管哪一派,最後都要走到同一步:把密碼政策設好。其實前面提到的 Solid Security 免費版就內建完整的 Password Requirements 設定,可以強制:
啟用並設完成後,未來新密碼就不會再掉進弱密碼陷阱。Wordfence 也有類似功能在 Login Security → Settings 裡,看你裝哪個就用哪個的設定,不需要再多裝一個外掛。 二、檔案完整性比對:你的程式碼有沒有被偷偷改過第二個風險更隱蔽,攻擊者進來之後不會馬上破壞你的網站,他們會在你的主題或外掛裡塞一段惡意程式碼,可能是:
問題是,這些程式碼藏在 工具一:WordPress 官方核心檔案校驗WordPress 官方對核心檔案有提供校驗碼。用 wp-cli 跑:
它會把你網站上的 WordPress 核心檔案逐一比對官方版本,如果有任何一個檔案被動過會跳出來提醒你,外掛部分可以用 工具二:GitHub 上的 wp-cli/checksum-command這是 wp-cli 的官方擴充,安裝方式:
裝完之後就能對所有外掛、主題做完整性比對,對於沒在官方 WordPress.org 倉庫的付費外掛,這個工具沒辦法檢查,這時候要靠下一個工具。 工具三:手動建立檔案指紋進階一點的做法是定期把 三、XML-RPC 攻擊:那個你從來沒打開過的後門XML-RPC 是 WordPress 一個老舊的遠端呼叫介面,原本設計給手機 App、Pingback、Trackback 用,問題是你 99% 不會用到它,但它預設是開的。 攻擊者愛它的原因是:透過 XML-RPC 的 怎麼檢查自己有沒有開打開瀏覽器,把網址換成你的網站加上
如果看到「XML-RPC server accepts POST requests only.」這行字,代表它是開的。 關閉的方法(三選一)
如果你完全沒用過 Jetpack 或 WordPress 手機 App,直接關掉沒有任何副作用。 四、用 WPScan 做完整的漏洞掃描WPScan 是業界最常用的 WordPress 漏洞掃描器,開源、免費、技術人員實務都在用,我介紹它不是要每個站長都自己跑,而是讓你知道專業的健檢長什麼樣,以及它能查出哪些前面外掛掃不到的東西。 GitHub 連結: 它由 Ruby 寫成,背後維護一個專屬的 WordPress 漏洞資料庫(WPVulnDB),收錄了核心、外掛、主題的所有已知 CVE,免費版每天可以查 25 次外掛漏洞,對單一站台的健檢來說綽綽有餘。 安裝macOS(已裝 Homebrew):
Linux(Ubuntu/Debian):
也可以直接用官方 Docker image:
裝完之後,去 用法一:基本掃描
跑完會列出 WordPress 版本、主題、暴露的檔案、發現的使用者名稱、以及對應的 CVE 漏洞清單,如果你的站台是電商或會員制,建議在凌晨流量低時跑,避免被 WAF 擋下。 用法二:列出所有外掛
aggressive 模式會掃出 vulnerable plugins、popular plugins、所有偵測得到的版本,但會送幾千次請求,請確認你有權限掃這個站。 用法三:找出可登入的使用者名稱
很多 WordPress 站台沒關掉 REST API 或 author archive,攻擊者可以直接列出所有使用者名稱,這個指令幫你站在攻擊者角度看自己有沒有暴露——如果它能列出 admin、editor 這些帳號,駭客也能。 對策是裝 用法四:模擬密碼字典攻擊
這是滲透測試常用的指令:拿一份密碼字典(網路上找
用法五:把報告存成 JSON 給工程師
JSON 格式方便後續做自動化比對。例如每月跑一次、把結果丟進 diff 工具,就能知道這個月新增了哪些漏洞。 用法六:定期更新漏洞資料庫WPScan 本機會快取漏洞資料庫,跑掃描前先更新一下:
這個指令會去 WPVulnDB 拉最新的 CVE 清單,確保你掃出來的結果是最新的。 怎麼讀掃描結果WPScan 用三種顏色標示風險:
實務上多數站長卡在「掃出來十幾個紅色警告」之後就不知道下一步——哪些是真的會被打、哪些是低風險。這也是為什麼有些人寧可付錢請人解讀報告:工具只告訴你哪裡有洞,不會告訴你「這個洞在你的環境下可不可能被利用」。 五、自己跑工具,還是找人做?寫到這裡你可能發現一件事——這些工具的安裝步驟看起來都不長,但每一個都假設你會用 SSH、會看錯誤訊息、會自己判斷掃描結果裡哪些是真漏洞、哪些是誤報。 這就是門檻所在。 我整理一下幾種狀況,你可以對號入座: 狀況適合的做法個人部落格、無金流裝 Wordfence 免費版 + 關掉 XML-RPC 即可公司官網、無會員資料加上強制密碼政策 + 每月跑一次 WPScan 外掛掃描電商、有客戶資料上述全部 + 定期檔案完整性比對 + 安全事件處理流程已經被入侵過別自己救,找人來做完整清查 最後一項特別重要,已經被植入後門的站台,自己刪掉看到的惡意檔案通常沒用,駭客會在你看不到的地方留好幾個備援,我們看過最棘手的案例是站長以為清乾淨了,結果三天後又被植入廣告,因為主機層級已經被攻陷,駭客拿到系統權限,而這很有可能就是我昨天遇到的狀況。 整理一下WordPress 安全防護的三個核心動作:
如果你看到這裡發現自己連 SSH 怎麼連都不知道,那大概你也不會想花一個週末研究這些指令,這時候找人做兩小時就解決,會比你自己摸索三週還划算。 我們有提供 WordPress 安全健檢服務,會跑完上述所有檢查項目,附上一份白話的報告告訴你網站現在的狀態、哪些地方有風險、優先處理順序是什麼。有興趣的話與我們聯絡吧。 |
大家端午快樂,這週分享一下我目前的主力開發工具~ 開發工具的使用歷程 在 AI 時代前,我都是使用 PhpStorm。PHPStorm 確實順手——跳到函式定義、儲存時自動格式化和檢查,這些功能讓開發效率提升不少。 進入 AI 時代後,我用了 Cursor 好幾個月。自動補全和聊天介面加速了不少開發流程。但用了一段時間,我發現自己還是需要理解程式碼的能力,最後回到 PHPStorm 搭配 Claude Code 的組合。 後來也試過 Google 的 Antigravity。除了免費額度以外,用起來跟 VS Code 差不多。直到某天我打開系統監控,發現 Antigravity 的記憶體佔用竟然到了 40 幾 GB。 40 幾 GB,只為了一個程式碼編輯器。 程式碼視窗還重要嗎? 這讓我開始重新思考一個問題:傳統 IDE 的設計核心是「程式碼」。整個介面以程式碼編輯器為主體,側邊欄、終端機、除錯面板都是輔助角色。 但我現在的開發流程已經變了。大部分時間我在跟 Claude Code 對話,描述需求、確認方向、審查它產出的結果。真正需要自己打開檔案逐行閱讀的時候,一天可能不到三成。...
前陣子,我教會一位朋友使用 Claude Code。他完全不會寫程式,連終端機是什麼都沒聽過。但他有一個很清楚的產品想法,一直找不到工程師幫他做。 兩週後,他把那個產品完整地實作出來了。 不是原型、不是 wireframe,是一個可以實際運作的產品。他全程沒有寫過任何一行程式碼——他只是用中文描述他要什麼功能,Claude Code 就幫他把程式寫出來、跑起來、除完錯。 你可能會想:那它跟 ChatGPT 到底差在哪? 一、你說中文,它寫程式 大部分人聽到「Claude Code」就先退了一步。Code,程式碼,那不是工程師的事嗎? 試試看跟它說這句話:「幫我把這個資料夾裡所有 PDF 的檔名,整理成一份清單。」 它會自己寫一段程式碼、跑完、把清單生出來。你完全不需要看懂那段程式碼。同樣的事在 ChatGPT 上做,它會把程式碼貼給你看,然後你得自己想辦法找地方執行。 你需要學的不是程式語言,而是怎麼把需求講清楚。但光是能下指令還不夠——如果它每次只能做一件事就停下來等你,那跟比較聰明的 Siri 也沒什麼兩樣。 二、它不是聊天機器人,它是 Agent 用過 ChatGPT 或...
如果你有在使用 AI 開發 WordPress 外掛,並且要設計一些自訂的後台管理介面時,一定遇過資料送出時無法正確儲存,或是儲存後被導向到奇怪的頁面。 根據我的經驗,這十之八九是 Nonce 的問題,AI 在處理 Nonce 這一塊常常會出錯,為了讓 AI 更好地理解該怎麼處理 Nonce,這篇文章就來分享 Nonce 的作用,以及如何讓 AI 不要再犯這種錯。 Nonce 是為了擋 CSRF 而生的 所謂的 Nonce,最主要的功能是要防止跨站請求偽造(也就是俗稱的 CSRF)。 CSRF 主要的攻擊方式,是攻擊者誘導已經登入受害者的瀏覽器,自動發送請求到你的網站,也就是說,攻擊者不需要入侵你的網站,只要你的瀏覽器在登入狀態下點擊了惡意網址,攻擊就會開始。 舉個例子: 站長登入了某個 WordPress 網站的後台沒登出,繼續開著分頁 站長切換到另一個由惡意攻擊者準備好的頁面,這個惡意頁面藏了一段惡意程式 程式裡面的連結會指向站長 WordPress 後台 瀏覽器在送出這個請求時,會自動帶上站長已經登入的 Cookie(因為原本分頁沒關) 站長踩到這個惡意網址、讀到那段...