1.6. WAF

1.6.1. 简介

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

1.6.2. 常见功能

  • 检测异常协议,拒绝不符合HTTP标准的请求
  • 白名单,适用于稳定的Web应用
  • 黑名单,适合处理已知问题
  • 对状态管理进行会话保护
  • Cookies保护
  • 信息泄露保护

1.6.3. WAF分类

1.6.3.1. 按布置位置分

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

1.6.3.2. 按防护方式分

  • 基于正则的WAF
  • 基于语义的WAF
    • 基于语义理解,对一些变式有较好的效果
  • 基于行为的WAF
  • 基于机器学习的WAF

1.6.4. 扫描器防御

  • 基于User-Agent识别
  • 基于攻击载荷识别
  • 验证码

1.6.5. 绕过方式

1.6.5.1. 基于架构的绕过

  • 站点在WAF后,但是站点可直连
  • 站点在云服务器中,对同网段服务器无WAF

1.6.5.2. 基于资源的绕过

  • 使用消耗大的载荷,耗尽WAF的计算资源

1.6.5.3. 基于解析的绕过

  • 字符集解析不同
  • 协议覆盖不全
  • 协议解析不正确
  • 站点和WAF对https有部分不一致
  • WAF解析与Web服务解析不一致
    • 同一个参数多次出现,取的位置不一样

1.6.5.4. 基于规则的绕过

  • 等价替换
    • 大小写变换
      • select => sEleCt
      • <sCrIpt>alert(1)</script>
    • 字符编码
      • URL编码
      • 十六进制编码
      • Unicode解析
      • Base64
      • HTML
      • JSFuck
    • 等价函数
    • 等价变量
    • 关键字拆分
  • 字符干扰
    • 空字符 (空格、换行、制表)
    • 注释
  • 特殊符号
    • 注释符
    • 引号(反引号、单引号、双引号)
  • 利用服务本身特点
    • 替换可疑关键字为空
      • selselectect => select
  • 少见特性未在规则列表中