WAF防御思想
攻击的特点
- 攻击的二象性:已知攻击与未知攻击
- 攻击的两个维度:形式与漏洞
WAF的核心原理:
- 运用黑白思想
- 特征匹配
- 漏洞签名
- 对匹配结果进行相应(拦截、记录)
WAF绕过
- 架构
- 规则缺陷/特性
- 协议
安全狗MYSQL
超长数据包BYPASS
- GET型请求转POST型
- Content-Length头长度大于4008
- 正常参数放置在脏数据后面,否则无效
空格替换BYPASS
- 拒绝传统的%20 -> %09 %0a %0b %08
- GET型转POST型
协议转换BYPASS
- 使用表单请求中的multipart/form-data
- 关键词换行

云锁Mysql
规则缺陷特性
假如HTTP请求POST BODY太大,检测所有的内容,WAF集群消耗太大的CPU、内存资源。因此许多WAF只检测前面2M、或4M的内容。对于攻击者而然,只需要在POST BODY前面添加许多无用的数据,把攻击payload放在最后即可绕过WAF检测
非ASCII码字符
MYSQL特性
select id,contents,time from news where news_id=1[1]union[2]select[3]1,2,db_name() [4]from[5]admin
[1]
- 可利用其他控制字符替换空格 %09,%0a,%0b,%0c,%0d,%20,%a0
- 可利用注释符号 /**/ #test%0d%0a —+a
- 可利用数学运算以及数据类型 news_id=1.1 news_id=1e0 news_id=\N
[2]
可利用其他控制字符替换空格 %09,%0a,%0b,%0c,%0d,%20,%a0
可利用注释符号 /**/ #test%0d%0a —+a
可利用括号 union(select 1,2)
[3]
可利用其他控制字符替换空格 %09,%0a,%0b,%0c,%0d,%20,%a0
可利用注释符号 /**/ #test%0d%0a —+a
可利用其他符号:+、-、~、!、@
云锁Mssql
HTTP协议兼容性
HTTP Method多样性
GET参数通过URL传递,POST放在Request Body中
但是GET请求中同样可以传输POST数据。
HTTP BODY兼容性
参数通过表单类型multipart/form-data进行提交
