非约束委派

当访问主体以kerberos认证的方式访问非约束委派服务器,非约束委派服务器的内存中就会存有这个主体的TGT。
如果想要主动触发漏洞,可以使用PrintBug 或者PetitPotam。这两个服务在本地是以system权限运行,发起网络请求时,代表的身份是所在机器的机器账户的身份。

实验环境如下:

机器:DC-01、client-01
client-01的本地管理员用户:mahuateng:mahuateng123
域控机器上运行着打印机服务

Allows Unconstrained Delegation: TRUE 确认client-01为非约束委派
image.png


确认打印机漏洞存在
image.png

使用Rubeus监听TGT
image.png

触发打印机漏洞,注意,此时必须要指向域名,因为在kerberos协议中,ip认证会触发协议降级
image.png

成功抓取到域控的机器账户的TGT
image.png

对TGT转换为ccache格式后利用nxc 执行DCSync,导出全域hash
image.png

约束委派

1.当开启了无协议转换限制,即启用了 Kerberos 扩展协议S4U2self。如果控制了约束委派机器,那么该机器就可以向KDC请求任意用户访问自身服务的ST。然后再利用S4Uproxy,拿着这张ST给KDC,就可以任意用户的身份去访问在约束范围内的服务。

2.如果目标机器上存在多个服务,可以替换要访问的目标服务。因为校验服务是否被允许,是通过判断SPN,而SPN不和PAC进行绑定,攻击者就可以去篡改SPN,但是仅限该机器上的其他服务,因为每台机器对于SPN的加密是不同的。

实验环境如下:

机器:DC-01、client-01
漏洞载体: svc-app (域用户, 非机器)
├─ SPN: http/client-02.yes.com
├─ UAC 0x1000000 (TrustedToAuthForDelegation, 协议任意) ← 漏洞1
└─ msDS-AllowedToDelegateTo: DNS/dc-01.yes.com ← 漏洞2
有远程登录权限的普通域用户leijun:leijun123

先Kerberoasting和hashcat给svc-app的密码搞出来
image.png
image.png

登录到client-01,执行S4U任意用户伪造和SPN服务替换
image.png

.\Rubeus.exe s4u /user:svc-app /rc4:A9FDFA038C4B75EBC76DC855DD74F0DA /impersonateuser:administrator /domain:yes.com /dc:dc-01.yes.com /msdsspn:dns/dc-01.yes.com /altservice:ldap /nowrap
image.png

用拿到的ldap服务的ST,去创建域用户,并且加入到域管理员组,从而拿下域控权限
image.png

基于资源的约束委派

和其他委派不同的是,决定委派服务是否成立,不在于活动目录,而是目标自身的属性决定,如果对目标拥有篡改权限,把自己控制的主体(通常是机器账号或者是服务账号)给加入到控制委派的DACL里面,就可以借助S4U任意用户模拟,对目标机器完全控制。

实验环境

机器:DC-01、client-01
eijun (leijun123, 普通域用户, 零权限起点)
└─ 对 CLIENT-01$ 的 GenericAll ACL ← 整个靶场就这一条配置

CLIENT-01$ 身上:
msDS-AllowedToActOnBehalfOfOtherIdentity = 空 ← 攻击者第②步自己写入
TrustedForDelegation = FALSE (非约束已撤)
msDS-AllowedToDelegateTo = 空

域配置:
ms-DS-MachineAccountQuota = 10 (默认, 没动) ← 让 leijun 能建机器账户

先给受控账号建好
image.png

./Rubeus.exe s4u /user:PWN$ /rc4:CE157E0DDC10B389B77C6749710B7184 /impersonateuser:administrator /domain:yes.com /dc:dc-01.yes.com /msdsspn:cifs/client-01.yes.com /ptt /nowrap

拿下对于cifs/client-01.yes.com的域管理员ST
image.png

之后就可以利用cifs的rpc,以域管理员的权限进行命令执行了

标签: none