11.2.1. 简介
11.2.1.1. 概念
WAF(Web Application Firewall,Web应用防火墙)是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供加固的产品。
在市场上,有各种价格各种功能和选项的WAF。在一定程度上,WAF能为Web应用提供安全性,但是不能保证完全的安全。
11.2.2. 防护方式
WAF常用的方法有关键字检测、正则表达式检测、语法分析、行为分析、声誉分析、机器学习等。
基于正则的保护是最常见的保护方式。开发者用一些设定好的正则规则来检测载荷是否存在攻击性。基于正则的防护较为简单,因此存在一些缺点。例如只能应用于单次请求,而且正则很难应用到一些复杂的协议上。
基于语法的分析相对正则来说更快而且更准确,这种分析会把载荷按照语法解析成的符号组,然后在符号组中寻找危险的关键字。这种方式对一些载荷的变式有较好的效果,但是同样的,对解析器要求较高。
基于行为的分析着眼的范围更广一些,例如攻击者的端口扫描行为、目录爆破、参数测试或者一些其他自动化或者攻击的模式都会被纳入考虑之中。
基于声誉的分析可以比较好的过滤掉一些可疑的来源,例如常用的VPN、匿名代理、Tor节点、僵尸网络节点的IP等。
基于机器学习的WAF涉及到的范围非常广,效果也因具体实现和场景而较为多样化。
除了按具体的方法分,也可以根据白名单和黑名单的使用来分类。基于白名单的WAF适用于稳定的Web应用,而基于黑名单则适合处理已知问题。
11.2.5. 绕过方式
11.2.5.3. 基于解析的绕过
- 字符集解析不同
-
- 协议覆盖不全
-
- POST的JSON传参 /
form-data
/multipart/form-data
- POST的JSON传参 /
- 协议解析不正确
- 站点和WAF对https有部分不一致
-
- WAF解析与Web服务解析不一致
-
- 部分ASP+IIS会转换
%u0065
格式的字符 - Apache会解析畸形Method
- 同一个参数多次出现,取的位置不一样
- HTTP Parameter Pollution (HPP)
- HTTP Parameter Fragmentation (HPF)
- 部分ASP+IIS会转换
11.2.5.4. 基于规则的绕过
-
- 等价替换
-
-
- 大小写变换
-
select
=>sEleCt
<sCrIpt>alert(1)</script>
-
- 字符编码
-
- URL编码
- 十六进制编码
- Unicode解析
- Base64
- HTML
- JSFuck
- 其他编码格式
- 等价函数
- 等价变量
- 关键字拆分
- 字符串操作
-
-
- 字符干扰
-
-
- 空字符
-
- NULL (x00)
- 空格
- 回车 (x0d)
- 换行 (x0a)
- 垂直制表 (x0b)
- 水平制表 (x09)
- 换页 (x0c)
- 注释
-
-
- 特殊符号
-
- 注释符
- 引号(反引号、单引号、双引号)
-
- 利用服务本身特点
-
-
- 替换可疑关键字为空
-
selselectect
=>select
-
- 少见特性未在规则列表中