Skip to content

Commit

Permalink
update: waf, add more detail
Browse files Browse the repository at this point in the history
  • Loading branch information
LyleMi committed Jun 13, 2019
1 parent cd7b082 commit fb9e51c
Showing 1 changed file with 53 additions and 21 deletions.
74 changes: 53 additions & 21 deletions source/basic/waf.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,43 +3,63 @@ WAF

简介
----------------------------------------

概念
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
WAF(Web Application Firewall,Web应用防火墙)是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供加固的产品。

在市场上,有各种价格各种功能和选项的WAF。在一定程度上,WAF能为Web应用提供安全性,但是不能保证完全的安全。

常见功能
----------------------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 检测异常协议,拒绝不符合HTTP标准的请求
- 白名单,适用于稳定的Web应用
- 黑名单,适合处理已知问题
- 对状态管理进行会话保护
- Cookies保护
- 信息泄露保护
- DDoS防护
- 禁止某些IP访问
- 可疑IP检查
- 安全HTTP头管理
- X-XSS-Protection
- X-Frame-Options
- 机制检测
- CSRF token
- HSTS

布置位置
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
按布置位置,WAF可以分为云WAF、主机防护软件和硬件防护。云WAF布置在云上,请求先经过云服务器而后流向主机。主机防护软件需要主机预先安装对应软件,如mod_security、ngx-lua-waf等,对主机进行防护。硬件防护指流量流向主机时,先经过设备的清洗和拦截。

WAF分类
防护方式
----------------------------------------
WAF常用的方法有关键字检测、正则表达式检测、语法分析、行为分析、声誉分析、机器学习等。

按布置位置分
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 云WAF
- WAF在云上,请求先经过云服务器而后流向主机。
- 主机防护软件
- 主机预先安装对应软件,如mod_security、ngx-lua-waf等,对主机进行防护。
- 硬件防护
- 流量流向主机时,先经过设备的清洗和拦截。

按防护方式分
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 基于正则的WAF
- 基于语义的WAF
- 基于语义理解,对一些变式有较好的效果
- 基于行为的WAF
- 基于机器学习的WAF
基于正则的保护是最常见的保护方式。开发者用一些设定好的正则规则来检测载荷是否存在攻击性。基于正则的防护较为简单,因此存在一些缺点。例如只能应用于单次请求,而且正则很难应用到一些复杂的协议上。

基于语法的分析相对正则来说更快而且更准确,这种分析会把载荷按照语法解析成的符号组,然后在符号组中寻找危险的关键字。这种方式对一些载荷的变式有较好的效果,但是同样的,对解析器要求较高。

基于行为的分析着眼的范围更广一些,例如攻击者的端口扫描行为、目录爆破、参数测试或者一些其他自动化或者攻击的模式都会被纳入考虑之中。

基于声誉的分析可以比较好的过滤掉一些可疑的来源,例如常用的VPN、匿名代理、Tor节点、僵尸网络节点的IP等。

基于机器学习的WAF涉及到的范围非常广,效果也因具体实现和场景而较为多样化。

除了按具体的方法分,也可以根据白名单和黑名单的使用来分类。基于白名单的WAF适用于稳定的Web应用,而基于黑名单则适合处理已知问题。

扫描器防御
----------------------------------------
- 基于User-Agent识别
- 基于攻击载荷识别
- 验证码

WAF指纹
----------------------------------------
- 额外的Cookie
- 额外的Header
- 被拒绝请求时的返回内容
- 被拒绝请求时的返回响应码
- IP

绕过方式
----------------------------------------

Expand All @@ -60,6 +80,8 @@ WAF分类
- 站点和WAF对https有部分不一致
- WAF解析与Web服务解析不一致
- 同一个参数多次出现,取的位置不一样
- HTTP Parameter Pollution (HPP)
- HTTP Parameter Fragmentation (HPF)

基于规则的绕过
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand All @@ -74,11 +96,20 @@ WAF分类
- Base64
- HTML
- JSFuck
- 其他编码格式
- 等价函数
- 等价变量
- 关键字拆分
- 字符串操作
- 字符干扰
- 空字符 (空格、换行、制表)
- 空字符
- NULL (\x00)
- 空格
- 回车 (\x0d)
- 换行 (\x0a)
- 垂直制表 (\x0b)
- 水平制表 (\x09)
- 换页 (\x0c)
- 注释
- 特殊符号
- 注释符
Expand All @@ -92,3 +123,4 @@ WAF分类
----------------------------------------
- `WAF攻防研究之四个层次Bypass WAF <https://www.weibo.com/ttarticle/p/show?id=2309404007261092631700&sudaref=www.google.com.hk&display=0&retcode=6102>`_
- `我的WafBypass之道 SQL注入篇 <https://xz.aliyun.com/t/368>`_
- `WAF through the eyes of hackers <https://habr.com/en/company/dsec/blog/454592/>`_

0 comments on commit fb9e51c

Please sign in to comment.