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

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

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

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

工具目录

分类

查看所有分类
Loading categories
git-all-secrets — 一个通过利用多个开源Git搜索工具来捕获所有Git秘密的工具 | Kitploit
工具/GitHubGitHub/anshumanbh/git-all-secrets
代码分析信息收集DevSecOps秘密检测
GitHubanshumanbh/git-all-secrets

git-all-secrets

一个通过利用多个开源Git搜索工具来捕获所有Git秘密的工具

查看仓库
1.1k1947年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

git-all-secrets

关于

git-all-secrets 是一款能够执行以下操作的工具:

  • 克隆某个组织的多个公共/私有 GitHub 仓库并进行扫描,
  • 克隆组织中某个用户的多个公共/私有 GitHub 仓库并进行扫描,
  • 克隆某个组织的单个公共/私有仓库并进行扫描,
  • 克隆某个用户的单个公共/私有仓库并进行扫描,
  • 克隆某个用户的单个公共/秘密 Gist 并进行扫描,
  • 克隆组织中某个团队的所有仓库并进行扫描,
  • 以上全部功能可以一起完成!没错!只需提供组织名称,即可获取该组织的所有秘密。如果你还想获取组织中某个团队的秘密,只需在组织名称旁注明团队名称。
  • 同时支持克隆和扫描 GitHub Enterprise 仓库及 Gist。

扫描由多个开源工具完成:

  • truffleHog - 扫描提交记录中的高熵字符串和用户提供的正则表达式,
  • repo-supervisor - 扫描 .js 和 .json 文件中的高熵字符串

注意 - 如果需要,未来可以添加更多此类工具! 注意 - 可以通过指定 toolName 标志来使用所有工具或仅使用其中一种进行扫描。

如果使用所有工具进行扫描,则工具的最终输出将合并所有工具的输出文件,生成一个统一的输出文件。

快速开始

运行 git-all-secrets 最简单的方式是通过 Docker,我强烈建议你先安装 Docker。安装好 Docker 后:

  • 输入 docker run --rm -it abhartiya/tools_gitallsecrets --help 了解它可以接受的不同标志。
  • 确定要扫描的内容后,输入类似 docker run -it abhartiya/tools_gitallsecrets -token=<> -org=<> 的命令。你也可以通过 docker run -it abhartiya/tools_gitallsecrets -token=<> -org=<> -toolName=<> 指定使用特定工具进行扫描。可选值为 thog 和 repo-supervisor。
  • 如果你想在 truffleHog 中使用默认正则表达式以及高熵设置,请提供 thogEntropy 标志,例如:docker run -it abhartiya/tools_gitallsecrets -token=<> -org=<> -toolName=thog -thogEntropy。
  • 容器运行结束后,通过 docker ps -a 获取容器 ID。
  • 获取容器 ID 后,通过 docker cp <container-id>:/root/results.txt . 将结果文件从容器复制到宿主机。

标志/选项

  • -token = GitHub 个人访问令牌。我们需要这个,因为未经身份验证的 GitHub API 请求很快就会遇到速率限制!

  • -org = 要扫描的组织名称。这将扫描该组织中的所有公共仓库 + 组织中所有用户的仓库和 Gist。如果你使用的令牌属于该组织的成员,它还会克隆并扫描该用户拥有的所有秘密 Gist,以及该用户有权访问的组织中的私有仓库。但不会克隆和扫描该组织内属于该用户的私有仓库。要扫描用户的私有仓库,请将 user 标志与 scanPrivateReposOnly 标志一起使用,并挂载 SSH 密钥的卷。

  • -user = 要扫描的用户名称。这将扫描该用户的所有仓库和 Gist。如果提供的令牌是该用户的令牌,则秘密 Gist 也会被克隆和扫描。但仅会克隆和扫描公共仓库。要扫描该用户的私有仓库,请将 scanPrivateReposOnly 标志与 user 标志一起使用,并挂载 SSH 密钥的卷。

  • -repoURL = 要扫描的仓库的 HTTPS URL。这将只扫描此仓库。对于公共仓库,只需要提供仓库的 https URL 即可。但是,如果你想扫描私有仓库,则需要提供 ssh URL,并挂载 SSH 密钥的卷以及 scanPrivateReposOnly 标志。

  • -gistURL = 要扫描的 Gist 的 HTTPS URL。这将只扫描此 Gist。只要你有 URL,就不存在公共或秘密 Gist 的概念。即使你有秘密 Gist,如果有人知道其 HTTPS URL,他们也可以访问它。

  • -output = 存储所有结果的文件名。默认为 results.txt。

  • -cloneForks = 可选的布尔标志,用于克隆组织和用户仓库的 fork。默认设置为 0,即不克隆 fork。如果要克隆 fork,需要将此值设置为 1。或者,只需在命令中加上 -cloneForks 以及其他标志。

