From fb9e51c48450fddf558b5882e362f4b6cbccb391 Mon Sep 17 00:00:00 2001 From: lyle Date: Thu, 13 Jun 2019 12:45:13 +0800 Subject: [PATCH] update: waf, add more detail --- source/basic/waf.rst | 74 +++++++++++++++++++++++++++++++------------- 1 file changed, 53 insertions(+), 21 deletions(-) diff --git a/source/basic/waf.rst b/source/basic/waf.rst index 0d5a118..16e8973 100644 --- a/source/basic/waf.rst +++ b/source/basic/waf.rst @@ -3,36 +3,48 @@ 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应用,而基于黑名单则适合处理已知问题。 扫描器防御 ---------------------------------------- @@ -40,6 +52,14 @@ WAF分类 - 基于攻击载荷识别 - 验证码 +WAF指纹 +---------------------------------------- +- 额外的Cookie +- 额外的Header +- 被拒绝请求时的返回内容 +- 被拒绝请求时的返回响应码 +- IP + 绕过方式 ---------------------------------------- @@ -60,6 +80,8 @@ WAF分类 - 站点和WAF对https有部分不一致 - WAF解析与Web服务解析不一致 - 同一个参数多次出现,取的位置不一样 + - HTTP Parameter Pollution (HPP) + - HTTP Parameter Fragmentation (HPF) 基于规则的绕过 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -74,11 +96,20 @@ WAF分类 - Base64 - HTML - JSFuck + - 其他编码格式 - 等价函数 - 等价变量 - 关键字拆分 + - 字符串操作 - 字符干扰 - - 空字符 (空格、换行、制表) + - 空字符 + - NULL (\x00) + - 空格 + - 回车 (\x0d) + - 换行 (\x0a) + - 垂直制表 (\x0b) + - 水平制表 (\x09) + - 换页 (\x0c) - 注释 - 特殊符号 - 注释符 @@ -92,3 +123,4 @@ WAF分类 ---------------------------------------- - `WAF攻防研究之四个层次Bypass WAF `_ - `我的WafBypass之道 SQL注入篇 `_ +- `WAF through the eyes of hackers `_