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

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

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

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

工具目录

分类

查看所有分类
Loading categories
of-CORS — 使用域名仿冒和浏览器 Service Worker 探测漏洞赏金目标内部网络的自动 CORS 配置错误发现工具。 | Kitploit
工具/GitHubGitHub/trufflesecurity/of-cors
侦察信息收集钓鱼攻击Web安全错误配置红队
GitHubtrufflesecurity/of-cors

of-CORS

使用域名仿冒和浏览器 Service Worker 探测漏洞赏金目标内部网络的自动 CORS 配置错误发现工具。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

of-CORS

of-CORS 是 Truffle Security 的工具套件,用于通过域名抢注发现和利用漏洞赏金目标内部网络上的 CORS 配置错误。

image image

更多信息请阅读 https://trufflesecurity.com/blog/of-CORS

它是如何工作的?

of-CORS 是一个基于 Django 和 Django Rest Framework 构建的 Python3 Web 应用程序。一旦设置并配置完成,of-CORS 会自动在任何访问该应用程序的受害者的浏览器中注册浏览器服务工作者。这些服务工作者向预配置的内部域名列表发送 HTTP 请求,目的是发现内部网络上的 CORS 配置错误。这些请求的结果(无论成功与否)随后通过 API 提交回 of-CORS 实例。

一旦服务工作者在受害者浏览器中注册成功,JavaScript 载荷会将浏览器重定向到 of-CORS 认为受害者原本试图访问的页面。

收集到的结果随后可以在 of-CORS 应用程序的简约仪表板中查看。

快速开始

以下步骤可用于在您自己的部署中设置 of-CORS。

由于设置 of-CORS 的复杂性(主要是 SSL/TLS、DNS 以及允许两者通配符请求的复杂性),我们在应用程序栈中使用了两个云提供商(Heroku 和 Cloudflare),并使用 Terraform 来自动化它们的配置。

购买相关域名

首先购买一个目标公司内部员工可能访问的域名。我们建议购买内部域名的拼写错误域名。我们发现复制粘贴错误是一个不错的入手点。

例如,如果您测试的公司在内部域中使用 uberinternal.com,您可以考虑购买 berinternal.com,以开始获取内部员工的浏览器流量。

image

获取 Cloudflare API 密钥

of-CORS 使用 Cloudflare 来接收和路由通配符 DNS 请求,以及终止 SSL/TLS 连接。

您需要一个活跃的 Cloudflare 账户才能使 DNS 与 of-CORS 正常工作。拥有 Cloudflare 账户后,您需要创建一个 API 密钥(可以在此仪表板上完成)。

API 密钥需要具有足够的权限来添加、删除和配置区域以及 DNS 记录。这可以通过在 API 令牌创建页面上选择以下权限来实现:

Cloudflare API Token Permissions

一旦创建了具有正确权限的 API 令牌,您就可以继续下一步。

获取 Heroku API 密钥

of-CORS 使用 Heroku 来简化应用程序的部署和托管。

您需要一个活跃的 Heroku 账户才能启动并运行 of-CORS 应用程序栈。拥有账户后,您需要安装 Heroku 命令行界面(CLI)工具。安装 CLI 后,您可以使用它通过以下命令启动一个经过身份验证的 CLI 会话:

root@kitploit:~
heroku login

然后,您可以通过运行以下命令确认 CLI 已成功验证:

root@kitploit:~
heroku whoami

关于授权 Heroku CLI 与 Terraform 一起使用的更多文档,请点击此处。

配置 of-CORS 以进行部署

现在基础设施所需的 API 密钥已设置好,我们可以继续进行 of-CORS 的部署配置。请查看以下示例 YAML 配置文件的内容,该文件可以在仓库中找到:

root@kitploit:~
terraform:
  # 您必须将此更改为一个唯一的字符串,并且是有效的 Heroku 应用程序名称
  heroku_app_name: best-of-cors
  # 填写您的 Cloudflare API 令牌
  cloudflare_api_token: this-is-my-api-token

hosts:
  # 这可以是一个任意字符串,但必须作为 hosts 的直接子级保持唯一
  testing:
    host_domain: 127.0.0.1:8080
    redirect_domain: google.com
    targets:
      - enable-cors.org
      - example.com

您需要为此格式创建一个新的配置 YAML 文件用于部署。

在 terraform 部分下,您需要将 heroku_app_name 设置为一个符合 Heroku 规范的应用程序名称,并且该名称在您的账户中是唯一的。您还需要将上一节中生成的 Cloudflare API 密钥添加到 cloudflare_api_token 指令下。

hosts 部分是我们定义预期 of-CORS 接收流量的域名以及当 Web 访问者到来时应该采取什么行动的地方。假设我们有一个目标公司,我们知道他们有两个内部域名(myinternalcorp1.com 和 myinternalcorp2.com)。我们购买了域名 yinternalcorp1.com,期望员工会意外访问它。在这种情况下,我们希望按如下方式配置 hosts:

root@kitploit:~
hosts:
  testing_1:
    host_domain: yinternalcorp1.com
    redirect_domain: myinternalcorp1.com
    targets:
      - myinternalcorp1.com
      - myinternalcorp2.com

这里的 host_domain 是您预期接收流量的域名(即购买的域名)。redirect_domain 定义了受害者应该在载荷启动后被重定向到的域名。targets 指定了当受害者访问 of-CORS 时应针对其启动载荷的域名。

