WAF
========================================
简介
----------------------------------------
WAF(Web Application Firewall,Web应用防火墙)是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供加固的产品。
常见功能
----------------------------------------
- 检测异常协议,拒绝不符合HTTP标准的请求
- 白名单,适用于稳定的Web应用
- 黑名单,适合处理已知问题
- 对状态管理进行会话保护
- Cookies保护
- 信息泄露保护
WAF分类
----------------------------------------
按布置位置分
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 云WAF
- WAF在云上,请求先经过云服务器而后流向主机。
- 主机防护软件
- 主机预先安装对应软件,如mod_security、ngx-lua-waf等,对主机进行防护。
- 硬件防护
- 流量流向主机时,先经过设备的清洗和拦截。
按防护方式分
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 基于正则的WAF
- 基于语义的WAF
- 基于语义理解,对一些变式有较好的效果
- 基于行为的WAF
- 基于机器学习的WAF
扫描器防御
----------------------------------------
- 基于User-Agent识别
- 基于攻击载荷识别
- 验证码
绕过方式
----------------------------------------
基于架构的绕过
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 站点在WAF后,但是站点可直连
- 站点在云服务器中,对同网段服务器无WAF
基于资源的绕过
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 使用消耗大的载荷,耗尽WAF的计算资源
基于解析的绕过
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 字符集解析不同
- 协议覆盖不全
- 协议解析不正确
- 站点和WAF对https有部分不一致
- WAF解析与Web服务解析不一致
- 同一个参数多次出现,取的位置不一样
基于规则的绕过
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 等价替换
- 大小写变换
- ``select`` => ``sEleCt``
- ````
- 字符编码
- URL编码
- 十六进制编码
- Unicode解析
- Base64
- HTML
- JSFuck
- 等价函数
- 等价变量
- 关键字拆分
- 字符干扰
- 空字符 (空格、换行、制表)
- 注释
- 特殊符号
- 注释符
- 引号(反引号、单引号、双引号)
- 利用服务本身特点
- 替换可疑关键字为空
- ``selselectect`` => ``select``
- 少见特性未在规则列表中
参考链接
----------------------------------------
- `WAF攻防研究之四个层次Bypass WAF `_
- `我的WafBypass之道 SQL注入篇 `_