這是一起典型的從伺服器端漏洞(Server-side Vulnerability)擴展到客戶端攻擊(Client-side Attack)的案例。攻擊者利用 Ghost CMS 的一個嚴重漏洞,將數百個合法網站轉化為分發惡意軟體的跳板。對於工程師來說,這不僅是關於更新版本,更重要的是理解攻擊者如何串聯不同的技術環節來達成最終控制使用者的電腦。
漏洞起因與權限提升
這次攻擊的核心在於 CVE-2026-26980,這是一個存在於 Ghost CMS Content API 中的 SQL Injection(SQL 注入)漏洞。SQL 注入是指攻擊者透過在輸入欄位插入惡意的 SQL 指令,欺騙資料庫執行非預期的查詢。
在這次案例中,該漏洞的危險之處在於它允許未經身分驗證的攻擊者直接讀取資料庫中的任意數據。攻擊者的目標非常明確:竊取 Admin API Key(管理員 API 金鑰)。在 Ghost CMS 的架構中,Admin API Key 擁有極高權限,可以直接透過 API 修改網站上的文章內容。一旦金鑰外流,攻擊者就不需要密碼,就能像管理員一樣批次修改所有發佈的文章。
從網站污染到流量分發
拿到管理權限後,攻擊者採取了中毒式攻擊(Poisoning)。他們在大量文章的底部注入了惡意的 JavaScript Loader(載入器)。這個載入器採取兩階段設計,第一階段僅僅是一個輕量級的腳本,負責從外部伺服器動態抓取真正的攻擊載荷(Payload)。
為了規避安全設備的偵測,攻擊者使用了 Cloaking(遮蔽技術)。他們透過 Adspect 等商業服務,對訪問者進行指紋分析(Fingerprinting)。如果訪問者是安全掃描器或搜尋引擎爬蟲,伺服器會回傳正常的網頁內容;但如果判定是真實的潛在受害者,則會推送惡意的 JavaScript 程式碼。這種方式讓受感染的網站能長期潛伏而不被發現。
ClickFix 攻擊與社交工程
當受害者進入被污染的頁面時,會看到一個偽造的 CAPTCHA(驗證碼)驗證視窗,要求使用者證明自己不是機器人。這就是所謂的 ClickFix 攻擊。
這種攻擊不再依賴傳統的檔案下載,而是利用社交工程誘導使用者執行指令。它會要求使用者複製一段 Base64 編碼的指令,並將其貼上到 Windows 的 Run(執行)對話框中。由於指令經過編碼,一般使用者無法看出其真實意圖。
指令執行後的連鎖反應
一旦使用者執行該指令,電腦將觸發一連串的自動化動作:
首先,指令會作為 Dropper(下載器),從遠端下載一個 ZIP 壓縮檔並解壓縮。
接著,執行其中的 Windows 批次檔(Batch Script),透過 PowerShell 下載一個 DLL 檔案或 JavaScript 載荷。
最後,利用 Windows 內建的 rundll32.exe 執行該 DLL,或安裝一個修改過的 Electron 應用程式。
最終目標是達成持久化(Persistence),讓惡意程式在背景運行並每 30 秒與遠端伺服器通訊,接收攻擊者的指令,例如執行任意程式或竊取資料。
實務建議與防禦重點
針對此類攻擊,維運與開發人員應採取以下措施:
第一,立即更新。Ghost CMS 已在 6.19.1 版本修復此漏洞,請確保版本在該版本之後。
第二,憑證輪替。僅更新版本是不夠的,因為 Admin API Key 可能已經被竊取。必須重新產生所有 API 金鑰並更改管理員密碼。
第三,內容稽核。檢查資料庫中文章內容是否被注入異常的 script 標籤,特別是頁尾部分。
第四,日誌分析。審查 API 存取日誌,尋找非預期的管理操作記錄。
來源:thehackernews.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。