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注入篇 `_