AdnaneKhan/gato-x

GitHub: AdnaneKhan/gato-x

一款专注于 GitHub Actions 流水线的静态分析与攻击工具,能在海量仓库中快速发现 CI/CD 错误配置与提权路径。

Stars: 526 | Forks: 46

![支持的 Python 版本](https://img.shields.io/badge/python-3.10+-blue.svg) [![代码风格:black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) # Gato (Github Attack TOolkit) - 极限版 Gato-X 是一款用于 GitHub Actions 流水线的 _快速_ 扫描与攻击工具。你可以使用它在海量规模下识别 Pwn Requests、Actions Injection、TOCTOU 漏洞以及 Self-Hosted Runner 接管,而这一切仅需一个单独的 API token。它还能分析跨仓库的 workflow 和可复用的 action。这使得它能够发现其他扫描器遗漏的漏洞,因为那些扫描器仅扫描单个仓库内的 workflow。 Gato-X 是一款面向操作人员的工具,旨在避免漏报。它的误报率会高于 CodeQL 等 SAST 工具,但 Gato-X 能为你提供快速确定某项发现是否为真阳性所需的一切信息! `search` 和 `enumerate` 模式可以在所有公共仓库上安全运行,你不会因此违反任何规则。 Gato-X 的攻击功能只能在获得授权的情况下使用,并且在使用 Gato-X 发现漏洞时,请务必遵循负责任的披露原则。 **Gato-X 是一款功能强大的工具,仅供符合道德规范的安全研究使用。** ## 文档 有关完整的文档,请访问 [Gato-X 文档](https://adnanekhan.github.io/gato-x/)站点。 ## 什么是 Gato-X? Gato-X 是一款攻击性安全工具,旨在识别可利用的 GitHub Actions 错误配置或权限提升路径。它侧重于以下几个关键领域: * 结合 workflow 文件静态分析与 workflow 运行日志分析来进行 Self-Hosted Runner 枚举 * 使用静态分析进行 Pwn Requests 和 Actions Injection 枚举 * 攻陷后的 secrets 枚举与窃取 * 使用 Runner-on-Runner (RoR) 技术攻击公共仓库的 Self-Hosted Runner * 使用 RoR 技术攻击私有仓库的 Self-Hosted Runner Gato-X 的目标受众是希望识别错误配置的红队成员、漏洞赏金猎人和安全工程师。 ## 功能亮点 ### 快速且全面的扫描 Gato-X 包含一个强大的 GitHub Actions 漏洞扫描引擎。使用单个 GitHub PAT,它能在 1-2 小时内扫描 3.5-4 *万*个仓库。主要功能包括: * 可达性分析 * 跨仓库的传递性 Workflow 与可复用 Action 分析 * “If 语句”的解析与模拟 * Gate Check(权限检查等)检测 * 针对变量的轻量级 Source-Sink 分析 * MCP 服务器 ## 快速入门 ### 在 GitHub 规模下搜索 GitHub Actions 漏洞 首先,创建一个具有 `repo` 范围的 GitHub PAT。将该 PAT 设置为 `GH_TOKEN` 环境变量。 接下来,使用搜索功能检索候选仓库列表: ``` gato-x s -sg -q 'count:75000 /(issue_comment|pull_request_target|issues:)/ file:.github/workflows/ lang:yaml' -oT checks.txt ``` 最后,在仓库列表上运行 Gato-X: ``` gato-x e -R checks.txt | tee gatox_output.txt ``` 所需时间取决于你的计算机和互联网连接速度。由于结果很长,请使用 `tee` 将其保存到文件中以便稍后查看。Gato-X 也支持 JSON 输出,但这旨在用于进一步的机器分析。 ### 执行 Self-Hosted Runner 接管 要执行公共仓库的 Self-Hosted Runner 接管攻击,Gato-X 需要一个具有以下范围的 PAT: `repo`、`workflow` 和 `gist`。 这应该是一个属于目标仓库 _贡献者_(即提交过错别字修复)账户的 PAT。 ``` gato-x a --runner-on-runner --target ORG/REPO --target-os [linux,osx,windows] --target-arch [arm,arm64,x64] ``` 维护者选择允许来自所有外部用户的 pull request 上的 workflow 无需批准即可运行的情况非常罕见,但这确实发生过。 接下来,Gato-X 将自动准备一个 C2 仓库并开始操作。随着攻击的进行,Gato-X 将监控每一个步骤,并在发生故障时在每个阶段尽可能优雅地退出。如果需要 workflow 批准,Gato-X 将在退出前等待一小段时间。 如果整个攻击链成功,Gato-X 将进入交互式提示符。这将在 Self-Hosted Runner 上执行 shell 命令。 如果目标 Runner 是非临时性的,请使用 `--keep-alive` 标志。这将保持 workflow 运行。GitHub Actions 允许 Self-Hosted Runner 上的 workflow 运行最多 **5 天**(截至撰写时,这可能会有所改变——以前是 30 天)。 ### 导出 Secrets 如果你拥有对仓库的写入权限的 PAT 以及 `repo` 和 `workflow` 范围,则可以使用单个命令导出该仓库可访问的所有 secrets: `gato-x attack --secrets -t targetOrg/targetRepo -d` 有关其他选项,例如指定 workflow 名称、分支名称等,请参阅文档。 ## 安装 Gato 支持 OS X 和 Linux,且至少需要 **Python 3.10**。 Gato-X 已发布在 PyPi 上,因此你可以直接使用 `pip install gato-x` 进行安装 要从源码安装该工具,只需克隆仓库并使用 `pip install` 即可。 我们建议在虚拟环境中执行此操作。 ``` git clone https://github.com/AdnaneKhan/gato-x cd gato-x python3 -m venv venv source venv/bin/activate pip install . ``` 或者你可以使用 pipx ``` git clone https://github.com/AdnaneKhan/gato-x cd gato-x pipx install . ``` 如果你需要进行即时修改,请使用 `pip install -e` 以可编辑模式安装。 ## 许可证 Gato-X 根据 [Apache 许可证,2.0 版本](LICENSE)授权。 ``` Gato-X: Copyright 2024, Adnan Khan Original Gato Implementation: Copyright 2023 Praetorian Security, Inc Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ```
标签:CI/CD安全, CISA项目, DevSecOps, Gato-X, GitHub Actions, GitHub安全, IP 地址批量处理, Llama, Pwn Requests, Python, Runner-on-Runner, TOCTOU, 上游代理, 云安全监控, 协议分析, 攻击工具包, 无后门, 权限提升, 结构化查询, 自动化安全, 自动笔记, 自托管Runner, 逆向工具, 静态分析