Dream 研究團隊揭露 PHP2Shell 與 Kernel LPE 複合攻擊,入侵 25 臺防火牆(含美國政府)
Chained PHP2Shell Exploit Roots 25 Servers, Including US Government Servers
Dream 研究團隊發現,利用 PHP2Shell 與 Kernel LPE 兩個漏洞連結,攻擊者在 10 月 25 日成功入侵 25 臺防火牆,其中包括美國政府相關系統。
研究揭示一系列複雜漏洞連結,凸顯管理介面曝露對政府網路安全的深遠威脅,並指出攻擊者利用 AI 助手加速開發,提示防禦者須加強版本偵測與即時補丁。
自訂 PHP2Shell 漏洞與核心 LPE 連鎖,實際環境中取得防火牆 root 許可權
10 月 25 日,Dream 研究人員發現了一個似乎是中國 AI 協助的攻擊活動的痕跡,該活動在 25 臺伺服器上取得 root 許可權,其中包括美國政府關聯環境中的系統。攻擊者將 PHP2Shell 與核心提權漏洞結合,以入侵公開的系統。
受影響的裝置執行某大型供應商的防火牆軟體特定版本。為安全考量,我們不會透露供應商或受影響版本,且已通知該供應商。
攻擊者接著對 Active Directory 發動攻擊。回收的證據證實了憑證擷取與目錄清單列舉。
此次行動說明公開的管理介面如何成為進入組織身份基礎設施的通道。對於政府防衛者而言,發現漏洞僅是起點,真正的挑戰則從識別易受攻擊的系統延伸至瞭解並限制入侵所帶來的存取。
以下研究採用 Dream 的自主網路研究產品進行主動威脅偵測,Hero。
發現
Dream 研究人員辨識出完整的攻擊作業,其中包含自訂化的 PHP2Shell 漏洞鏈(CVE-2026-109618/CVE-2026-109619)與 Fragnesia 核心提權(CVE-2026-46300)的結合、目標清單、利用紀錄,以及約 40 個自訂後利用指令碼。
其中包含一場在美國、日本、臺灣與南韓共 25 臺伺服器取得 root 許可權的攻擊活動的證據。取得 root 後,攻擊者將目標鎖定在美國政府關聯環境中的三臺特定伺服器。
所發現的證據顯示,攻擊從實驗室環境中的漏洞開發開始,結束於對美國政府機構內部 Active Directory 域的持續存取。
AI 在攻擊中的應用
我們亦觀察到攻擊基礎設施中 AI 協助工具的一些證據:
- 已安裝 Claude Code
- 一個名為 aiscan 的 AI 驅動進攻性安全平臺已配置中國 LLM DeepSeek 與 Kimi
- 存在中國偵察平臺 FOFA 的 API 金鑰
雖然我們沒有直接證據顯示 AI 工具專門用於撰寫漏洞或後利用指令碼,但程式碼結構、註解風格及約 40 個指令碼的一致性暗示了 AI 協助開發。儘管如此,該行動並不似乎是完全自主的國家級攻擊。
漏洞:兩個漏洞連鎖成一個請求
攻擊者開發了兩個獨立漏洞,並將其連鎖以在單一 HTTP 請求中,無需任何憑證,即可取得執行特定版本大型供應商防火牆軟體的任何防火牆的 root 許可權。
PHP2Shell(CVE-2026-109618 / CVE-2026-109619)— 遠端程式執行
我們回收的實作為自訂、非公開版本,而非任何已知公開 PHP2Shell 漏洞的複製。它遵循相同的基礎概念,但似乎是獨立開發並專門為目標防火牆平臺量身打造。
該漏洞針對防火牆 appweb 管理伺服器中 PHP 的 session.upload_progress 機制。防火牆作業系統使用 PHP 8.0.30,並設定高記憶體限制,允許攻擊中的記憶體破壞階段。
攻擊分為四個協調階段:
- A1 — 記憶體耗盡(約383MB): 攻擊者以精心製作的 multipart POST 請求轟炸伺服器,每個請求包含大量檔名與會話進度資料。這使 PHP 的記憶體分配器達到極限,迫使系統進入可預測的記憶體佈局。
- B1 — 資訊外洩: 第二個請求利用 A1 的舊會話 ID 長度,強迫發生越界讀取。伺服器的
Set-Cookie響應標頭攜帶外洩的指標值——給予攻擊者執行中的程序中libphp.so的基底位址。 - A2 — 舊參照設定(約500MB): 再次施加記憶體壓力初始化一個會話,留下
http_session_vars為活躍的zend_reference,隨後觸發第二次 OOM,留下mod_data=NULL—— 產生一個攻擊者可在 B2 中偽造的舊參照。 - B2 — 程式碼執行: 最後一次請求在已釋放的記憶體區域偽造一個 PHP HashTable 條目。偽造條目的
pDestructor回呼指向zif_system(PHP 的system()函式),其資料指向一個 shell 指令字串。當 PHP 的清理處理器遍歷 HashTable 時,會呼叫偽造的析構函式——以nobody使用者身份執行任意指令。
Fragnesia(CVE-2026-46300)— 核心特權提升
以 nobody 執行程式碼還不夠,因為 SELinux 限制 httpd_t 修改系統檔案。為完成 root 許可權,攻擊者連結了第二個漏洞:Linux 核心在 XFRM ESP-in-TCP 子系統的缺陷。
Fragnesia 透過頁面快取寫入覆寫 /etc/pam.d/su——將其認證規則替換為 pam_permit.so(接受所有)。由於 PAM 檔案僅 774 位元組,漏洞利用使用逐位元組拼接變體精確寫入。覆寫後,su root 成功且不需密碼。
兩個漏洞均在單一 B2 HTTP 請求中執行。整個鏈路——從未授權的 HTTPS 連線到持久化 root webshell——在 15 分鐘內完成。
實驗室:大規模版本分析
此漏洞並非單一一次性發射後忘記的有效載荷。它需要精確的記憶體偏移,這些偏移在不同防火牆作業系統版本間會有差異——zval_ptr_dtor 的位址、zif_system 的位址、HashTable 結構大小,以及在每個階段控制堆佈局的記憶體幾何引數。
在回收的檔案中,我們發現 11 個 JSON 版本分析檔——每個已測試的防火牆作業系統版本各一個:
| 防火牆版本 | 發行分支 | PHP | 分析檔 | 備註 |
|---|---|---|---|---|
| 已刪除 | 舊分支 | 7.4.33 | 2 個臨時版 | PHP 7.4 — 在實驗室未以 nobody 身份驗證 RCE,但完整鏈路未校準(基礎建置加一個熱修復變體) |
| 已刪除 | 新分支 | 8.0.30 | 1 個已校準,8 個臨時版 | 一個基礎分析檔已完整實驗室測試;其餘分析檔繼承其幾何或與相鄰建置共用偏移 |
每個分析檔包含該版本 libphp.so 二進位檔提取的精確偏移——附有各函式庫的 SHA256 雜湊、ELF 建置 ID,以及經實驗室調校的精準記憶體幾何引數(區塊大小、填充計數、排空計數、噴射偏移)。
「已校準」與「臨時版」分析檔之差異顯著——已校準表示攻擊者已於該版本的執行 VM 上測試漏洞並確認記憶體幾何有效;臨時版則表示他們已從二進位檔計算偏移,但未在實際例項上驗證。
攻擊流程:從 19,000 個發現到 25 個被利用

