WAF-A-MoLE:针对Web应用防火墙的基于变异的模糊测试工具
字数 1619 2025-08-13 21:33:29

WAF-A-MoLE:基于变异的WAF模糊测试工具教学文档

1. 工具概述

WAF-A-MoLE是一款专门用于测试基于机器学习(ML)的Web应用防火墙(WAF)的模糊测试工具。它通过生成语义不变的SQL注入查询变种,来发现WAF分类器中的安全盲点。

主要特点:

  • 基于变异的模糊测试方法
  • 专注于SQL注入攻击的测试
  • 语义保留的变异操作
  • 支持评估WAF产品的稳健性

2. 工具体系架构

WAF-A-MoLE采用以下工作流程:

  1. Payload池管理:初始Payload被插入到管理优先级队列的Payload池中
  2. 迭代过程:每次迭代从池头部取出Payload传递给模糊器
  3. 变异操作:模糊器应用随机变异操作符生成新Payload

3. 变异操作详解

当前版本支持的SQL语义保留变异操作:

3.1 大小写切换

  • 示例:admin' OR 1=1#admin' oR 1=1#
  • 原理:随机改变SQL关键字的大小写

3.2 空格替换

  • 示例:admin' OR 1=1#admin'\t\rOR\n1=1#
  • 原理:用制表符(\t)、回车符(\r)、换行符(\n)等替代空格

3.3 注释注入

  • 示例:admin' OR 1=1#admin'/**/OR 1=1#
  • 原理:在SQL语句中插入不影响执行的注释

3.4 注释重写

  • 示例:admin'/**/OR 1=1#admin'/*xyz*/OR 1=1#abc
  • 原理:修改已有注释的内容

3.5 整型编码

  • 示例:admin' OR 1=1#admin' OR 0x1=(SELECT 1)#
  • 原理:将数字常量转换为十六进制或其他表示形式

3.6 操作切换

  • 示例:admin' OR 1=1#admin' OR 1 LIKE 1#
  • 原理:用语义等效的不同操作符替换

3.7 逻辑恒量

  • 示例:admin' OR 1=1#admin' OR 1=1 AND 0<1#
  • 原理:添加始终为真的逻辑表达式

4. 环境要求

4.1 Python库依赖

  • numpy
  • keras
  • scikit-learn
  • joblib
  • sqlparse
  • networkx
  • Click

5. 安装指南

  1. 克隆项目仓库:
git clone https://github.com/AvalZ/WAF-A-MoLE.git
  1. 安装依赖:
pip install -r requirements.txt

6. 使用说明

6.1 基本命令

wafamole --help

6.2 主要功能命令

wafamole evade --help

6.3 参数详解

必需参数:

  • MODEL_PATH:目标分类器模型路径
  • PAYLOAD:初始SQL注入Payload

可选参数:

  • -T, --model-type TEXT:加载的分类器类型
  • -t, --timeout INTEGER:逃避模型的超时时间
  • -r, --max-rounds INTEGER:最大模糊测试轮数
  • -s, --round-size INTEGER:每轮的模糊测试步长(并行模糊测试步骤)
  • --threshold FLOAT:目标WAF的分类阈值[默认0.5]
  • --random-engine TEXT:使用随机变换而非进化引擎,设置试验次数
  • --output-path TEXT:保存随机引擎结果的位置(不用于常规进化引擎)

7. 性能评估建议

  1. 从简单的SQL注入Payload开始测试
  2. 逐步增加变异复杂度
  3. 监控WAF的检测率变化
  4. 记录成功绕过的Payload变种
  5. 分析WAF的盲点模式

8. 应用场景

  1. 安全研究:发现WAF中的潜在漏洞
  2. 产品评估:测试商业WAF产品的有效性
  3. 防御改进:帮助WAF开发者增强防护能力
  4. 红队测试:在渗透测试中绕过WAF防护

