Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

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

工具目录

分类

查看所有分类
Loading categories
gotestwaf — 一个用 Golang 编写的开源项目,用于评估不同的 API 安全工具和 WAF 的检测逻辑及绕过方法。 | Kitploit
工具/GitHubGitHub/wallarm/gotestwaf
漏洞扫描器Web漏洞扫描器API安全测试WAF绕过Web安全渗透测试API 安全API 安全 分类第 11 名API安全测试 分类第 11 名WAF绕过 分类第 3 名
1.8k260354天前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
GitHubwallarm/gotestwaf

gotestwaf

一个用 Golang 编写的开源项目,用于评估不同的 API 安全工具和 WAF 的检测逻辑及绕过方法。

查看仓库网站
分享

GoTestWAF Black Hat Arsenal USA 2022

GoTestWAF 是一款用于 API 和 OWASP 攻击模拟的工具,支持多种 API 协议,包括 REST、GraphQL、gRPC、SOAP、XMLRPC 等。

它旨在评估 Web 应用安全解决方案,例如 API 安全代理、Web 应用防火墙、 IPS、API 网关等。


  • 工作原理
  • 环境要求
  • 使用 Docker 快速开始
  • 查看评估结果
  • 演示
  • 运行 GoTestWAF 的其他方式
  • 配置选项
  • 使用 OWASP Core Rule Set 回归测试套件运行

工作原理

GoTestWAF 使用放置在 HTTP 请求不同部分(请求体、请求头、 URL 参数等)中的编码载荷来生成恶意请求。生成的请求会被发送到 GoTestWAF 启动时指定的应用安全解决方案 URL。 安全解决方案的评估结果会记录在您机器上生成的报告文件中。

请求生成的默认条件定义在 testcases 文件夹中,采用以下格式的 YAML 文件:```yaml payload:

  • '"union select -7431.1, name, @aaa from u_base--w-'
  • "'or 123.22=123.22"
  • "' waitfor delay '00:00:10'--"
  • "')) or pg_sleep(5)--" encoder:
  • Base64Flat
  • URL
  • JSUnicode placeholder:
  • URLPath
  • URLParam
  • Header type: SQL Injection
* `payload` 是恶意攻击样本(例如像 ```<script>alert(111)</script>``` 这样的 XSS payload,或者更复杂的样本)。
由于 payload 需要符合 YAML 字符串的格式,它们必须[编码为二进制数据](https://yaml.org/type/binary.html)。

* `encoder` 是在将 payload 放入 HTTP 请求之前要应用的编码器。可用的编码器有:

    * Base64
    * Base64Flat
    * JSUnicode
    * URL
    * Plain(保持 payload 字符串原样)
    * XML Entity

* `placeholder` 是 HTTP 请求中应放置编码后 payload 的位置。可用的占位符有:

    * gRPC
    * Header
    * UserAgent
    * RequestBody
    * JSONRequest
    * JSONBody
    * HTMLForm
    * HTMLMultipartForm
    * SOAPBody
    * XMLBody
    * URLParam
    * URLPath
    * RawRequest

    `RawRequest` 占位符允许你执行任意 HTTP 请求。payload 通过替换 URL 路径、Headers 或 body 中的字符串 `{{payload}}` 来注入。`RawRequest` 占位符的字段:

    * `method`
    * `path`
    * `headers`
    * `body`

    `RawRequest` 占位符的必填字段:
    
    * `method` 字段

    示例:
    
    ```yaml
    payload:
      - test
    encoder:
      - Plain
    placeholder:
      - RawRequest:
          method: "POST"
          path: "/"
          headers:
            Content-Type: "multipart/form-data; boundary=boundary"
          body: |
            --boundary
            Content-disposition: form-data; name="field1"
            
            Test
            --boundary
            Content-disposition: form-data; name="field2"
            Content-Type: text/plain; charset=utf-7
            
            Knock knock.
            {{payload}}
            --boundary--
    type: RawRequest test
    ```

* `type` 是文件中整个 payload 组的名称。它可以任意命名,但应反映文件中的攻击类型。

请求生成是一个三步过程,涉及将 payload 数量与编码器和占位符数量相乘。
假设你定义了 2 个 **payload**、3 个 **encoder**(Base64、JSUnicode 和 URL)以及 1 个 **placeholder**(URLParameter - HTTP GET 参数)。
在这种情况下,GoTestWAF 将在一个测试用例中发送 2x3x1 = 6 个请求。

在启动 GoTestWAF 时,你还可以在两个内置测试用例之间进行选择:OWASP Top-10、OWASP-API,
或使用你自己的测试用例(通过[配置选项](#configuration-options) `testCasePath`)。

## 要求

* GoTestwaf 支持所有主流操作系统(Linux、Windows、macOS),如果系统中安装了 [Go](https://golang.org/doc/install),则可以原生构建。如果你想原生运行 GoTestWaf,
请确保你拥有 Chrome 网络浏览器,以便能够生成 PDF 报告。如果你没有 Chrome,
则可以创建 HTML 格式的报告。
* 如果将 GoTestWAF 作为 Docker 容器运行,请确保你已[安装并配置 Docker](https://docs.docker.com/get-docker/),
并且 GoTestWAF 与被评估的应用安全解决方案连接到同一个 [Docker 网络](https://docs.docker.com/network/)。
* 为了让 GoTestWAF 成功启动,请确保运行 GoTestWAF 的机器的 IP 地址已加入
运行应用安全解决方案的机器的白名单。

## 使用 Docker 快速开始

以下步骤将引导你以最小配置在 Docker 上下载并启动 GoTestWAF。

1.  从 Docker Hub 拉取 [GoTestWAF 镜像](https://hub.docker.com/r/wallarm/gotestwaf):

    ```
    docker pull wallarm/gotestwaf
    ```

2.  启动 GoTestWAF 镜像:

    ```sh
    docker run --rm --network="host" -it -v ${PWD}/reports:/app/reports \
        wallarm/gotestwaf --url=<EVALUATED_SECURITY_SOLUTION_URL>
    ```

    如有需要,你可以将 `${PWD}/reports` 替换为用于放置评估报告的其他文件夹路径。

    如果你不想可选地通过电子邮件发送报告,只需在电子邮件请求消息出现后按 Enter,或者你可以使用 --noEmailReport 跳过该消息:

    ```sh
    docker run --rm --network="host" -v ${PWD}/reports:/app/reports \
        wallarm/gotestwaf --url=<EVALUATED_SECURITY_SOLUTION_URL> --noEmailReport
    ```

    如果被评估的安全工具可从外部访问,你可以跳过 `--network="host"` 选项。此选项启用运行在 127.0.0.1 上的 Docker 容器之间的交互。

    要执行 gRPC 测试,你必须有一个可用的端点,并使用 --grpcPort <port> cli 选项。

    ```sh
    docker run --rm --network="host" -it -v ${PWD}/reports:/app/reports \
        wallarm/gotestwaf --grpcPort 9000 --url=http://my.grpc.endpoint
    ```

3.  检查你的电子邮件以获取报告。

你已使用最小配置通过 GoTestWAF 成功评估了你的应用安全解决方案。
要了解高级配置选项,请使用此[链接](#configuration-options)。

## 检查评估结果
下载工具