XXE到域控复现(基于资源的约束委派)
奇安信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
- JDK1.5 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
|
|
因为javasun.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中继
|
|
触发xxe之后中继成功修改委派。接着模拟administrator申请高权限票据,然后ptt就完事了。
|
|
复现过程中碰到了[-] Exception in HTTP request handler: invalid server address
的错误,解决办法是dns解析的问题,修改/etc/resolv.conf
加上一行nameserver 172.16.33.12
,让kali也能解析test.local域名就可以了。
# 总结
基于资源的约束委派利用条件:
- 拥有一个任意的服务账户1或者计算机账户1(
evilpc$
),如果没有,可以滥用普通域账户jack的MachineAccountQuota。 - 获得服务账户2的LDAP权限,文中采用的ntlm中继
- 配置服务1对服务2的约束委派
- 发起S4U2Proxy申请高权限票据进行ptt
相比于传统约束委派,信任关系的传入传出方向不同,设置的对象不同。
文笔垃圾,措辞轻浮,内容浅显,操作生疏。不足之处欢迎大师傅们指点和纠正,感激不尽。
如果你觉得这篇文章对你有所帮助,欢迎赞赏或关注微信公众号~