注意

  • token 标志是必须的。不能为空。

  • org、user、repoURL 和 gistURL 不能同时为空。你只需要提供其中一个值。如果你同时提供多个值,优先级顺序为 org > user > repoURL > gistURL。例如,如果同时提供 -org=secretorg123 和 -user=secretuser1 标志,工具会报错,表示不需要 org 值之外的额外参数。如果只想针对特定用户运行,只需提供 user 标志,不要提供 org 标志。

  • 当指定 scanPrivateReposOnly 标志时:

扫描私有仓库

扫描私有仓库最安全的方式是使用 SSH URL 克隆。要实现这一点,需要放置一个已添加到 GitHub 用户的适当 SSH 密钥。GitHub 提供了有用的文档用于配置你的账户。确保此密钥没有设置密码短语。获得 SSH 密钥后,只需通过卷将其挂载到 Docker 容器中。只需输入以下命令即可:

docker run -it -v ~/.ssh/id_rsa_personal:/root/.ssh/id_rsa abhartiya/tools_gitallsecrets -token=<> -user=<> -scanPrivateReposOnly

或

docker run -it -v ~/.ssh/id_rsa_personal:/root/.ssh/id_rsa abhartiya/tools_gitallsecrets -token=<> -repoURL=<> -scanPrivateReposOnly

这里,我将本地的个人 SSH 密钥 id_rsa_personal 映射到容器内的 /root/.ssh/id_rsa,以便 git-all-secrets 可以通过 ssh 克隆仓库,并使用容器内 /root/.ssh/id_rsa 存储的 SSH 密钥。这样,你实际上没有在容器中存储任何敏感信息。你只是使用了本地机器上的一个文件。一旦容器被销毁,它就不再有权访问此密钥。

扫描组织团队

GitHub API 限制了私有仓库报告的情况。如果尝试使用非管理员用户扫描组织,你可能需要提供为用户提供仓库访问权限的团队。为此,请使用 teamName 标志以及 org 标志。示例如下:

docker run --it -v ~/.ssh/id_rsa_personal:/root/.ssh/id_rsa abhartiya/tools_gitallsecrets -token=<> -org=<> -teamName <>

扫描 GitHub Enterprise

git-all-secrets 现在也支持扫描 GitHub Enterprise。如果你有托管在 VPN 或类似环境中的自有 GitHub Enterprise,请确保已连接到 VPN 或正确的网络,以便能够访问 GitHub Enterprise 仓库。enterpriseURL 是扫描 GitHub Enterprise 仓库所需的参数。以下是一些示例:

示例 1:

docker run -it -v ~/.ssh/id_rsa_gitenterprise:/root/.ssh/id_rsa -token <token> -enterpriseURL https://github.<org>.com/api/v3 -repoURL https://github.<org>.com/<user>/<repo>.git

这里,我将 GitHub Enterprise SSH 密钥挂载到容器,然后是个人访问令牌、将接收请求的企业 URL 以及要扫描的仓库。

示例 2:

docker run -it -v ~/.ssh/id_rsa_gitenterprise:/root/.ssh/id_rsa -token <token> -enterpriseURL https://github.<org>.com/api/v3 -repoURL https://github.<org>.com/<user>/<repo>.git -toolName thog -thogEntropy