在漏洞已準備就緒且擁有 9 個可利用版本的資料後,攻擊者啟動了一個明確的漏斗式目標攻擊活動:
階段 1:全球掃描 (19,000 個目標)
使用 FOFA——一個類似 Shodan 的中國網路資產搜尋引擎——攻擊者在全球範圍內識別出約 19,000 個面向網際網路的防火牆,來源於目標供應商。這些裝置的管理介面暴露於網際網路,可透過憑證指紋與 HTTP 回應簽名進行偵測。
階段 2:版本指紋辨識 (5,000 個存活)
一個自訂的版本掃描器以 200 個併發執行緒對所有 19,000 個目標進行掃描,辨識哪些裝置實際上存活以及其執行的作業系統版本。約 5,000 個裝置回傳了版本資訊。
階段 3:地理與版本過濾 (240 個目標)
從 5,000 個存活裝置中,攻擊者篩選出僅位於美國、日本、臺灣與南韓的伺服器。接著再過濾符合其漏洞利用檔案的版本(使用 PHP 8.0.30 的較新發行分支)。最終產生 240 個防火牆的目標清單。
由於美國、日本、臺灣與南韓是中國國家屬性網路行動在太平洋戰區的四大主要戰略對手與情報目標,這顯示可能是國家級對手的行動。
階段 4:自動化利用 (24 個已取得 root 許可權)
這 240 個目標被送入自動化批次執行器,每次同時處理五個,且每個目標設定 1800 秒(30 分鐘)逾時。每次成功後,批次:
- 執行完整的 PHP2Shell + Fragnesia 鏈式攻擊
- 在防火牆的公開可存取目錄中植入一個 103 位元組的 PHP 最高許可權網頁殼
- 透過網頁殼執行
id以驗證取得 root 許可權 - 將目標主機名稱與 IP 以成功 CSV 記錄
- 移至下一個目標
此時已成功取得 24 臺防火牆的 root 許可權
第 5 階段:分流 (優先處理 2 臺防火牆)
對於 24 臺已取得 root 的防火牆中有 22 臺,攻擊者除了植入網頁殼之外並未做任何其他操作。沒有持續性、沒有隧道、沒有後滲透工具。伺服器實際上已被 佔有並停放,允許攻擊者隨時透過網頁殼回到系統。
兩臺看似屬於同一目標的伺服器進一步完成此階段。兩臺伺服器都顯示屬於美國政府相關環境。
第 6 階段:樞紐 (從防火牆轉移至網域)
在 24 臺已取得 root 的防火牆中,有兩臺屬於美國政府相關組織。從第一臺防火牆擷取的執行中繼配置顯示出具有政府相關特徵的環境:CAC(Common Access Card)驗證、特定命名字首,以及標準化的政府式資產命名。配置檔案包含該組織完整的內部網路拓撲:網域控制器、中央防火牆管理伺服器、Keycloak SSO 伺服器、GitLab 例項、VPN 閘道以及 Active Directory 網域。
第一臺防火牆於 10 月 23 日 18:14 UTC 的自動批次中取得 root,但隨後不久就崩潰 — 很可能是因為約 900MB 的漏洞流量 — 並未再次上線。攻擊者使用 240 個自動探測在兩小時內監控它,等待其恢復,但未恢復。第二臺防火牆,其憑證資料明確將其與目標組織連結,則在原始批次中逾時。
從第一臺防火牆的設定中辨識到組織的價值,攻擊者建立了一個獨立的專案,並於 10 月 24 日 10:09 UTC 成功利用它。
數小時內,攻擊者:
建立了一條持續的隧道連線至內部網路。
一條 8 埠的反向 SSH 隧道將被攻陷的防火牆連回攻擊者的基礎設施,轉發存取權至:
- 域控制器 (LDAP, LDAPS, RDP)
- 內部防火牆管理伺服器
- VPN 基礎設施
- 一個 SOCKS5 代理,供任意內部網路存取
該隧道被包裝於 systemd 服務與 rc.local 開機掛鉤 — 它能在重新開機後存活並自動重新連線。
透過隧道利用管理伺服器。於 11:35 UTC,距離第二臺防火牆取得 root 之後不到 90 分鐘,攻擊者使用新取得的伺服器存取權與同樣的 PHP2Shell + Fragnesia 鏈對第三臺政府伺服器進行攻擊——那臺只能透過隧道存取的內部防火牆管理伺服器。該伺服器集中管理組織的所有防火牆。攻陷它使攻擊者能存取每臺受管防火牆的設定、憑證與網路設定。這使得被利用的伺服器總數達到 25 臺。
從管理伺服器發起 AD 攻擊活動。由於管理伺服器已具備連至 Active Directory 的 LDAP 連線(用於驗證 VPN 使用者),攻擊者將其作為域攻擊的發射平臺:
- 解密 LDAP 服務帳號密碼——裝置設定以加密方式儲存,但攻擊者以 root 存取權擁有主金鑰。他們將其以純文字抽取並硬編碼進所有後續指令碼。
- 透過 LDAP 查詢列舉域內所有使用者與群組。
- 使用以組織為主題的密碼對每個使用者帳號進行密碼噴灑。該域有
lockoutThreshold=0— 表示無帳號鎖定,允許無限次噴灑嘗試。 - 嘗試建立後門 AD 帳號——包括使用者帳號(在每個 OU 嘗試)與機器帳號(利用預設
MachineAccountQuota設定)。 - 分析 AD ACL 鏈以尋找特權提升路徑。
- 嘗試從 Keycloak IdP 設定中提取 SAML 簽名金鑰。
- 探測 Keycloak SSO 以尋求驗證繞過。
攻擊結果——無論密碼噴灑是否找到有效憑證、後門帳號是否被建立、SAML 金鑰是否被提取——均保留於管理伺服器本機檔案系統,並未出現在我們回收的檔案中。這表示我們無法確定攻擊的完整範圍。

