Git-all-secret


本章节内容主要是介绍工具git-all-secret,用于搜索github仓库。但笔者在测试的时候docker环境中的工具无法解析dns,而且不能挂起docker进入到bash,使用起来较为困难。

文章内容主要摘自某红队系列丛书,将市面上现在流传的 redteam 系列书籍进行一个学习记录。

Git-all-secret功能描述

  • 克隆多个某组织的 public/private 有仓库并扫描;
  • 克隆多个某组织用户的 public/private 仓库扫描;
  • 克隆一个某组织的 public/private 仓库并扫描;
  • 克隆一个某用户的 public/private 仓库并扫描;
  • 克隆一个某用户的 public/secret gist (代码片段管理服务)并扫描;
  • 克隆一个某组织团队的仓库并扫描;
  • 克隆和扫描Github企业仓库还有gists;

扫描过程需要借助的开源工具

  • truffleHog - 扫描高熵值字符串和用户提供的正则表达式;
  • repo-supervisor扫描在js和json文件中的高熵值字符串;

所有工具中的输出文件最终会合并为一个输出文件

新手入门使用

下载docker

运行Git-all-secrets最简便的方法是使用Docker

获取Docker:apt install docker docker-compose

下载Git-all-secrets

git clone https://github.com/anshumanbh/git-all-secrets.git

运行git-all-secrets

  • 运行 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=<> 选择待定工具,toolName=thog or repo-supervisor

  • 运行 docker run -it abhartiya/tools_gitallsecrets -token=<> -org=<> -toolName=thog -thogEntropy truffleHog 的默认正则和高熵设置

  • 当容器完成运行,输入 docker ps -a 返回容器ID

  • 获得容器ID以后,输入 docker cp :/root/results.txt 来获取结果文件

标志/选项

  • -token= Github访问令牌。如果未授权请求Github API会被限速
  • -org= 组织扫描。他会扫描组织中的所有公共仓库,以及用户的gists。如果你使用的是该组织用户的token,他还会克隆并扫描该用户的所有私密gitsts,以及所有该用户有权限访问的私有仓库
  • -user= 用户扫描。他会扫描当前用户的所有仓库和gists,扫描私有仓库请使用scanPrivateReposOnly标志,以及SSHkey
  • -repoURL= httpsURL 仓库扫描。他只会扫描当前仓库。如果你希望扫描私有仓库,请提供SSH URL和SSHkey,以及scanPrivateReposOnly标志
  • -gistURL= httpsURL Gist扫描。他只会扫描Gist。如果你知道私密gist的httpsURL,他也能够访问
  • -output= 输出结果文件,默认是result.txt
  • -cloneForks= 这是一个布尔标志。默认设置为0,不克隆forks,如果设置为1,他就会克隆forks
  • -orgOnly= 这也是一个布尔标志。默认设置为0。如果只扫描组织仓库而不扫描用户的仓库,请将它设置为1
  • -toolName= 这是规范扫描工具的标志。默认他使用all,thog和repo-supervisor
  • -scanPrivateReposOnly= 这是规范是否扫描用户私有仓库的标志。他只能工作在user、repoURL、org标志
  • -enterpriseURL= 企业GithubURL的标志,如果你希望扫描企业仓库,就选这个
  • -threads= 默认线程10
  • -thogEntropy= 开启高熵提取,默认是false。设置为true会有大量的垃圾信息,在比较大的目标上,不建议开启。如果设置为false,则意味着truffleHog只会提取基于rules.json文件中的正则结果
  • -blacklist= 不需要扫描的仓库名称,以逗号分割

注意事项

  • Token选项不能为空

  • Org user repoURL gistURL 不能都设置为空,至少需要提供一个选项。如果你提供了多个选项,他的顺序是org>user>repoURL>gistURL。如果你只需要运行在特定用户上,那就不需要提供org选项

  • 当定义scanPrivateReposOnly标志时:

    ​ 1.必须将包含的SSH-key的卷载入到Docker容器中,使用 -v 选项

    ​ 2.他应该在扫描私有仓库时使用,使用SSH url,而不是https url

    ​ 3.确保使用了私有仓库/gist的用户token,否则会报错

    ​ 4.如果你想在没有手动干扰的情况下运行,请不要设置SSH key的密钥密码

  • 当定义teamName标志的时候,提供一个团队成 员的token非常重要,否则可能会出现意外结果

  • 当定义enterpriseURL标志的时候,即使你提供了http URL,他也始终会考虑ssh key。所有企业克隆/扫描都是通过ssh url,而不是https url

综上,请确保使用了SSH key,并且没有设置密钥密码

扫描

扫描私有仓库

扫描私有仓库最稳妥的方法是使用SSH URL克隆。实现这个你需要将SSH key添加到Github用户。

用户配置参考:https://help.github.com/en/articles/adding-a-new-ssh-key-to-your-github-account

确保这个key没有密码设置。有了SSH key以后,将它挂载到Docker容器中,运行如下命令:

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

OR

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

将本地的personal SSH-key存储到Docker内部容器 /root/.ssh/id_rsa,git-all-secrets会试图通过存储在 /root/.ssh/id_rsa 的ssh key来克隆仓库

扫描组织团队

Github API限制了私有仓库环境。尝试使用非管理员用户扫描组织,需要给用户添加仓库的访问权限。如果非要扫描组织团队,可以运行:

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

扫描企业Github

git-all-secrets支持扫描企业仓库,使用enterpriseURL选项:

实例1

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

实例2

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

实例3

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

特性

可以添加自己的正则表达式,在docker run的时候使用-v $(pwd)/rules.json:/root/truffleHog/rules.json。可以使用默认正则表达式,如果需要,也可以用truffleHog提供的高熵字符串。可以通过repo-supervisor工具搜索.js和.json中的高熵字符串。可以搜索用户的Gist,大多数工具都没这个功能。有新工具可以很容易地集成到git-all-secrets。支持扫描企业Github orgs/uesrs/repos/gists。大多数工具只扫描单个仓库,git-all-secrets可以一次扫描多个。


文章作者: f1veseven
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 f1veseven !
评论
  目录