Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ftw — WAF 测试框架(FTW!) | Kitploit
工具/GitHubGitHub/fastly/ftw
漏洞扫描器WAF绕过Web安全渗透测试DevSecOpsArchived
GitHubfastly/ftw

ftw

WAF 测试框架(FTW!)

查看仓库
2635873年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

用于测试WAF的框架(FTW)

Build Status

目的

本项目由ModSecurity和Fastly的研究人员共同创建,旨在为WAF规则提供严格的测试。它使用OWASP核心规则集V3作为基线,在WAF上测试规则。规则集中的每条规则都被加载到一个YAML文件中,该文件会发出触发这些规则的HTTP请求。

目标/使用场景包括:

  • 通过持续集成并对WAF发起可重复的攻击,发现WAF部署中的回归问题
  • 为ModSecurity中的新规则提供测试框架,若提交规则,则必须附有对应的正向和负向测试
  • 基于通用且可接受的基线规则集(OWASP)评估WAF
  • 测试和验证不属于核心规则集的自定义WAF规则

安装

  • git clone [email protected]:fastly/ftw.git
  • cd ftw
  • 确保已安装pip apt-get install python-pip
  • pip install -r requirements.txt

仅通过HTML包含和状态码检查运行测试

  • 创建指向你的Web服务器(前端有WAF)的YAML文件
  • py.test test/test_default.py --ruledir test/yaml

配置Apache+Modsecurity+OWASP CRS

如果你需要一个测试WAF规则的环境,这里有一个已用Apache、Modsecurity和OWASP核心规则集3.0.0版本创建好的环境。可以通过以下方式部署:

  • 检出仓库:git clone https://github.com/fastly/waf_testbed.git
  • 输入 vagrant up

运行测试并覆写YAML文件中的目标地址为自定义域名

  • 启动你的测试Web服务器
  • py.test test/test_default.py --ruledir=test/yaml --destaddr=domain.com --port 443 --protocol https

运行集成测试,本地Web服务器,可能需要使用sudo

  • py.test test/integration/test_logcontains.py -s --ruledir=test/integration/

如何集成日志

  1. 创建一个*.py文件,包含必要的导入,示例见test/integration/test_logcontains.py
  2. 所有以test*开头的函数将被py.test运行,因此请创建一个函数def test_somewaf
  3. 实现一个继承LogChecker的类
  4. 实现get_logs()函数。FTW会在运行测试后调用此函数,并设置self.start和self.end的日期时间
  5. 使用日期时间变量中的信息从你的WAF检索文件,无论是文件还是API调用
  6. 获取日志,将它们存储为字符串数组,并从get_logs()返回
  7. 使用py.test fixtures。使用函数装饰器@pytest.fixture,返回你的新LogChecker对象。当你在测试中使用与@pytest.fixture名称匹配的函数参数时,它会实例化你的对象,使运行测试更容易。第1步中的Python文件中有一个示例。

以编程方式发送HTTP请求

虽然推荐使用YAML格式发送请求,但自动化测试通常需要发送大量动态请求。在这种情况下,建议使用py.test框架来生成可以作为整体一部分运行的测试用例。 通常发送HTTP请求很简单:

  1. 创建HttpUA()类的实例
  2. 创建Input()类的实例,并提供你不想使用默认值的任何参数
  3. 将输入类的实例提供给HttpUA.send_request()

有关示例,请参阅http集成测试

下载工具
  • 按照test/integration/LOGCONTAINSFIXTURE.yaml中的格式编写*.yaml格式的测试配置,log_contains行需要一个正则表达式字符串。FTW会将YAML文件中每个阶段的log_contains字符串编译成正则表达式。然后,该正则表达式将与从get_logs()传入的日志行一起使用,以查找匹配项。因此,log_contains字符串应该是唯一的规则ID,因为FTW是贪婪的,会传递第一个匹配项。从传递给LogChecker对象的开始/结束时间可以减轻误报,但最好还是使用唯一的正则表达式以确保安全。
  • 对于每个阶段,都会调用get_logs()函数,因此如果通过API检索日志,请务必考虑API调用。