假设我们还购买了 yinternalcorp2.com,并希望配置 of-CORS 在其被访问时发起攻击。那么 hosts 部分可以更新为以下内容:

root@kitploit:~
hosts:
  testing_1:
    host_domain: yinternalcorp1.com
    redirect_domain: myinternalcorp1.com
    targets:
      - myinternalcorp1.com
      - myinternalcorp2.com
  testing_2:
    host_domain: yinternalcorp2.com
    redirect_domain: myinternalcorp2.com
    targets:
      - myinternalcorp1.com
      - myinternalcorp2.com

现在,如果受害者意外访问了 yinternalcorp1.com 或 yinternalcorp2.com,将启动针对 myinternalcorp1.com 和 myinternalcorp2.com 的 CORS 配置错误枚举载荷,并且受害者浏览器随后将被重定向到正确的域名。

Docker 设置

使用 Docker 选项时,您无需安装 Terraform、Heroku、Python。只需在设置好 yaml 文件正确路径后运行以下命令:

root@kitploit:~
docker run -v $PWD/config.yml:/config.yml -it --rm trufflesecurity/of-cors

Docker 之外的设置

安装 Terraform

部署 of-CORS 依赖 Terraform。您可以按照此处的说明安装 Terraform。安装后,terraform 二进制文件应位于系统 PATH 中。

安装 Python3

部署 of-CORS 也依赖 Python3。请确保已安装并位于系统 PATH 中。

部署 of-CORS

在完成云提供商的认证并准备好 of-CORS 配置文件后,我们可以继续进行部署。

首先,我们需要初始化 Terraform。此命令应从源代码根目录运行:

root@kitploit:~
cd terraform && terraform init && cd ../

假设我们的配置文件位于 /tmp/of_cors_config.yml。然后我们将运行以下命令来启动并运行所有 of-CORS 基础设施(请注意,此命令假设在 bash 中运行)。运行此命令可能需要 5-10 分钟,请耐心等待!

另请注意,对于非常大的枚举,Heroku 通常会出现资源耗尽的情况。这是一个已知问题,我们欢迎您帮助修复。可能的未来修复包括:允许您自行上传枚举结果、增加 Heroku Dyno 大小,或切换到 Sublist3r 或其他枚举工具。

root@kitploit:~
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
CONFIG_FILE=/tmp/of_cors_config.yml make deploy_and_configure

请注意 - 在 Heroku 基础设施启动并立即访问其中的控制台时,可能会发生竞争条件。如果运行最后一条 make deploy_and_configure 命令失败,请等待几分钟后重试。

deploy_and_configure 命令完成运行后,您将拥有:

  • Cloudflare 中配置的 DNS 记录指向您的 Heroku 应用程序
  • Heroku 配置为接收来自所有相关通配符记录的流量
  • of-CORS 中填充了候选的内部 CORS 配置错误域名

委派 DNS 权限

要使 of-CORS 部署准备好接收流量,最后需要做的是将您购买的域名配置为使用 Cloudflare 作为其权威 DNS 服务器。Cloudflare 有一个详细的指南请点击此处。

确认一切设置正确

请按照以下步骤确认您的软件已正确运行。在本节中,我们将使用在域名 hackersofhollywood.com 下设置的 of-CORS 实例为例。

首先检查我们域名的 SOA 记录是否指向 Cloudflare:

root@kitploit:~
dig soa <domain>

如下所示,hackersofhollywood.com 的 SOA 记录正确指向了 Cloudflare 的名称服务器:

Hackers Of Hollywood SOA records

然后我们检查 Cloudflare 账户,确认已为 hackersofhollywood.com 和 *.hackersofhollywood.com 设置了 DNS 记录,且 CNAME 内容指向 Heroku 域名。这可以通过 Cloudflare Web UI 的 DNS 部分完成:

Cloudflare DNS Check

下一步是确认 Heroku 已配置为通过这两个 CNAME 记录接收流量。这可以通过 Heroku Web UI 的 Settings -> Domains 完成:

Heroku DNS Check

果然,我们看到 Heroku 中配置了两个域名及其相应的 DNS 目标,并且这些目标正确地反映在 Cloudflare 的 CNAME 记录中。

然后我们可以运行以下命令,打开一个经过身份验证的浏览器会话,查看 of-CORS 的结果查看页面:

root@kitploit:~
CONFIG_FILE=<path_to_config_file> make open_heroku_console

这将在您的浏览器中显示一个空仪表板:

Empty of-CORS Dashboard

最后,我们可以测试 CORS 配置错误探测是否成功启动。在浏览器中打开其中一个配置的基础域名(在我们的示例中为 https://hackersofhollywood.com),并确认页面在几秒后重定向:

Loading Page

现在导航回仪表板页面,将 Success 过滤器更改为过滤 Unknown,然后点击 Submit Query 按钮。您应该会看到大量结果填充:

Full Dashboard

您的陷阱已设置完毕!现在只需放松休息,等待您的受害者偶然发现这个诱人的小域名。

查看结果

以下命令可用于在经身份验证的浏览器会话中查看和查询所有结果:

root@kitploit:~
CONFIG_FILE=<path_to_config_file> make open_heroku_console

添加和删除目标

of-CORS 配置文件旨在支持灵活地添加和删除攻击发起的域名。只需更新配置文件中 hosts 部分的内容,然后重新运行配置脚本:

root@kitploit:~
source venv/bin/activate
CONFIG_FILE=/tmp/of_cors_config.yml make deploy_and_configure
下载工具