管理伺服器 → Active Directory
| 狀態 | 活動 |
|---|---|
| ✓ | 從設定中解密的 LDAP 密碼 |
| ✓ | 完整使用者 & 群組列舉 |
| ? | 密碼噴灑(所有使用者,無鎖定) |
| ? | 後門使用者 + 機器帳號建立 |
| ? | SAML 簽名金鑰提取 |
攻擊者目前擁有的
從回收的檔案可確認攻擊者擁有:
- 持續的遠端存取,透過開機存活的反向隧道與 SOCKS 代理 — 可能仍然活躍
- 兩臺防火牆及防火牆管理伺服器的 root webshell — 可能仍然活躍
- 完整的 Active Directory 使用者與群組清單 — 完整的組織藍圖
- 已解密 LDAP 服務帳戶憑證 — 可隨時直接進行 AD 查詢
- 從防火牆檔案系統中擷取的私鑰 — HA 複製金鑰、SSL/TLS 憑證金鑰及裝置身份驗證金鑰
- 完整網路拓撲 — 每個 IP、主機名稱、子網、伺服器角色及 VPN 閘道
- SAML IdP 設定使用弱安全設定 (
validate-idp-certificate: no) - 另外 22 臺停放的防火牆分佈於美國、日本、臺灣與南韓 — 隨時可被利用
我們無法確認密碼噴射、後門帳戶建立或 SAML 金鑰擷取是否成功。若其中任何攻擊有效,妥協範圍將遠遠超出周邊防火牆,延伸至組織的身份基礎設施。
歸因指標
我們未將此活動歸因於具名威脅行為者。然而,多項指標指向中國相關作業:
| 指標 | 細節 |
|---|---|
| 目標選擇 | 僅美國、日本、臺灣、南韓。這些是中國國家相關行動在太平洋地區的主要戰略情報目標。 |
| FOFA | 用於發現目標的網路偵測平臺為中國服務。 |
| iox | 在回收工具中觀測到的中國開發隧道工具。 |
| DeepSeek 與 Kimi | aiscan 攻擊安全平臺配置的 LLM 為中文語言模型。 |
| UTC+8 時間戳 | 該基礎設施的時鐘使用中國標準時間,透過將日誌時間戳與目標的 HTTP Date: 響應標頭對照確認。 |
| 中文提示 | aiscan 會話日誌包含中文使用者訊息。 |
結論
此作業展示了與機會主義利用不同的準備與能力層級。攻擊者投入大量精力於漏洞研究 — 取得供應商韌體、解密、擷取 PHP 函式庫、為 9 個不同軟體版本建立精確記憶體輪廓,並透過實驗室測試校準利用引數。利用本身已自動化且高效:一次批次嘗試 240 個目標,並自動選擇版本特定輪廓。
攻擊者明確聚焦於政府目標。
攻擊者掃描 19,000 臺防火牆,取得 24 臺的 root 許可權,並立即確認兩臺關鍵裝置。僅在佔領美國政府關聯防火牆數小時內,他們就已經建立隧道進入內部網路,利用相同的 PHP2Shell 漏洞佔領第三臺伺服器,並啟動完整的 Active Directory 攻擊行動 — 所有這些都透過從單一未經身份驗證的 HTTPS 請求至本不應對外公開的管理介面所啟動的鏈路完成。
其餘 22 臺已取得 root 許可權的防火牆仍停放並擁有活動的 WebShell。持續進入美國政府組織的隧道很可能仍在執行。攻擊者仍持有 19,000 個已指紋化的目標,隨時可在開發額外作業系統版本輪廓時重新利用。
如往常一樣,我們建議組織迅速部署相關補丁。請依照供應商指引取得此問題的更多資訊。
縮短發現與防禦之間的差距
對於政府與關鍵基礎設施而言,發現漏洞只是開始。防禦者需識別暴露系統、確定攻擊者可利用之處,並在立足點演變為更大規模威脅前採取行動。
Dream 透過兩套互補的網路防禦平臺來應對此挑戰:
- Sphere 擴充套件國家網路防禦。 它繪製風險暴露、優先排序風險,並偵測與回應跨政府網路的攻擊,針對每個國家的威脅與基礎建設量身定製。
- Hero 擴充套件網路研究。 它的自主研究代理協助專家調查威脅,發現並驗證漏洞—包括在無原始碼軟體中的漏洞—並制定修復指引與補丁。這是 Dream 研究人員在此貼文中詳細說明的調查所使用的工具。
它們共同將更深入的調查與整個國家攻擊面防禦連結起來。