953 個電商網站被植入會躲掃描器的 JavaScript:Magento CMS block 成為攻擊跳板
Sansec 揭露一起自 2025 年 7 月持續至今的 Magento 攻擊活動,攻擊者透過 PolyShell 和 SessionReaper 漏洞入侵 953 個線上商店,在 CMS block 中植入 JavaScript loader,只對真實訪客投放 payload、躲避安全掃描器。最新的 loader 整合瀏覽器指紋識別,並將 payload 存入 localStorage 持久化。
- Sansec 發現一起自 2025 年 7 月持續至今的 Magento 攻擊活動,攻擊者在 953 個線上商店的 CMS block 中植入 JavaScript loader。Loader 透過外部網域(最新為 deepveindrilling.com)載入 payload,但只對真實訪客回應,安全掃描器會收到空回應或無害程式碼。攻擊者使用的網域歷經 5 次更換,每次更換都代表舊網域被偵測或失效。
- 最新版本的 loader 整合瀏覽器指紋識別(browser fingerprinting)來過濾機器人和安全掃描器,只對真實購物者投放惡意程式碼。Payload 會被存入瀏覽器的 localStorage,讓後續訪問時即使外部網域失效仍能執行惡意程式碼。早期版本使用 Keitaro 作為流量分發系統(TDS),最新版本則整合 bot-filtering 邏輯到 loader 本身。
- 471 個 Magento 商店透過 PolyShell(CVE-2026-48356)漏洞被植入 loader,102 個透過 PolyShell 或 SessionReaper(CVE-2025-54236)漏洞上傳檔案。其中一個運行 Magento 2.4.7-p1 的商店在 pub/media/custom_options/quote/ 目錄有偽裝成 PNG 的 PolyShell webshell,且未套用 Adobe 的 PolyShell 修補。另一個運行 Magento 2.4.7-p10 且已套用所有核心修補的商店也被入侵,攻擊者新增偽裝管理員帳號後植入程式碼。
發生了什麼
想像你在一個看起來正常的線上商店購物,挑選商品、加入購物車、進入結帳頁面。頁面載入速度正常,沒有任何異狀。你輸入信用卡號碼、有效期限、安全碼,按下「確認付款」。
你不知道的是,當頁面載入時,一段隱藏的 JavaScript 已經在背景執行。這段程式碼會在你輸入信用卡資料的瞬間攔截,然後將資料傳送到攻擊者的伺服器。整個過程不到一秒,頁面沒有任何變化,你的付款正常完成。
店家也不知道。他們的安全掃描器每天執行,但掃描器看到的頁面是乾淨的——因為攻擊者的伺服器只對真實訪客投放惡意程式碼,對掃描器回傳無害的內容。
2025 年 7 月至 2026 年 10 月,Sansec(荷蘭電商安全公司)發現一起持續超過 15 個月的 Magento 攻擊活動。攻擊者入侵 953 個線上商店,在 Magento 的 CMS block 中植入 JavaScript loader,只對真實訪客投放 payload、躲避安全掃描器。最新版本的 loader 整合瀏覽器指紋識別,並將 payload 存入 localStorage 持久化。
來源:本文整理自 The Hacker News 於 2026 年 10 月 26 日發布的報導,原始研究為 Sansec 的安全研究報告。原文連結
攻擊流程:CMS block → loader → payload
CMS block:Magento 的內容渲染機制
CMS block 是 Magento 用來在店面頁面渲染靜態內容的機制。這些 block 儲存在 cms_block 資料庫表中,可以被插入到頁面的任何位置,例如:
- Header(頁首)
- Footer(頁尾)
- 促銷橫幅
- 側邊欄
當訪客開啟包含這些 block 的頁面時,Magento 會從資料庫讀取 block 的內容並渲染到 HTML 中。如果 block 的內容包含 JavaScript,這段程式碼就會在訪客的瀏覽器中執行。
攻擊者只需要在一個 CMS block 中植入一小段 JavaScript loader,這段程式碼就會在每個訪客開啟該頁面時執行。
Loader:只對真人投放 payload
Loader 是一小段 JavaScript 程式碼,它的作用是向攻擊者控制的外部網域發送請求,載入真正的 payload。
但攻擊者的伺服器不會對所有請求都回傳 payload。它會先檢查請求來源:
- 如果是真實訪客:回傳竊取資料的 JavaScript payload
- 如果是安全掃描器:回傳無害的內容(例如
QWE=123;,只是設定一個 cookie)或空回應
Sansec 在報告中指出:「當你訪問時,這段程式碼會讓你的瀏覽器向攻擊者的伺服器詢問下一步該做什麼。伺服器會先檢查你是真實購物者還是安全掃描器,掃描器會收到空回應。」
五個網域的演化
攻擊者在這 15 個月內使用了 5 個不同的網域,每次更換都代表舊網域被偵測或失效:
- manulfie.click(2025 年 7 月首次出現)
- neswnsssn.click(2025 年 12 月首次出現)
- lanhd6549tdhse.top(2026 年 3 月首次出現)
- additionalver.com(2026 年 6 月首次出現)
- deepveindrilling.com(2026 年 10 月首次出現,註冊於 2026 年 10 月 6 日)
最新的 deepveindrilling.com 被 Sansec 在 83 個線上商店的 CMS block 中發現。這個網域託管在 Cloudflare 後方,只對來自被入侵商店的真實訪客的 script 請求回應。
兩種版本的 loader
Sansec 發現了 兩種不同版本的 loader,顯示攻擊者持續改進技術。
第一版:localStorage 持久化
第一版 loader 會將從外部網域載入的 payload 存入瀏覽器的 localStorage。
這個設計的目的是持久化:即使攻擊者的外部網域被查封或失效,儲存在 localStorage 中的惡意程式碼仍會在訪客後續訪問時執行。
第二版:整合瀏覽器指紋識別
第二版 loader 在第一版的基礎上增加了瀏覽器指紋識別(browser fingerprinting)檢查,用來過濾機器人和安全掃描器,確保只有真實購物者會收到惡意程式碼。
這代表即使安全研究員或自動化掃描器訪問被入侵的商店,他們也看不到惡意程式碼——攻擊者的伺服器會根據瀏覽器特徵判斷來源,只對真實訪客回應。
Keitaro:早期的流量分發系統
在活動的早期階段,攻擊者使用 Keitaro 作為 流量分發系統(TDS, Traffic Distribution System)。
Keitaro 是一個廣告追蹤與分析平台,但也被濫用於惡意活動。攻擊者使用它來根據訪客的特徵(例如作業系統、瀏覽器、IP 位址)決定要回傳什麼回應:
- 真實訪客:回傳 payload
- 可疑來源:回傳重新導向或空回應
Sansec 測試時,以 Windows 桌面訪客的身分請求 additionalver.com 的 script,收到的回應是 QWE=123;——這段程式碼除了設定一個 cookie(將訪客標記 24 小時)之外什麼也不做。
最新的 deepveindrilling.com 網域不再使用 Keitaro,而是將 bot-filtering 邏輯整合到 loader 本身。
入侵途徑:PolyShell、SessionReaper、管理員帳號
Sansec 追蹤到三種主要的入侵途徑。
PolyShell(CVE-2026-48356):471 個商店
PolyShell(CVE-2026-48356)是 Magento 的一個漏洞,允許攻擊者上傳 webshell 並執行任意程式碼。
Sansec 估計有 471 個 Magento 商店透過 PolyShell 漏洞被植入 loader。
在其中一個案例中,一個運行 Magento 2.4.7-p1 的商店在 pub/media/custom_options/quote/ 目錄中有偽裝成 PNG 圖片的 PolyShell webshell,旁邊就是植入了 additionalver.com loader 的 CMS block。這個 block 在 10 月 7 日更換成 deepveindrilling.com。
關鍵的是:這個商店還沒有套用 Adobe 的 PolyShell 修補(APSB26-73,針對支援的版本線釋出的修補)。
SessionReaper(CVE-2025-54236):102 個商店
SessionReaper(CVE-2025-54236)是另一個 Magento 漏洞,允許攻擊者上傳檔案。
Sansec 發現 102 個商店透過 PolyShell 或 SessionReaper 漏洞上傳檔案後被植入 loader。
偽裝管理員帳號
在另一個案例中,一個運行 Magento 2.4.7-p10、且已套用所有核心修補的商店仍然被入侵。
攻擊者在這個商店中新增了一個偽裝的管理員帳號,然後使用這個帳號植入程式碼。
這代表即使修補了所有已知漏洞,弱密碼或竊取的憑證仍可能讓攻擊者取得管理員存取權限。
不只 Magento:其他 380 個商店
Sansec 發現的 953 個商店中,471 個透過 PolyShell 入侵,102 個透過 PolyShell 或 SessionReaper 上傳檔案。這代表還有約 380 個商店的入侵途徑尚未確認。
可能的途徑包括:
- 其他 Magento 漏洞
- 第三方擴充套件的漏洞
- 竊取的管理員憑證
- 弱密碼
- 其他電商平台的漏洞
PHP2Shell:新的威脅
報導末尾提到,這個揭露是在 PHP2Shell 漏洞被廣泛利用的背景下發生的。
PHP2Shell 是 PHP 的兩個關鍵漏洞(CVE-2026-109618 和 CVE-2026-109619),在上週揭露後就看到廣泛的利用嘗試。
安全研究員 Adel Karimi(Perplexity)記錄到第一起在野成功利用的案例:攻擊者在 honeypot 伺服器上執行 shell 指令,使用 wget、curl 或 PHP CLI 從遠端伺服器(162.35.99.94:80)下載額外的 payload。
不過,目前還沒有觀察到被下載的第二階段 artifact。
如何偵測與防禦
稽核 CMS block 與 CMS page
最直接的偵測方法是直接查詢資料庫,尋找包含外部 script 的 CMS block 或 page。
Sansec 建議檢查 cms_block 和 cms_page 表,尋找:
- 包含
<script src="https://外部網域/">的內容 - 包含可疑網域(如
.click、.top、陌生的.com)的內容 - 最近新增或修改的 block
更新到最新版本
確保 Magento 已更新到最新版本,修補 PolyShell(CVE-2026-48356)和 SessionReaper(CVE-2025-54236)漏洞。
Adobe 已在 APSB26-73 公告中釋出 PolyShell 的修補,針對支援的版本線。
強制強密碼
即使修補了所有已知漏洞,弱密碼或竊取的管理員憑證仍可能讓攻擊者建立偽裝帳號。
強制所有管理員帳號使用強密碼,並定期稽核帳號清單。
檢查 pub/media 目錄
檢查 pub/media 目錄(特別是 custom_options/quote/ 等子目錄)是否有:
- 不該存在的 PHP 檔案
- 偽裝成圖片(如
.png)的 webshell
實施內容安全政策(CSP)
部署 Content Security Policy(CSP),限制頁面只能載入來自信任網域的 script。
這能阻止 loader 向攻擊者的外部網域發送請求。
不要只依賴掃描器
最重要的是:不要以為掃描器沒發現就代表安全。
攻擊者專門設計 loader 來躲避掃描器,只對真實訪客投放 payload。你需要:
- 直接查詢資料庫
- 檢查檔案系統
- 監控網路流量
- 測試真實訪客的瀏覽器行為
你可以學到什麼
站在攻擊者的角度:電商網站是完美的目標——大量訪客、輸入信用卡資料、通常沒有專職資安團隊。Magento 的 CMS block 提供了一個完美的植入點:只需要在資料庫中改一個欄位,惡意程式碼就會在每個訪客的瀏覽器中執行。為了躲避偵測,他設計了只對真人投放 payload 的 loader——掃描器看到的永遠是乾淨的頁面。即使外部網域被查封,payload 仍存在訪客的 localStorage 中繼續執行。15 個月內更換 5 個網域、入侵 953 個商店,而大部分店家可能到現在還不知道。
- 01CMS block 是攻擊跳板:Magento 的 cms_block 表用於渲染靜態內容,攻擊者只需在這裡植入一小段程式碼,就能在所有訪客的瀏覽器中執行。
- 02Loader 模式躲避掃描器:不直接植入完整 payload,而是植入一個向外部網域請求的 loader,讓攻擊者能動態控制要投放什麼內容。
- 03只對真人投放 payload:攻擊者的伺服器會檢查請求來源,只對真實訪客回傳惡意程式碼,掃描器會收到無害的回應。
- 04localStorage 持久化:將 payload 存入瀏覽器的 localStorage,即使外部網域失效仍能繼續執行。
- 05瀏覽器指紋識別過濾機器人:整合 browser fingerprinting 檢查,進一步過濾掉自動化工具和安全研究員。
- 06多個入侵途徑並行:PolyShell、SessionReaper、偽裝管理員帳號,攻擊者不依賴單一漏洞。
- 07網域輪替對抗封鎖:15 個月內使用 5 個網域,每次被偵測就更換,讓防禦者難以追蹤。
- 08即使修補所有漏洞仍可能被入侵:弱密碼、竊取的憑證、第三方擴充套件的漏洞都可能成為入口。
- 01CMS blockMagento 用來在店面頁面渲染靜態內容的機制,攻擊者在此植入 JavaScript loader。
- 02JavaScript loader一小段程式碼,向攻擊者的外部網域請求真正的 payload,讓攻擊者能動態控制要投放什麼內容。
- 03PolyShell(CVE-2026-48356)Magento 漏洞,允許攻擊者上傳 webshell 並執行任意程式碼,471 個商店透過此漏洞被入侵。
- 04SessionReaper(CVE-2025-54236)Magento 漏洞,允許攻擊者上傳檔案,102 個商店透過此漏洞或 PolyShell 上傳檔案後被入侵。
- 05Browser fingerprinting(瀏覽器指紋識別)收集瀏覽器特徵來識別訪客身分,攻擊者用來過濾掉機器人和安全掃描器。
- 06localStorage瀏覽器的本地儲存空間,攻擊者將 payload 存入其中以持久化,即使外部網域失效仍能執行。
- 07Keitaro廣告追蹤與分析平台,被攻擊者早期用作流量分發系統(TDS),根據訪客特徵決定要回傳什麼內容。
- 08Web skimmer竊取線上商店顧客信用卡資料的惡意程式碼,通常透過 JavaScript 注入到結帳頁面。
全部唯讀,不改任何設定;做完你會知道自己有沒有同樣的破口。
- 查詢 cms_block 表尋找可疑的外部 script
SELECT * FROM cms_block WHERE content LIKE '%<script%src=%'看到什麼代表什麼:找出所有包含外部 script 的 CMS block,檢查網域是否為信任的網域(例如 Google Analytics、CDN)。任何陌生的 .click、.top、或可疑的 .com 網域都應立即調查。 - 檢查 Magento 版本與修補狀態
php bin/magento --version看到什麼代表什麼:確認版本號,然後對照 Adobe 的安全公告,確認是否已修補 PolyShell(APSB26-73)和 SessionReaper。 - 檢查 pub/media 目錄是否有 webshell
find pub/media -type f -name '*.php' -o -name '*.png' -exec file {} \; | grep 'PHP'看到什麼代表什麼:找出所有 PHP 檔案或偽裝成圖片的 webshell。pub/media 目錄不應該有任何可執行的 PHP 檔案。 - 稽核管理員帳號清單
SELECT * FROM admin_user WHERE is_active = 1看到什麼代表什麼:列出所有啟用的管理員帳號,確認每個帳號都是已知且授權的。移除任何可疑或不認識的帳號。 - 測試真實訪客的瀏覽器行為看到什麼代表什麼:用真實的瀏覽器(不是掃描器)開啟商店的結帳頁面,打開開發者工具的 Network 面板,檢查是否有向陌生網域發送的請求。
- 檢查最近修改的 CMS block
SELECT * FROM cms_block WHERE update_time > DATE_SUB(NOW(), INTERVAL 30 DAY) ORDER BY update_time DESC看到什麼代表什麼:列出最近 30 天內修改過的 CMS block,檢查修改內容是否合理。
如果你管理 Magento 商店
- 立即查詢 cms_block 表:尋找包含外部 script 的 block,特別是指向 .click、.top 等可疑網域的 script。
- 更新到最新版本:修補 PolyShell 和 SessionReaper 漏洞。
- 檢查 pub/media 目錄:移除所有不該存在的 PHP 檔案或偽裝成圖片的 webshell。
- 稽核管理員帳號:移除任何未經授權的帳號,強制所有帳號使用強密碼。
- 部署 CSP:限制頁面只能載入來自信任網域的 script。
- 不要只依賴掃描器:攻擊者專門躲掃描器,你需要直接查詢資料庫與檢查檔案系統。
- 監控網路流量:設定告警偵測向陌生網域發送的請求。
這個攻擊證明:掃描器看到的不一定是真相。攻擊者會設計專門躲避掃描器的機制,只對真實訪客投放惡意程式碼。你需要更深入的偵測手段。
來源
每篇新文章一封:三點摘要、關鍵字定義、今天能做的一件事。
延伸閱讀
CISA 將 PolyShell 與 Brotli 漏洞列入 KEV:數百個電商網站被入侵,Node.js 成為新目標
美國 CISA 確認 Adobe Commerce 的 PolyShell 漏洞(CVE-2026-48356)與 Google Brotli 解碼器漏洞(CVE-2026-111497)已遭主動攻擊。Sansec 觀察到攻擊者利用 PolyShell 入侵數百個電商網站,ELLIO 偵測到 Brotli 野外利用流量。91% 雲端環境有 Brotli 漏洞風險,82% 有公開暴露的 Node.js 實例。
Cloudflare Q3 DDoS 報告:每小時 8226 起攻擊,短時低頻攻擊暴增 208%
Cloudflare 於 2026 年 Q3 自動緩解 1820 萬起網路層 DDoS 攻擊與 14.4 兆個 HTTP DDoS 請求,相當於每 0.44 秒一起攻擊。網路層攻擊較 Q2 增加 38%,短時低頻攻擊(10 分鐘內、1 Gbps 以下)暴增 208%。超大型攻擊(1 Tbps 以上)則減少 69%,可能與執法行動打擊 DDoS 服務有關。美國、中國、印尼、英國、土耳其是最常被攻擊的國家。