文章总结: 文档详细分析ADCS-ESC4漏洞利用技术,核心是通过修改证书模板权限和属性(如启用自定义SAN、添加认证EKU)将安全模板转化为ESC1漏洞模板,实现域内身份伪造。关键步骤包括授予注册权限、禁用审批机制、废除签名要求等,并配合Certipy工具进行枚举和攻击演示,最终获取高权限证书接管域控。 综合评分: 88 文章分类: 渗透测试,漏洞分析,内网渗透,红队,WEB安全
ADCS-ESC4枚举和利用
原创
jzhoucdc jzhoucdc
攻防之路JZhoucdc
2026年6月22日 13:14 上海
在小说阅读器读本章
去阅读
一.概述
ESC4攻击的核心在于:通过修改证书模板的特定属性值,将一个初始安全的模板重构为具备ESC1漏洞特征的模板,随后利用该模板进行身份伪造。
二.利用要求
1.授予目标主体注册权限(Grant Enrollment Rights)
- 操作:修改模板的DACL(自由访问控制列表),为攻击者所属的安全组(如
Domain Users或Authenticated Users)显式添加Allow的Enroll(注册)和Read(读取)权限。 - 技术目的:确保攻击者具备向CA(证书颁发机构)提交申请并获取该模板所颁发证书的合法授权。若无此权限,后续所有属性修改均无实际利用价值。
2. 禁用管理员批准标志(PEND_ALL_REQUESTS)
- 操作:将
msPKI-Enrollment-Flag属性中的CT_FLAG_PEND_ALL_REQUESTS标志位清除(设置为0)。 - 技术目的:绕过CA级别的“手动颁发审批”机制。启用该标志时,所有申请处于挂起状态,需CA管理员手动批准。将其置
0确保证书颁发流程全自动,即时签发,避免触发人工审计或干预。
3. 废除授权签名要求(msPKI-RA-Signature = 0)
- 操作:将
msPKI-RA-Signature属性值设置为0。 - 技术目的:解除模板对“注册代理(Enrollment Agent)”签名证书的依赖。在高级安全模板中,该属性强制要求申请者必须持有特定签名的CA证书作为授权凭证。置
0意味着任何持有有效域凭据的主体均可直接发起申请,无需额外担保。
4. 启用申请者自定义主体名称(ENROLLEE_SUPPLIES_SUBJECT)
- 操作:在
msPKI-Certificate-Name-Flag属性中启用CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT标志。 - 技术目的:将证书请求的
Subject(使用者)和SAN(使用者备用名称)字段的填充控制权,从AD(Active Directory)自动映射切换至客户端请求输入。此操作是身份冒充的前提,允许攻击者在证书请求中任意指定高权限账户的UPN(用户主体名称)。
5. 设定身份验证用途的扩展密钥用法(EKU)
-
操作:修改
msPKI-Certificate-Application-Policy属性,添加或设定以下OID(对象标识符)之一: -
客户端身份验证(
1.3.6.1.5.5.7.3.2) -
智能卡登录(
1.3.6.1.4.1.311.20.2.2) -
PKINIT客户端身份验证(
1.3.6.1.5.2.3.4) -
任意用途(
2.5.29.37.0) -
完全无EKU限制(不设置任何OID)
-
技术目的:确保最终颁发的证书在KDC(密钥分发中心)进行PKINIT Kerberos身份验证时,其EKU声明符合域控的认证策略。特别注意后两种配置(任意用途或无EKU)会绕过CA对证书用途的专项约束,使得该证书可被系统隐式接受为合法身份凭证。
三.案例
枚举
certipy-ad find -u '[email protected]' -p 'Password123!' -dc-ip 10.129.228.236 -vulnerable -stdout
输出中Object Control Permissions字段明确指出了ESC4漏洞的存在依据:
-
主体
LAB.LOCAL\Black Wasp拥有以下权限: -
Full Control:对该模板对象具备完全控制权,隐含了所有下级权限。 -
Write Owner:可以修改模板的所有者(Owner),进而可能获得进一步控制权。 -
Write Dacl:可以修改模板的DACL(自由访问控制列表),能够向任意主体(包括自身)授予或撤销权限。 -
Write Property:可以修改模板的所有可写属性,包括msPKI-Certificate-Name-Flag、msPKI-Certificate-Application-Policy、msPKI-Enrollment-Flag等。 -
权限判定的技术标准:在AD DS权限模型中,
Write Property覆盖模板对象的所有属性集,Write Dacl和Write Owner则赋予该主体对安全描述符的完全编辑能力。certipy将任何具备上述任一或组合写入权限的非特权主体标记为ESC4。
攻击链结论
该枚举结果表明:
Black Wasp用户对该模板对象拥有完整的写入权限,构成ESC4漏洞。- 攻击者只需利用
Write Property权限,执行两项属性修改(启用自定义SAN + 添加认证EKU),即可将该模板立即转换为ESC1。 - 由于审批与签名要求已处于禁用状态,修改完成后,攻击者无需等待管理员介入,可即时提交包含
[email protected](或其他高权限账户UPN)的证书请求,并获得有效身份验证证书。 - 最终,通过Kerberos PKINIT协议,该证书可用于获取目标高权限账户的TGT,实现域控制权接管。
利用
首先导出目前配置,以便后续恢复;
certipy-ad template -u '[email protected]' -p 'Password123!' -template ESC4 -dc-ip 10.129.54.212 -save-configuration backup_ESC4.json -force
修改模板利用,类似ESC1:
certipy-ad req -u '[email protected]' -p 'Password123!' -ca lab-LAB-DC-CA -template ESC4 -upn Administrator -dc-ip 10.129.54.212 -target 10.129.54.212 -debug
得到administrator.pfx
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:攻防之路JZhoucdc jzhoucdc jzhoucdc《ADCS-ESC4枚举和利用》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论