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

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

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

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

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/ngalongc/openapi_security_scanner
漏洞扫描器API安全测试Web安全渗透测试
GitHubngalongc/openapi_security_scanner

openapi_security_scanner

针对基于OpenAPI的API的自动化授权安全扫描器。通过差异化响应分析,使用多组凭据测试GET端点,以检测权限提升和访问控制漏洞。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

OpenAPI 安全扫描器

关于本项目

现代 Web 应用中的授权安全问题很难被安全扫描器轻易发现。以下是一些来自 Shopify、LINE、NordVPN 的示例。 原因之一是安全扫描器主要寻找 SQLi、XSS、RCE,而不是授权安全漏洞,并且扫描器通常不了解 Web 应用应有的行为方式。这就是为什么目前大多数授权漏洞主要依靠手动发现。 OpenAPI 安全扫描器旨在帮助通过自动化和人工审查发现授权安全问题。它就像一个外部单元测试工具,确保一切行为符合预期。

构建工具

  • Schemathesis

开始使用

观看此 视频 以跟随操作,或继续阅读下文。

Fork 或克隆本项目,并按照以下说明开始使用。

使用此扫描器的工作流程大致如下:

  • 准备目标 API 的 OpenAPI yaml 文件
  • 定义用于 API 测试的目标端点和变量
  • 生成多组不同用户的凭据,以确保执行 API 测试时覆盖各种边界情况
  • 配置完成后,启动运行器,可在 artifacts 中找到扫描结果
  • 安排运行器定期执行,并自定义希望在扫描结果发生变化时接收通知的方式

优势

对于开发者来说,使用此工具可以为 API 的内外部行为增加一层额外的保障。并且可以通过触发流水线 https://docs.gitlab.com/ee/ci/triggers/ 在每次代码部署时触发扫描器。

对于漏洞赏金猎人来说,使用此工具可以确保您始终掌握目标 API 的最新状态,因为我们都知道,即使某个特定端点以前没有漏洞,将来也可能因各种原因变得脆弱。因此,使用此工具将漏洞挖掘中的人工部分自动化会更加方便。

使用前警告

请确保您有权扫描目标 API。

先决条件

您需要一份 Web 应用的 OpenAPI yaml 文件,并将其替换到仓库中的 api.yaml 文件内容。

使用方法

将 api.yaml 的内容替换为目标 API 的 OpenAPI yaml 文件,然后进入 GitLab 项目的 Settings -> CI/CD -> 展开 Variables,按以下格式输入变量。

OPENAPI_CREDS

此处提供的凭据将以 Authorization: Bearer 标头格式传递给 API 调用。 建议为至少两个具有不同权限的用户帐户准备访问令牌,您还可以为每个用户帐户创建多个访问令牌,以测试不同作用域访问令牌的正确行为。

root@kitploit:~
{
   "<user_a>":[
      {
         "scope":"<scope>",
         "access_token":"<value>",
         "name":"<name_of_access_token>"
      },
      {
         "scope":"<scope>",
         "access_token":"<value>",
         "name":"<name_of_access_token>"
      }
   ],
   "<user_b>":[
      {
         "scope":"<scope>",
         "access_token":"<value>",
         "name":"<name_of_access_token>"
      }
   ]
}

OPENAPI_ENDPOINTS

此处提供的端点应为 GET 类型的 API 调用,您也可以在 JSON 正文中包含查询参数。以下示例中,端点是 /org/{orgs}/repos,查询参数为 type=all。对于端点 /repos/{owner}/{repo},则没有查询参数。

root@kitploit:~
{
   "/orgs/{org}/repos":{
      "type":"all"
   },
   "/repos/{owner}/{repo}":{
      
   }
}

OPENAPI_PATHS

可以在此处提供路径变量,扫描器将根据路径变量中的值生成所有组合。

root@kitploit:~
{
   "org":[
      "test-org"
   ],
   "owner":[
      "ngalongc",
      "reconless"
   ],
   "repo":[
      "public-repo",
      "private-repo"
   ]
}

在这种情况下,将生成以下组合 API 调用,并且它们都将由 OPENAPI_CREDS 中提供的不同凭据集调用。

root@kitploit:~
/orgs/test-org/repos?type=all
/repos/ngalongc/public-repo
/repos/ngalongc/private-repo
/repos/reconless/public-repo
/repos/reconless/private-repo

PRIVATE_TOKEN

前往 https://gitlab.com/-/profile/personal_access_tokens 创建一个 api 访问令牌,并将值替换到此处。此 GitLab 访问令牌用于从 GitLab 运行器下载扫描结果。

root@kitploit:~
<YOUR_GITLAB_API_ACCESS_TOKEN>

OPENAPI_BASE_URL

这应该是您的 API 服务器的基础 URL 值。

root@kitploit:~
https://example.com/api/v3

在 GitHub API 上演示简单的权限测试

检测到 API 变更时 Slack 通知的截图

artifacts 中扫描结果的截图

示例报告:https://ngalog-gitlab.gitlab.io/-/openapi_security_scanner/-/jobs/966841401/artifacts/sample.html

局限性

  • 只能测试 GET 类型的端点
  • 对于某些 API 端点(如 /users/{user_id}/activities),每次调用时的响应都不同,因此检测此类 API 的变化没有意义

贡献

贡献正是让开源社区成为如此令人惊叹的学习、启发和创造之地的原因。您所做的任何贡献都 深受感谢。

  1. Fork 本项目
  2. 创建您的特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交您的更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启一个合并请求

许可证

基于 MIT 许可证发布。更多信息请参阅 LICENSE。

联系方式

Ron Chan - @ngalongc

项目链接:https://gitlab.com/ngalog-gitlab/openapi_security_scanner

下载工具