以上命令仅使用 truffleHog 及熵设置对仓库进行扫描。

示例 3:

docker run -it -v ~/.ssh/id_rsa_gitenterprise:/root/.ssh/id_rsa -token <token> -enterpriseURL https://github.<org>.com/api/v3 -user <username> -scanPrivateReposOnly

以上命令使用所有工具(repo-supervisor 和 thog)仅扫描提供令牌的用户的私有仓库,但不包含 truffleHog 的熵设置。

TODO

  • 测试团队扫描功能
  • 修复 Goroutine 错误 - 希望已完成!
  • 支持扫描 GitHub Enterprise - 已完成!
  • 支持克隆和扫描组织的私有仓库 - 已完成!
  • 用 truffleHog 中的新正则表达式功能替换 gitsecrets - 已完成!
  • 添加对通过 SSH 密钥扫描用户私有仓库的支持 - 已完成!
  • 添加避免扫描 fork 的标志 - 已完成!

详细信息

功能特性

  • 你可以在 rules.json 文件中添加自己的正则表达式,并在执行 docker run 时使用 -v $(pwd)/rules.json:/root/truffleHog/rules.json 参数包含该文件。
  • 该工具会查找一些默认的正则表达式。如果需要,也可以用于查找高熵字符串。这一切都通过 truffleHog 工具完成。
  • 它可以通过 repo-supervisor 工具查找 .js 和 .json 文件中的高熵字符串。
  • 它会扫描用户的 Gist,这是大多数工具不会做的。
  • 如果有新的好工具,可以很容易地集成到 git-all-secrets 中。
  • 它专为与其他工具和框架集成而构建。它接受一些输入参数,并生成结果输出文件。非常简单!
  • 它也支持扫描 GitHub Enterprise 的组织/用户/仓库/Gist。
  • 大多数现有工具都是为扫描单个仓库而设计的。如果你想对多个仓库进行循环扫描,就需要在 shell 脚本中编写自己的 for 循环。git-all-secrets 可以帮助你一次性扫描多个仓库。
  • 你现在可以将两个工具的输出合并为一个 JSON 文件,该文件可用于其他自动化工具/框架。

动机

我查看了大量可用于在 GitHub 仓库中查找秘密的开源工具。我认为一些比较好的顶级工具有:gitrob、truffleHog 和 git-secrets。

Gitrob 是一个独立工具,由于拥有自己的数据库和 UI 来查看所有发现的秘密,因此很难与其他工具集成。它还会产生大量误报,比 truffleHog 更多。而且,它并没有真正高亮显示发现的秘密。它只查看文件及其扩展名,而不是实际内容。因此,虽然 Gitrob 是一个很好的入门工具,但我建议每隔一段时间运行一次,以了解攻击面并查看是否发生了变化。

然后是 truffleHog,它通过查看 Shannon 熵来查找文件实际内容中的秘密,并将输出打印到屏幕上。它接受仓库 URL 或仓库目录作为参数。这是一个不错的工具,尽管也有误报。其他一些缺点包括:

  • 无法递归扫描包含多个仓库的目录。
  • 我们无法使用 truffleHog 识别符合特定模式但熵不够高的秘密,即无法使其查找我们知道但熵不足以被视为秘密的秘密。
  • 它将输出打印到屏幕上,因此对于自动化来说不太实用。

最后是 git-secrets,它可以标记诸如 AWS 秘密之类的内容。最好的部分是,你还可以添加自己的正则表达式来查找你知道应该查找的秘密。一个主要缺点是它不能像 truffleHog 那样很好地查找高熵字符串。而且,它只能扫描作为仓库的特定目录,因此无法从仓库目录递归扫描。

因此,如你所见,虽然有一些不错的工具,但它们需要以某种方式进行组合。还需要递归扫描多个仓库,而不仅仅是一个。那么 Gist 呢?有组织和用户,还有组织和用户的仓库,以及用户的 Gist。所有这些都应该被扫描。并且扫描方式应可自动化且易于被其他工具/框架使用。

