攻擊者只用一個未授權 HTTPS 請求,串起 PHP 遠端執行與 Linux 核心提權,15 分鐘內拿下防火牆 root。25 台淪陷,22 台被停放,通往美國政府相關網域的隧道可能仍在線上。
本文含 Dream 研究原文全文翻譯、Hacker News 討論整理,以及一頁式視覺懶人包。
一頁式懶人包直連: https://static.blog.derekhsu.net/php2shell-hn.html(含攻擊鏈、狩獵漏斗、轉向內網時間線)
原文出處
- 原文:Dream Research〈Chained PHP2Shell Exploit Roots 25 Servers, including US Government Servers〉,2026 年 10 月 26 日刊出,10 月 29 日更新
- 原文連結:https://dreamgroup.com/blog/chained-php2shell-exploit-roots-25-servers
- HN 討論:story 50286987(分數 314、留言 154,2026 年 10 月 30 日 17:38 台灣時間抓取)
- Palo Alto Networks Unit 42 的對應說明:CVE-2026-109618/CVE-2026-109619
全文翻譯
研究由自動化資安研究產品推動
2026 年 10 月 25 日,Dream 研究人員發現一批 artifacts,看起來像一場中國 AI 輔助的攻擊行動:攻陷 25 台伺服器,包含美國政府相關環境內的系統。攻擊者把 PHP2Shell 與核心提權漏洞利用串在一起,打穿對外暴露的系統。
受害裝置執行特定版本的 Palo Alto Networks PAN-OS。被打穿的介面是 PAN-OS 管理網頁伺服器,它同時擋在 GlobalProtect 入口之前。Palo Alto Networks 旗下 Unit 42 已獨立驗證攻擊工具與成果,官方正在各受影響分支釋出修復版本。
拿下防火牆 root 之後,攻擊者轉向 Active Directory。取回的 artifacts 證實帳號密碼被提取、目錄被列舉。
這起行動說明,對外暴露的管理介面,如何變成通往組織身分基礎設施的路。對政府防禦方來說,找到漏洞只是開始,真正的難題,是從盤點脆弱系統,延伸到理解並收斂入侵所能打開的存取範圍。
以下研究由 Dream 的自動化網路研究產品 Hero 做主動威脅狩獵完成。
發現:完整的攻擊行動,外加約 40 支客製腳本
Dream 研究人員找到一整套攻擊行動:PHP2Shell 漏洞利用鏈(CVE-2026-109618/CVE-2026-109619)的客製武器化版本,搭配 Fragnesia 核心提權(CVE-2026-46300),外加目標清單、利用紀錄與約 40 支客製化後滲透腳本。
這批 artifacts 顯示一場行動攻陷 25 台 PAN-OS 防火牆與管理伺服器,分布在美國、日本、台灣、南韓。拿下之後,攻擊者鎖定美國政府相關環境裡的三台特定伺服器。
整起行動從實驗室裡的漏洞利用開發開始,終點是長期潛伏在美國某政府組織內部 AD 網域裡的存取權。
攻擊中的 AI 痕跡
攻擊基礎設施裡可以看到一些 AI 輔助工具的跡象:
- 裝了 Claude Code
- 一套叫 aiscan 的 AI 攻擊性安全平台,配置的是中文大模型 DeepSeek 與 Kimi
- 出現中國偵察平台 FOFA 的 API 金鑰
沒有直接證據顯示 AI 工具被用來寫漏洞利用或後滲透腳本,但約 40 支腳本的程式結構、註解風格與一致性顯示 AI 輔助開發的特徵。不過,這起行動看起來不是完全自主的國家級攻擊。
漏洞利用:兩個弱點串成一個請求
攻擊者做出兩套獨立的漏洞利用,串在一起之後,對任何連上網際網路、執行脆弱版本的 PAN-OS 防火牆,不用帳號密碼、一個 HTTP 請求就能拿到 root。
PHP2Shell(CVE-2026-109618/CVE-2026-109619):遠端程式碼執行
取回的實作是客製、非公開的版本,不是抄任何已知的公開 PHP2Shell 利用。概念相通,但看起來是獨立開發、專門針對 PAN-OS 調校。
弱點打的是 PAN-OS 管理網頁伺服器(appweb)上的 PHP session.upload_progress 機制。PAN-OS 用 PHP 8.0.30,記憶體上限開得很高,剛好撐起記憶體損毀攻擊的各階段。
攻擊分四個階段:
- A1,記憶體耗盡(約 383MB):用偽造的 multipart POST 請求灌爆伺服器,每個請求帶巨大檔名與工作階段進度資料,把 PHP 記憶體分配器推到極限,迫使系統進入可預測的記憶體佈局。
- B1,資訊洩漏:第二個請求偽造 A1 留下的過期工作階段 ID 長度,迫使越界讀取。伺服器
Set-Cookie回應標頭夾帶洩漏的指標值,攻擊者藉此拿到執行中行程裡libphp.so的基底位址。 - A2,懸空參照佈置(約 500MB):再一輪記憶體加壓,先初始化工作階段留下活的
http_session_vars(zend_reference),再觸發第二次記憶體耗盡留下mod_data=NULL,造出 B2 可以偽造的懸空參照。 - B2,程式碼執行:最後一個請求在已釋放的記憶體區偽造 PHP 雜湊表項目,偽造項目的
pDestructor回呼指向zif_system(PHP 的system()函式),資料指向 shell 命令字串。PHP 清理器走訪雜湊表時呼叫偽造的解構器,以nobody使用者身分執行任意命令。
Fragnesia(CVE-2026-46300):核心提權
拿到 nobody 的執行權還不夠,SELinux 把 httpd_t 關在籠子裡,動不了系統檔案。攻擊者再串第二個漏洞利用:Linux 核心 XFRM ESP-in-TCP 子系統的弱點。
Fragnesia 用頁快取寫入覆寫 /etc/pam.d/su,把認證規則換成 pam_permit.so(全放行)。PAM 檔只有 774 位元組,漏洞利用用逐位元組拼接變體精準寫入。覆寫之後,su root 不用密碼直接成功。
兩套漏洞利用跑在同一個 B2 HTTP 請求裡。整條鏈從未授權 HTTPS 連線到長期 root webshell,不到 15 分鐘走完。
實驗室:針對 11 個版本逐一側寫
這不是一發打全場的 payload。利用需要精準的記憶體偏移,每個 PAN-OS 版本都不同:zval_ptr_dtor 位址、zif_system 位址、雜湊表結構大小,以及控制各階段堆積佈局的記憶體幾何參數。
取回的 artifacts 裡有 11 個 JSON 版本側寫檔,每個測過的 PAN-OS 版本各一:
| PAN-OS 分支 | PHP | 側寫數 | 說明 |
|---|---|---|---|
| 11.1 | 7.4.33 | 2 個暫定 | PHP 7.4,實驗室驗證可拿到 nobody 執行權,完整鏈未校準(基礎版加一個 hotfix 變體) |
| 12.1、12.2 | 8.0.30 | 1 個校準、8 個暫定 | 1 個基礎側寫完整實測,其餘沿用它的幾何參數或與鄰近版本共用偏移 |
每個側寫檔收了該版本 libphp.so 的精確偏移,外加函式庫 SHA256、ELF build ID,以及實驗室調校的記憶體幾何參數(區塊大小、填充數、排空數、噴灑偏移)。
「校準」與「暫定」差別值得注意:校準代表攻擊者拿該版本的虛擬機器實測過,確認記憶體幾何可用;暫定代表只從二進位檔算出偏移,沒在活體上驗證。
行動漏斗:從 19,000 台發現到 25 台淪陷
備妥漏洞利用與 9 個可打版本的側寫後,攻擊者展開目標行動,漏斗很清楚:
第一階段:全球發現(19,000 台目標)
用 FOFA(中國的網際網路資產搜尋引擎,類似 Shodan),攻擊者找到全球約 19,000 台管理介面暴露在網際網路上的 PAN-OS 防火牆,靠憑證指紋與 HTTP 回應特徵定位。
第二階段:版本指紋(5,000 台存活)
客製版本掃描器開 200 執行緒併發掃 19,000 台,確認哪些真的在線上、跑什麼 PAN-OS 版本。約 5,000 台回傳版本資訊。
第三階段:地區與版本過濾(240 台目標)
5,000 台裡只留美國、日本、台灣、南韓,再過濾到側寫支援的版本(跑 PHP 8.0.30 的 PAN-OS 12.1 與 12.2 分支),最後剩 240 台防火牆。
美國、日本、台灣、南韓正是中國國家級網路行動在太平洋戰區的四個主要戰略對手與情報目標,指向國家級行為者的可能。
第四階段:自動化利用(24 台攻陷)
240 台丟進批次 runner,每次打 5 台,每台逾時 30 分鐘。每次成功,批次流程會:跑完 PHP2Shell 加 Fragnesia 全鏈、在防火牆公開目錄種 103 位元組 PHP root webshell(/unauth/php/change_password.php)、用 webshell 執行 id 驗證 root、把主機名稱與 IP 寫進成功清單、換下一台。
到這裡,24 台防火牆攻陷。
第五階段:分診(2 台優先)
24 台裡有 22 台只種 webshell就放著,沒有持久化、沒有隧道、沒有後滲透工具。這些伺服器等於佔領後停放,攻擊者隨時能經 webshell 回來。
只有 2 台往下走,看起來同屬一個目標,都在美國政府相關環境裡。
第六階段:轉向(從防火牆打進網域)
24 台裡有 2 台屬於美國政府相關組織。第一台防火牆的執行設定洩漏政府屬性:CAC(通用存取卡)認證、特定命名前綴、政府式資產命名。設定檔含組織完整內網拓撲:網域控制器、中央防火牆管理伺服器、Keycloak 單一登入伺服器、GitLab、GlobalProtect VPN 閘道與 AD 網域。
第一台防火牆在 10 月 23 日 18:14 UTC 被批次打下,但隨即當機,應是約 900MB 的利用流量壓垮,之後再沒回來。攻擊者用 240 次自動探測守了兩小時,沒等到。第二台防火牆的憑證資料明確指向目標組織,但在原始批次裡逾時。
認清第一台設定檔裡的組織價值後,攻擊者另開專案行動,在 10 月 24 日 10:09 UTC 打下第二台。
幾小時內,攻擊者完成三件事:
打進內網的長期隧道。8 埠反向 SSH 隧道連回攻擊者基礎設施,轉發存取:網域控制器(LDAP、LDAPS、RDP)、內部防火牆管理伺服器、GlobalProtect VPN 基礎設施,以及任意內網存取的 SOCKS5 代理。隧道包在 systemd 服務與 rc.local 開機掛鉤裡,腳本藏 /usr/local/lib/.panops/,重開機存活、斷線自動重連。
穿過隧道打下管理伺服器。10 月 24 日 11:35 UTC,拿下第二台防火牆不到 90 分鐘,攻擊者用新據點加同一條 PHP2Shell 加 Fragnesia 鏈,打下只能經隧道觸及的第三台政府伺服器:集中管理組織所有防火牆的內部管理伺服器。拿下它等於拿到每台受管防火牆的設定、帳號與網路參數。淪陷總數來到 25 台。
從管理伺服器發動 AD 攻擊。管理伺服器本來就有 AD 的 LDAP 連線(VPN 使用者認證要用),攻擊者拿它當跳板:
- 解出 LDAP 服務帳號密碼:裝置設定把密碼加密存放,但 root 手上有主金鑰,攻擊者解出明文寫死進每個後續腳本
- 用 LDAP 列舉網域每個使用者與群組
- 拿組織主題密碼對全體帳號噴灑密碼,網域
lockoutThreshold=0代表不鎖帳號,可以無限嘗試 - 嘗試建後門 AD 帳號:使用者帳號(每個 OU 各試一次)與機器帳號(利用預設
MachineAccountQuota設定) - 分析 AD ACL 鏈找提權路徑
- 嘗試從 Keycloak IdP 設定提取 SAML 簽章金鑰
- 探測 Keycloak 單一登入認證繞過
攻擊結果落在管理伺服器本機,沒被取回:密碼噴灑有沒有命中、後門帳號有沒有建成、SAML 金鑰有沒有得手,都無法判定,入侵全貌因此無法確定。
| 狀態 | 行動 |
|---|---|
| 已確認 | LDAP 密碼從設定檔解密 |
| 已確認 | 全體使用者與群組列舉 |
| 未知 | 全員密碼噴灑(無鎖定) |
| 未知 | 後門使用者加機器帳號建立 |
| 未知 | SAML 簽章金鑰提取 |
攻擊者現在手上有的東西
從取回的 artifacts 可以確認,攻擊者持有:
- 經開機存活的反向隧道與 SOCKS 代理長期存取組織內網,可能仍在線上
- 2 台防火牆與管理伺服器上的 root webshell,可能仍在線上
- 完整 AD 使用者與群組清單,等於組織全圖
- 解密的 LDAP 服務帳號帳密,隨時可直接查 AD
- 從 PAN-OS 檔案系統收割的私鑰:HA 複寫金鑰、SSL/TLS 憑證金鑰、裝置認證金鑰
- 完整網路拓撲:每個 IP、主機名稱、子網、伺服器角色、VPN 閘道
- SAML IdP 設定含弱安全設定(
validate-idp-certificate: no) - 美國、日本、台灣、南韓另外 22 台停放的防火牆,隨時可回頭利用
無法判定的是密碼噴灑、後門帳號、SAML 金鑰提取是否成功。任一得手,入侵就從邊界防火牆延伸進組織的身分基礎設施。
歸因指標
Dream 不指認具名威脅行為者。Palo Alto Networks Unit 42 把這起活動編號 CL-UNK-1280,判定為 UTC+8 時區的中文使用者。多個指標指向中國關聯:
| 指標 | 細節 |
|---|---|
| 目標選擇 | 只打美國、日本、台灣、南韓,中國國家級行動在太平洋的主要戰略情報目標 |
| FOFA | 發現目標用的網際網路偵察平台是中國服務 |
| iox | 取回工具裡的隧道程式由中國開發 |
| DeepSeek 與 Kimi | aiscan 攻擊性安全平台配置的是中文大模型 |
| UTC+8 時間戳 | 基礎設施時鐘跑中國標準時間,用目標 HTTP Date 回應標頭交叉比對確認 |
| 中文提示詞 | aiscan 工作階段紀錄含中文使用者訊息 |
結論
這起行動的準備程度與能力跟機會主義利用不在同一層。攻擊者投入大量心力做弱點研究:拿 PAN-OS 韌體、解密、提取 PHP 函式庫、為 9 個軟體版本建精準記憶體側寫、在實驗室校準利用幾何。利用本身自動化且高效:240 台一批打完,版本側寫自動選用。
目標鎖定政府,意圖明確。
攻擊者掃 19,000 台防火牆,攻陷 24 台,立刻認出重要的 2 台。打進美國政府相關防火牆幾小時內,隧道進內網、用同一條 PHP2Shell 鏈拿下第三台伺服器、發動完整 AD 攻擊,起點只是打向管理介面的一個未授權 HTTPS 請求,而它本不該暴露在網際網路上。
其餘 22 台攻陷的防火牆帶著 webshell 停放中。通往美國政府組織的長期隧道可能仍在跑。攻擊者手上還有 19,000 台指紋目標,等新版本的側寫完成隨時可回頭。Palo Alto Networks 裝置遙測顯示針對暴露 PAN-OS 裝置的利用嘗試仍在持續。
完整緩解指引與入侵指標見 Palo Alto Networks 說明頁。
HN 討論整理
統計列:分數 314、留言 154、頂層 25 則,2026 年 10 月 30 日 17:38 台灣時間抓取。底稿取自站內 10 月 30 日日報(136 則時擷取 80 則),補讀全部頂層與高回覆子串第二層。descendants 含已刪留言,數字對不上屬正常。
公開認錯:前幾天說漏洞被高估的人回來道歉
@tensegrist 開場只留一句「perhaps i was wrong」,附上自己舊留言連結。@Vaushite 回得硬:「RCE on every PHP server 這種事,怎麼可能被小看」。@rkozik1989 補技術關鍵:漏洞利用發生在 php-fpm 執行任何應用程式碼之前,不用找特定 endpoint。@genxy 搬出克拉克(Arthur C. Clarke)第一定律收尾,@aaomidi 肯定他公開修正的勇氣。
到底有沒有被高估:兩邊各對一半
@lifeisloving 的折衷最清楚:70% 的網際網路其實並不脆弱,媒體報導誇大,但漏洞本身確實嚴重。@robby_w_g 同意:CVE 被誇大,同時也是嚴重漏洞。@cowlevel 從命名解釋:2shell 跟 log4shell 一樣是「什麼都幹得了」的簡稱,不直接等於任意執行。
論戰第二層把脈絡補齊:@jerf 指出最初 release 公關稿寫得像「按鈕一按、全世界 PHP 伺服器開 shell」,加上 stealmybitcoin 懸賞 19 小時才被拿下,才讓一批人相信漏洞不如宣稱。@jstanley 也說,如果宣稱不是真的,那當然算高估。@1718627440 從架構反駁:PHP 不直連網路,網頁伺服器設定正確就能擋,誇大的點在「本來可以更嚴重」。@swat535 翻出另一串「沒有簡單利用」的舊文,證明自滿有前科。
廠商猜謎:留言先鎖定,官方更新後證實
@colemannugent 從文章引用的 PAN-OS 設定與 SELinux 配置幾乎確定是 Palo Alto。@theMMaI 用 PHP 7.4.33/8.0.30 對應 PAN-OS 版本佐證。@kekub 說 Fortinet 不用 PHP、Juniper 是 FreeBSD 但文中有 SELinux,仍是 Palo Alto。反方 @clbrmbr 押 Fortinet(笑稱公開市場指向 Fortinet)。10 月 29 日原文更新後直接點名 Palo Alto,@nubinetwork 補上與官方合作調查的段落,猜謎結案。@elevation 追問:世界級防火牆為何需要 PHP,敲碗 FPGA 方案。
防火牆的管理介面為何能從公網打進來
@jtchang 的質問最簡潔:管理介面根本就不該暴露在網際網路上。@lunargamma676 的感想是防火牆 admin PHP 頁面可從網際網路觸及,本來就該放在管理 VLAN。@cowlevel 指出致命點:漏洞在任何授權檢查前觸發,開頭先檢查授權救不了。@bell-cot 認為 admin 頁面公網可達,任何藉口都不成立,鎖定網頁伺服器與 PHP 配置任一都能擋。
最辣屬 @tiberious726 的合規反諷:美國政府要民間廠商做堆積如山的資安合規(約一半對實際防護沒用),結果自家防火牆管理頁面直接裸奔。@achdha 緩頰:非國防部門被砍預算幾十年,重要工作外包給輪換的約聘團隊,這種欠債遲早爆。@goldie_wilson 提醒標題有誤導:原文寫的是政府相關環境,讀起來更像政府承包商而非政府本體。
研究團隊的背景讓人不舒服
@xxmarkuski 指出 Dream 由奧地利前總理庫爾茨(Sebastian Kurz)創辦兼領導,因貪腐醜聞下台。@Topfi 翻譯給美國讀者:相當於朱利安尼(Rudy Giuliani)當資安專家。@cookiengineer 補刀:三位共同創辦人之一創辦 NSO Group、開發 Pegasus。@ungut 酸:庫爾茨的 IT 經驗大概就是學會用 Signal 加開啟消失訊息。
AI 與攻擊面的兩條延伸線
@athrowaway3z 說自己只是業餘者,用 DeepSeek 就能把 PHP2Shell 利用做出來。@rootsudo、@0x457 回報自己的 DeepSeek 工作階段與本地 Qwen 模型也做得到。@SV_BubbleTime 吐槽 2024 年提示詞工程指南全是不可證偽的廢話,自己大概只是多加一句叫模型慢慢來。
另一條線由 @jakobdabo 開:Linux 核心攻擊面太大(XFRM ESP-in-TCP、mptcp、SMB、io_uring 加 DMABUF),多數伺服器根本不需要。@robwayne 附和:algif_aead 這種沒人用的模組預設載入,多一條被打的路。@0xbadcafebee 下結論:Linux 預設全開,每年都有提權漏洞,能 RCE 就假設能 root。@cowlevel 考據 XFRM 這洞應是幾個月前修的 Dirty Frag。依 @iririririr 的說法,資安意識正常的部署本來就關掉這功能。
正反分歧一覽
| 面向 | 正方 | 反方 |
|---|---|---|
| 漏洞嚴重度 | php-fpm 在應用碼執行前中招,每個 PHP 頁面都脆弱 | 7 成網路並不可危,初始條件狹窄,屬誇大 |
| 是否該公開細節 | 不公開廠商與版本是負責做法 | 不點名讓防禦方無法行動,延長暴露期 |
| 廠商責任 | 世界級防火牆不該把 admin 介面放公網 | 客戶端錯誤設定,責任在部署方 |
| AI 的角色 | AI 讓業餘者也能寫出可用利用,門檻大降 | 關鍵在連結與環境知識,AI 只是輔助 |
| 研究機構可信度 | 內容具體可驗證,與創辦人背景無關 | NSO 共同創辦人加涉貪前總理,敘事打折 |
譯註(非原文)
- 原文 10 月 29 日更新後直接點名 Palo Alto Networks,HN 留言的廠商猜謎以此結案。
- Dream 由奧地利前總理庫爾茨(Sebastian Kurz)創辦,HN 留言另指出共同創辦人含 NSO Group 創辦人,閱讀時可一併參考。
- 數字以原文為準;HN 分數與留言數為抓取當下快照,隨時間變動。
