還原序列化、JWT 繞過、MachineKey 竊取?
摘要
報告針對 2026 年 7 月影響 Microsoft SharePoint Server 的重大漏洞進行了全面的技術分析,這些漏洞已遭廣泛的實際攻擊利用。報告深入探討從初始網頁請求到完整網域淪陷的攻擊鏈,檢視包括 CVE-2026-32201、CVE-2026-45659、CVE-2026-56164、CVE-2026-55040、CVE-2026-58644 及 CVE-2026-50522 等特定 CVE。報告詳細說明了這些漏洞如何被串聯利用,以達到繞過身分驗證、遠端程式碼執行及持久化存取。此外,還包含了弱點模式之源碼層級分析,以循序圖說明攻擊流程,並討論緩解策略。目標在於增進對這些威脅的認知,並為強化 SharePoint 資安防護提供可行的洞見。
1. 簡介
Microsoft SharePoint Server 是企業協作與內容管理的基石,與 Active Directory、SQL Server 及 Microsoft IIS 等技術緊密整合於組織基礎架構中。其廣泛部署與受信任的地位,使其成為有經驗的 threat actor 的首要目標。2026 年 7 月,一系列影響地端部署 SharePoint Server 的重大漏洞被揭露,其中數個已確認遭美國網路安全暨基礎設施安全局 (CISA) 列為積極利用的漏洞 [1]。這些漏洞涵蓋身分驗證繞過、不當輸入驗證及不安全的反序列化,整體構成嚴重風險,使攻擊者得以未經授權存取、遠端程式碼執行 (RCE),並在受害網路內橫向移動。報告目的在剖析這些漏洞,闡明其攻擊機制,並提供偵測與緩解策略的技術觀點。
2. 漏洞總覽
2026 年 7 月 SharePoint 安全性更新修補了六個重大漏洞。其中三個——CVE-2026-32201、CVE-2026-45659 及 CVE-2026-56164——已被列入 CISA 的已知遭利用漏洞 (KEV) 目錄,凸顯其關鍵性與積極遭利用的現狀。其餘三個——CVE-2026-55040、CVE-2026-58644 及 CVE-2026-50522——則顯著擴大了未經身分驗證的攻擊面,需立即修補 [1]。
| CVE | 漏洞類型 | CVSS 3.1 (來源) | CWE | 利用後果 |
|---|---|---|---|---|
| CVE-2026-32201 | 不當輸入驗證 | 6.5 中度 (Microsoft) | CWE-20 | 偽造、身分驗證繞過的前置步驟 |
| CVE-2026-45659 | 反序列化 RCE | 8.8 高度 (Microsoft) | CWE-502 | 以 w3wp 權限執行之已驗證 RCE |
| CVE-2026-56164 | 缺乏身分驗證 | 9.8 重大 (NVD);Microsoft CNA:5.3 中度 | CWE-306 | 權限提升 |
| CVE-2026-55040 | JWT 驗證繞過 | 9.1 重大 (Microsoft) | CWE-1390 | 身分驗證繞過;未驗證 RCE 攻擊鏈 |
| CVE-2026-58644 | 反序列化 RCE | 9.8 重大 (Microsoft/NVD) | CWE-502 | 以 w3wp 權限執行之未驗證 RCE |
| CVE-2026-50522 | 反序列化 RCE | 9.8 重大 (Microsoft) | CWE-502 | 以 w3wp 權限執行之未驗證 RCE |
3. 攻擊鏈分析
這些漏洞的利用通常涉及多階段的攻擊鏈,將看似無害的網頁請求轉變為完整的網域淪陷。觀察到的典型階段包括偵察、初始利用、部署 webshell、竊取 IIS machine-key、偽造 ViewState 以維持持久化,以及橫向移動 [1]。
3.1. 偵察
攻擊者會透過各種方法識別地端 SharePoint 目標,包括以 Shodan/Censys 搜尋 SharePoint 專屬的 HTTP headers 與路徑 (例如
/_layouts/15/
)、憑證透明度、DNS 列舉及利用外洩的 Credential [1]。
3.2. 初始利用
攻擊者會發送一個特製的 HTTP 請求到有漏洞的 SharePoint 端點。依據特定的 CVE,此階段可能無需身分驗證,或僅需低階的網站成員權限。舉例來說,CVE-2026-56164 允許未經身分驗證的權限提升,而 CVE-2026-45659 則允許已驗證的反序列化 RCE [1]。CVE-2026-58644 尤其關鍵,因為它允許未經身分驗證的反序列化 RCE。反序列化漏洞 (CWE-502) 的核心問題在於,所使用的反序列化工具會在未經適當型別限制的情況下,從攻擊者控制的資料中實例化任意型別。其概念可表示為:
- // Vulnerable deserialization pattern
- BinaryFormatter formatter = new BinaryFormatter();
- object result = formatter.Deserialize(Request.InputStream);
- // Attacker gadget chain: ObjectDataProvider -> ProcessStartInfo -> cmd.exe
這段程式碼說明了常見的漏洞模式,其中
BinaryFormatter
用於從輸入串流反序列化物件,而未經充分驗證。攻擊者可建構惡意的序列化物件 (gadget chain),在反序列化時於伺服器上執行任意程式碼。這是關鍵漏洞,因為攻擊者可透過操控輸入資料來達到遠端程式碼執行。
3.3. 部署 Webshell
取得程式碼執行權限後,攻擊者通常會將 ASP.NET webshell 部署到 SharePoint 網頁應用程式目錄中,以維持存取權限並利於後續行動。常見的路徑包括
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx
[1]。這些 webshell 通常具備密碼保護的存取機制、加密的命令字串及檔案上傳功能,以規避偵測。
3.4. 竊取 IIS Machine-Key
關鍵步驟之一是竊取 ASP.NET
machineKey
設定,特別是
validationKey
與
decryptionKey
。這些金鑰對於偽造 ViewState 與表單驗證票證(Forms authentication ticket)至關重要,使攻擊者即使在初始漏洞被修補後仍能維持持久化存取 [1]。以下程式碼片段示範了如何透過 reflection 提取這些金鑰:
- // Machine-key extraction via reflection
- Configuration config = WebConfigurationManager.OpenWebConfiguration("/");
- MachineKeySection section = (MachineKeySection)config.GetSection("system.web/machineKey");
- // Access private fields
- Type t = typeof(MachineKeySection);
- string validationKey = (string)t.GetField("_ValidationKey", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(section);
- string decryptionKey = (string)t.GetField("_DecryptionKey", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(section);
- // Exfiltrate
- Response.Headers["X-TXT-NET"] = validationKey + "|" + decryptionKey;
這段 C# 程式碼示範了攻擊者在取得初始程式碼執行權限後,如何透過程式設計方式從
web.config
檔案存取
machineKey
區段。透過使用 reflection 存取
MachineKeySection
物件的私有欄位 (
_ValidationKey
與
_DecryptionKey
),攻擊者可以提取這些敏感金鑰。這些金鑰隨後被外洩,可能透過自訂的 HTTP header (此範例中的
X-TXT-NET
),使攻擊者能離線偽造身分驗證 Token。
3.5. 偽造 ViewState 與持久化
攻擊者利用竊取的金鑰,可透過
ysoserial.net
等工具建構惡意的 ViewState Payload。這些偽造的 Payload 會以伺服器的合法金鑰進行簽章與加密,使其在反序列化時不會引起懷疑,進而導致進一步的程式碼執行 [1]。或者,也可以安裝惡意的 IIS 模組以達到持久化,這些模組會載入至每個
w3wp.exe
程序,並能在伺服器重啟與修補後依然存活 [1]。
3.6. 橫向移動
攻擊者利用遭入侵的伺服器陣列服務帳戶 (farm service account, 此帳戶通常擁有廣泛權限,例如 SQL Server 的
dbcreator
與
securityadmin
角色),可以查詢內容資料庫、提取額外的 Credential,並轉向 Active Directory,將控制範圍擴展至整個企業網路 [1]。
圖 1:SharePoint 攻擊鏈循序圖
4. 緩解與強化策略
要有效防禦這類進階攻擊,需採取多層次方法,結合即時修補與完善的強化及監控策略 [1]。
4.1. 立即行動
- 立即套用 Microsoft 於 2026 年 7 月 14 日發佈的 SharePoint Server 安全性更新 [1]。
- 確認所有伺服器陣列伺服器皆已完成修補程式安裝 [1]。
- 為每個網頁應用程式啟用 AMSI 整合,並在可行情況下將要求 Body Scan Mode 設為 Full [1]。以下 PowerShell 片段示範如何將 SharePoint 網頁應用程式的 AMSI 要求 Body Scan Mode 設為 Full:
- # PowerShell (SPSE 25H1+)
- $webApp = Get-SPWebApplication -Identity "http://spwfe"
- $webApp.AMSIBodyScanMode = 2 # 0=Off, 1=Balanced, 2=Full
- $webApp.Update()
這段 PowerShell 指令碼會針對特定的 SharePoint 網頁應用程式 (由其 URL 識別,例如
http://spwfe
),將其
AMSIBodyScanMode
屬性設為
2
,對應「完整」模式。這能顯著強化資安防護,啟用對 HTTP 要求 Body 的全面掃描以偵測惡意內容,進而防範 webshell 部署及其他伺服器端攻擊。設定模式後,
$webApp.Update()
會將變更套用至該網頁應用程式。
- 搜尋並修復入侵活動跡象 [1]。
- 僅在確認環境乾淨後,才輪替 IIS machine keys [1]。
4.2. 網路強化
- 避免將 SharePoint 伺服器直接暴露於網際網路 [1]。
- 針對外部存取,使用具備身分驗證與檢查功能的 Layer 7 反向代理伺服器 [1]。
- 封鎖對 SharePoint 中央管理網站的外部存取 [1]。
- 將伺服器陣列與資料庫的通訊限制於必要的系統 [1]。
- 使用自訂的 SQL Server 連接埠,並從網頁前端封鎖預設連接埠 [1]。
4.3. 日誌記錄與監控
- 啟用 IIS 進階記錄功能,記錄完整的 Request Headers 與 Response 狀態碼 [1]。
- 將 IIS、Windows Event 及 SharePoint ULS 日誌轉發至資安事件管理 (SIEM) 系統 [1]。
-
針對可疑活動設定警示,例如
w3wp.exe建立 Shell 或編譯程式碼,以及對 IIS 全域模組或machineKey設定的變更 [1]。
5. 影響評估
SharePoint 一旦遭成功入侵,可能導致嚴重後果,包括資料外洩、遠端程式碼執行、持久化、權限提升,以及在企業網路內的橫向移動 [1]。這可能引發重大的業務衝擊,例如資料竊取、服務中斷、勒索軟體部署、營運停擺、法規遵循違規、財務損失及聲譽損害 [1]。
6. 結論
2026 年 7 月的 SharePoint 攻擊事件,凸顯了企業協作平台必須實施強健資安實務的至關重要性。攻擊者能夠串聯多個漏洞,從不當輸入驗證到反序列化 RCE 及身分驗證繞過,這突顯了持續警戒的必要性。企業組織必須優先進行即時修補、實施全面的網路強化,並建立進階的日誌記錄與監控能力,以偵測並緩解這些進階威脅。透過理解這些攻擊鏈的技術細節,並採取縱深防禦策略,企業可大幅降低遭受此類入侵的風險,並保護其有價值的資產。