9. 注意事项

  1. 仅用于合法授权测试
  2. 避免在生产环境直接测试
  3. 变异操作可能不适用于所有SQL方言(当前版本主要针对MySQL)
  4. 测试前确保获得系统所有者许可

10. 项目资源

项目地址:https://github.com/AvalZ/WAF-A-MoLE

WAF-A-MoLE:基于变异的WAF模糊测试工具教学文档 1. 工具概述 WAF-A-MoLE是一款专门用于测试基于机器学习(ML)的Web应用防火墙(WAF)的模糊测试工具。它通过生成语义不变的SQL注入查询变种,来发现WAF分类器中的安全盲点。 主要特点: 基于变异的模糊测试方法 专注于SQL注入攻击的测试 语义保留的变异操作 支持评估WAF产品的稳健性 2. 工具体系架构 WAF-A-MoLE采用以下工作流程: Payload池管理 :初始Payload被插入到管理优先级队列的Payload池中 迭代过程 :每次迭代从池头部取出Payload传递给模糊器 变异操作 :模糊器应用随机变异操作符生成新Payload 3. 变异操作详解 当前版本支持的SQL语义保留变异操作: 3.1 大小写切换 示例: admin' OR 1=1# ⇒ admin' oR 1=1# 原理:随机改变SQL关键字的大小写 3.2 空格替换 示例: admin' OR 1=1# ⇒ admin'\t\rOR\n1=1# 原理:用制表符(\t)、回车符(\r)、换行符(\n)等替代空格 3.3 注释注入 示例: admin' OR 1=1# ⇒ admin'/**/OR 1=1# 原理:在SQL语句中插入不影响执行的注释 3.4 注释重写 示例: admin'/**/OR 1=1# ⇒ admin'/*xyz*/OR 1=1#abc 原理:修改已有注释的内容 3.5 整型编码 示例: admin' OR 1=1# ⇒ admin' OR 0x1=(SELECT 1)# 原理:将数字常量转换为十六进制或其他表示形式 3.6 操作切换 示例: admin' OR 1=1# ⇒ admin' OR 1 LIKE 1# 原理:用语义等效的不同操作符替换 3.7 逻辑恒量 示例: admin' OR 1=1# ⇒ admin' OR 1=1 AND 0<1# 原理:添加始终为真的逻辑表达式 4. 环境要求 4.1 Python库依赖 numpy keras scikit-learn joblib sqlparse networkx Click 5. 安装指南 克隆项目仓库: 安装依赖: 6. 使用说明 6.1 基本命令 6.2 主要功能命令 6.3 参数详解 必需参数: MODEL_PATH :目标分类器模型路径 PAYLOAD :初始SQL注入Payload 可选参数: -T, --model-type TEXT :加载的分类器类型 -t, --timeout INTEGER :逃避模型的超时时间 -r, --max-rounds INTEGER :最大模糊测试轮数 -s, --round-size INTEGER :每轮的模糊测试步长(并行模糊测试步骤) --threshold FLOAT :目标WAF的分类阈值[ 默认0.5 ] --random-engine TEXT :使用随机变换而非进化引擎,设置试验次数 --output-path TEXT :保存随机引擎结果的位置(不用于常规进化引擎) 7. 性能评估建议 从简单的SQL注入Payload开始测试 逐步增加变异复杂度 监控WAF的检测率变化 记录成功绕过的Payload变种 分析WAF的盲点模式 8. 应用场景 安全研究 :发现WAF中的潜在漏洞 产品评估 :测试商业WAF产品的有效性 防御改进 :帮助WAF开发者增强防护能力 红队测试 :在渗透测试中绕过WAF防护 9. 注意事项 仅用于合法授权测试 避免在生产环境直接测试 变异操作可能不适用于所有SQL方言(当前版本主要针对MySQL) 测试前确保获得系统所有者许可 10. 项目资源 项目地址:https://github.com/AvalZ/WAF-A-MoLE