变更日志

  • 2019年2月9日 - 添加了 blacklist 标志,以在扫描时跳过某些仓库名称。感谢 @sjqnn 的 PR。构建并推送了新的 Docker 镜像。祝好运!

  • 2018年7月31日 - 使用 pip 简化了 truffleHog 的安装。@mhmdiaa 修复了 truffleHog 输出函数中的一个错误,该错误导致无法正确合并和排序。更新了正则表达式文件,包含 password 等内容。构建并推送了新的 Docker 镜像。祝好运!

  • 2018年7月15日 - 更新了 repo-supervisor 的分支,因为上游有了一些变化。使用最新的 Trufflehog 重建了新的 Docker 镜像。提供了包含 Trufflehog 用于查找秘密的所有正则表达式的 rules.json 文件。添加了使用 -mergeOutput 标志合并两个工具输出(JSON 格式)的功能。通过使用多阶段构建和 dep 管理依赖,大幅减小了 Docker 镜像大小。非常感谢 @mhmdiaa 的所有贡献!

  • 2017年12月12日 - 对于某些大型仓库,truffleHog 会失败并退出。但我们不想就此停止。我们想通知用户扫描失败,并继续扫描其他仓库。此功能已在最新的 Docker 镜像中实现。

  • 2017年12月11日 - 移除了 gitsecrets,因为 truffleHog 现在支持正则表达式功能。只需在 rules.json 文件中添加你的正则表达式并重建 Docker 镜像,即可获得之前 gitsecrets 提供的功能,因此不再需要 gitsecrets。我还添加了对扫描 GitHub Enterprise 仓库和 Gist 的支持。@high-stakes 通过限制线程数量提交了一个(有望)修复 Goroutine 错误的 PR。最后,还添加了对扫描组织私有仓库的支持。

  • 2017年12月8日 - 移除了我自己的 truffleHog 分支。现在使用上游版本以及 truffleHog 的新正则表达式功能和熵模式。我相信,一旦一些问题得到修复,我们可以仅用 truffleHog 替换 gitsecrets 和 repo-supervisor。

  • 2017年12月7日 - 更新了文档,补充了关于不同标志的更多细节和说明。

  • 2017年12月5日 - 集成了通过 SSH 密钥扫描私有仓库的支持。这是长期以来一直要求的功能,现在终于可以实现。还更改了 Docker 镜像标签方案。从现在起,最新镜像将带有 latest 标签。而之前的所有版本将用数字进行标记。这一切都离不开 SimpliSafe 团队,特别是 Matthew Cox(https://github.com/matthew-cox)。所以,Matt,向你大声致谢!

  • 2017年10月14日 - 构建并推送了新镜像 abhartiya/tools_gitallsecrets:v6。这个新镜像包含了新版本的 git-secrets 和 ,即我将一些上游更改合并到了我的分支中,同时保留了我分支中已有的额外更改。新镜像使用了这些更改,因此一切都是最新和最棒的!* 10/14/17 - 构建并推送了新镜像 abhartiya/tools_gitallsecrets:v5。此镜像修复了一个非常愚蠢且烦人的错误,该错误可能导致 repo supervisor 失败。Dockerfile 中读取环境值的方式发生了变化,导致 repo supervisor 不知道要使用哪个 node 路径。Node 地狱!

捐赠

如果你想表达支持,我的 BTC 钱包地址是 1PtMhXWCcMZCitcDfaEBe7jnV9sjKoNvq7。

下载工具
  • -orgOnly = 可选的布尔标志,用于跳过扫描属于组织的用户仓库。默认设置为 0,即常规行为。如果不想扫描用户仓库,只想扫描组织仓库,需要将此值设置为 1。或者,只需在命令中加上 -orgOnly 以及其他标志。

  • -toolName = 可选的字符串标志,用于指定使用哪个工具进行扫描。默认设置为 all,即使用 thog 和 repo-supervisor 进行扫描。可选值为 thog 或 repo-supervisor。

  • -teamName = 组织团队的名称,该团队有权访问私有仓库进行扫描。此标志尚未经过全面测试,因此我无法保证其功能。

  • -scanPrivateReposOnly = 可选的布尔标志,用于指定是否要扫描用户的私有仓库。设置此标志将不扫描用户的公共仓库。并且,你需要通过将 SSH 密钥挂载到容器中来提供。此外,此标志仅与 user、repoURL 或 org 标志一起使用。

    当 org 标志与 scanPrivateReposOnly 标志一起使用,且未设置 orgOnly 标志时,它将扫描该组织中用户(其令牌已提供)有权访问的公共和私有仓库。然后,它将仅扫描该用户(其令牌已提供)的私有仓库。最后,它将扫描该用户(其令牌已提供)的所有公共和秘密 Gist。简而言之,scanPrivateReposOnly 标志仅真正影响 user 和 repoURL 标志。

  • -enterpriseURL = 可选标志,用于提供企业版 GitHub 的 URL,如果你希望扫描企业仓库。它应该是类似 https://github.org.com/api/v3 的格式,并需要将 SSH 密钥挂载到容器中。请参考下面的 扫描 GitHub Enterprise。

  • -threads = 默认值为 10。如果你的系统性能不够,可以通过此标志限制线程数量。大多数情况下,保持为 10 即可。

  • -thogEntropy = 可选标志,用于指示是否要从 truffleHog 获取基于高熵的秘密。truffleHog 的高熵秘密会产生大量噪音,如果你不需要这些噪音,并且你正在大型组织上运行 git-all-secrets,我建议不要提及此标志。默认设置为 False,这意味着 truffleHog 将仅根据 rules.json 文件中的正则表达式产生结果。如果你正在扫描一个规模相当小的组织(仓库数量有限)或一个拥有少量仓库的用户,使用此标志更有意义。

  • -mergeOutput = 可选标志,用于合并和去重所使用的工具(目前是 truffleHog 和 repo-supervisor)的输出。默认值为 False。

  • -blacklist = 不应扫描的仓库名称,以逗号分隔提供。

    • 必须使用 -v 标志将包含私有 SSH 密钥的卷挂载到 Docker 容器中。
    • 只要扫描私有仓库,就应该使用此标志。使用此标志时,请使用 ssh URL,而不是 https URL。
    • 请确保所使用的令牌确实属于你要扫描其私有仓库/Gist 的用户,否则将出错。
    • 你将要使用的 SSH 密钥不应设置密码短语,否则该工具将无法自动工作。

    请参考下面的 扫描私有仓库。

  • 当指定 teamName 时,确保所提供的 token 属于该团队的成员。否则可能产生意外结果。请参考下面的 扫描组织团队。

  • 当指定 enterpriseURL 标志时,即使你提供了仓库的 https URL,它也会始终使用 SSH URL。所有企业版克隆/扫描都通过 ssh URL 进行,而不是 https URL。

  • 如上所述,确保用于扫描 SSH URL 的 SSH 密钥没有设置任何密码短语。

  • repo-supervisor
  • 9/29/17 - 构建并推送了带有 orgOnly 标志的新镜像 - abhartiya/tools_gitallsecrets:v4

  • 8/22/17 - 由 kciredor 添加了 -orgOnly 切换:分析指定的组织仓库并跳过用户仓库。

  • 6/26/17 - 移除了 repo-supevisor 中在未发现秘密时打印错误的一些输出。不必要的输出!构建并推送了新镜像 - abhartiya/tools_gitallsecrets:v3

  • 6/25/17 - 添加了标志 toolName 以指定用于扫描的工具。构建并推送了新镜像 - abhartiya/tools_gitallsecrets:v2

  • 6/14/17 - 添加了 repo-supervisor 作为扫描工具,同时更新并添加了版本号到 Docker 镜像 - abhartiya/tools_gitallsecrets:v1

  • 6/14/17 - 添加了标志 cloneForks 以避免克隆组织及用户仓库的分叉。默认情况下为 false。如果您希望扫描分叉,只需将值设置为 1,即 -cloneForks=1