Microsoft SCCM CVE-2026-47301 漏洞分析:附POC

导语:企业管理员们,是时候紧张起来了。安全研究员Omri Baso(奥姆里·巴索)近日公开了Microsoft Configuration Manager远程代码执行漏洞CVE-2026-47301的完整利用代码——无需任何SCCM管理权限,无需高权限Windows账号,只要有一个普通的域用户账号,就能把权限打到SYSTEM级别,拿下整个企业内网的控制权。微软7月已发补丁,但完整修复要等到10月。这4个月的空窗期,够长了。


一、漏洞概述

CVE-2026-47301是微软配置管理器(System Center Configuration Manager,简称SCCM)中的一个高危漏洞组合,由XM Cyber(跨网网络空间公司)安全研究员奥姆里·巴索发现,并于2026年5月23日报告给微软。微软于2026年7月14日发布了对部分问题的修复,但完整修复方案预计要等到2026年10月的ConfigMgr 2609版本。

这意味着,当前所有未完全加固的SCCM服务器仍然处于可被攻击的状态。

该漏洞的核心在于:它不是单一的一个缺陷,而是一条由多个弱点串联而成的攻击链。


二、攻击链详解

2.1 第一步:绕过访问控制上传恶意CAB包

SCCM的AdminService REST API支持通过CAB档案上传控制台扩展包。存在两个上传端点:标准端点会检查基于角色的访问控制权限,但分块上传端点(chunked upload endpoint)完全没有做同样的授权校验。

这就是第一个弱点:broken access control(访问控制失效)。一个普通域用户——不需要任何SCCM管理权限——就能向服务器提交精心构造的CAB文件。

2.2 第二步:绕过证书验证签名

SCCM会检查CAB档案是否包含有效的嵌入式签名,但问题在于:它不验证签名证书是否来自微软或受害组织本身,也不执行证书吊销检查。

这是第二个弱点:证书验证绕过(certificate verification bypass)。攻击者可以自签名一张证书,SCCM照单全收。

2.3 第三步:CabSlip路径穿越写任意文件

在CAB解压环节,SCCM未能正确拦截相对路径序列,导致档案可以将文件写到预期的临时解压目录之外。

这是第三个弱点,也是漏洞利用的关键——CabSlip路径穿越。攻击者通过构造特殊的CAB档案,利用..序列把文件写进SCCM安装目录的binX64下,完全不需要知道SCCM的安装路径,攻击脚本会自动适配。

2.4 第四步:利用DLL劫持获取SYSTEM权限

SMS Executive(SMS_EXECUTIVE)是SCCM的核心组件,以NT AUTHORITYSYSTEM权限运行。虽然它会验证主DLL的完整性,但对名为adsource.dll的辅助DLL却没有任何等效的完整性检查。

通过路径穿越,攻击者向SCCM的binX64目录写入两个DLL文件:

  • adsource.dll:恶意载荷,执行攻击者代码
  • adsource_original.dll:用于DLL代理攻击,把正常功能转发给原始库,确保SMS Executive服务不会崩溃

DLL加载大约每5分钟触发一次,所以攻击不会立即看到结果,需要等待一个加载周期。


三、利用后果:RID 500管理员被”劫持”

这个POC不只是弹个计算器。恶意CAB文件会直接修改SCCM服务器上的内置RID 500管理员账户:

  • 如果该账户已被禁用,exploit会将其启用
  • 将其重命名为omrispy
  • 设置密码为Xm#Poc-2026!Adm1n$Ok

整个攻击过程会被记录在目标服务器的C:POC.txt文件中,包括被修改前的账户名,便于攻击者事后恢复”现场”。

RID 500Administrator是Windows系统内置的最高权限账户,通常是域管理员甚至域控本身的最后防线。被这样明目张胆地劫持,意味着攻击者已经彻底撕开了企业内网的防线。


四、如何定位SCCM主站点服务器

普通的AD域用户如何找到SCCM主站点服务器?SCCM的信息从来不会直接发布在Active Directory中,但奥姆里·巴索给出了精确的定位方法:

查看CN=System Management, CN=System容器上的SDDL权限,机器账户对具有Full Control或GenericAll权限的实体,通常就是站点服务器。

$root = [ADSI]"LDAP://RootDSE"
$configDN = "CN=System Management,CN=System," + $root.defaultNamingContext
$container = [ADSI]"LDAP://$configDN"
$container.ObjectSecurity.Access |
 Where-Object { $_.ActiveDirectoryRights -match "GenericAll|FullControl" } |
 Select-Object IdentityReference, ActiveDirectoryRights, AccessControlType |
 Format-Table -AutoSize

查询结果中,以$结尾的实体就是主站点服务器。


五、POC公开地址

奥姆里·巴索已在GitHub上发布了完整的漏洞利用仓库:

GitHub: github.com/OmriBaso/SCCM-CVE-2026-47301-Remote-Code-Execution-Exploit

仓库包含:

  • 完整的C#源代码和项目文件
  • 经过构造的恶意CAB档案(evil.cab)
  • 编译好的可执行程序(C1_AFW.exe)
  • 完整的利用说明文档

利用命令极其简单:

C1_AFW.exe write SCCM-CM01.basoss.local 'pwn.cab' .evil.cab --verbose

只需知道目标SCCM服务器的主机名或DNS地址,普通域用户就能完成从低权限到SYSTEM的完整提权。


六、检测与排查

6.1 日志特征

  • AdminService.log:关注DirectoryNotFoundException错误后紧跟HTTP 500响应的情况
  • 异常的CAB上传活动

6.2 文件系统监控

  • 关注SCCM安装目录下binX64adsource.dlladsource_original.dll的异常变更
  • 特别是时间戳与正常运维活动不匹配的情况

6.3 账户异常

  • RID 500管理员账户状态变更(非预期的启用/重命名)
  • 异常的管理员账户创建

七、处置建议

  1. 立即打补丁:微软7月更新已修复部分问题,尚未打补丁的SCCM服务器必须立即更新
  2. 审计角色分配:即使打了7月更新,如果账户被分配了内置Operations Administrator角色,或拥有SMS_ConsoleExtensionData对象的Create权限,仍然可以触发后续攻击路径
  3. 限制AdminService网络访问:对AdminService网络端口实施严格的访问控制,不要暴露给非管理网段
  4. 审计System Management容器权限:检查AD中谁对CN=System Management容器拥有GenericAll/FullControl权限,移除不必要的机器账户权限
  5. 等待完整修复:微软ConfigMgr 2609预计2026年10月发布,届时才能完全堵住这条攻击链

八、总结

这又是一个”你以为打补丁就没事了”的经典案例。微软7月的更新修复了漏洞链的前两个环节,但后两个——CabSlip路径穿越和DLL劫持——依然敞着门。攻击者已经公开了完整利用代码,任何一个拥有域账户的攻击者都能在几分钟内把权限提到SYSTEM。

SCCM主站点服务器是企业Windows环境的控制中枢,一旦沦陷,攻击者可以:横向移动到任意终端、窃取凭据、部署勒索软件、监控所有托管设备。这不是”可能造成影响”,这是已经可以做到的事情。

4个月的空窗期,该做点实质性的工作了。

POC地址: https://github.com/OmriBaso/SCCM-CVE-2026-47301-Remote-Code-Execution-Exploit

版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网授权使用。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容