AdnaneKhan/gato-x

GitHub: AdnaneKhan/gato-x

一款面向 GitHub Actions 的进攻性安全工具,通过静态分析与 Runner-on-Runner 攻击识别配置错误与权限提升路径。

Stars: 506 | Forks: 46

![支持的 Python 版本](https://img.shields.io/badge/python-3.10+-blue.svg) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) # Gato (Github Attack TOolkit) - Extreme Edition Gato-X 是一个 _快速_ 的扫描和攻击 GitHub Actions 流水线工具。你可以用它来识别 Pwn 请求、操作注入、TOCTOU 漏洞以及大规模的自托管 Runner 接管。它只使用一个 API 令牌就能分析跨仓库工作流和可复用操作。这暴露了其他扫描器遗漏的漏洞,因为它们只扫描单个仓库内的工作流。 Gato-X 是一个以操作者为中心的工具,专注于避免误报。它的误报率会比 CodeQL 等 SAST 工具更高,但 Gato-X 会提供你需要的一切,以便快速判断某件事是真是假! `search` 和 `enumerate` 模式可以在所有公共仓库中安全运行, 并且这样做不会违反任何规则。 Gato-X 的攻击功能应在获得授权后使用,并确保在发现漏洞时遵循负责任披露原则。 **Gato-X 是一个强大的工具,只能用于合法的安全研究目的。** ## 文档 有关完整文档,请访问 [Gato-X 文档](https://adnanekhan.github.io/gato-x/) 网站。 ## 什么是 Gato-X? Gato-X 是一个用于识别可利用的 GitHub Actions 配置错误或权限提升路径的进攻性安全工具。它重点关注以下几个领域: * 使用工作流文件的静态分析以及运行日志分析来枚举自托管 Runner * 使用静态分析进行 Pwn 请求和操作注入枚举 * 泄露后秘密枚举与提取 * 使用 Runner-on-Runner (RoR) 技术攻击公共仓库的自托管 Runner * 使用 RoR 技术攻击私有仓库的自托管 Runner Gato-X 的目标受众是红队成员、漏洞赏金猎人以及希望识别配置错误的安全工程师。 ## 功能亮点 ### 快速且全面的扫描 Gato-X 包含一个用于 GitHub Actions 漏洞的强大扫描引擎。它能够使用单个 GitHub PAT 在 1-2 小时内扫描 35-40 *千* 个仓库。关键能力包括: * 可达性分析 * 跨仓库传递性工作流和可复用操作分析 * “If 语句”的解析与模拟 * 门控检查检测(权限检查等) * 变量的轻量级源-汇分析 * MCP 服务器 ## 快速开始 ### 在 GitHub 规模上搜索 GitHub Actions 漏洞 首先,创建一个具有 `repo` 范围的 GitHub 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 输出,但这主要用于进一步的机器分析。 ### 执行自托管 Runner 接管 要对公共仓库执行自托管 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] ``` 维护者极少会选择允许来自所有外部用户的拉取请求工作流未经批准就运行, 但这种情况确实发生过。 接下来,Gato-X 会自动准备一个 C2 仓库并开始操作。Gato-X 将监控每一步, 随着攻击继续,以尽可能优雅的方式退出。如果需要工作流批准,Gato-X 将等待一小段时间后退出。 如果整个链成功,Gato-X 将切换到交互式提示。这将在自托管 Runner 上执行 shell 命令。 如果目标 Runner 不是瞬态的,请使用 `--keep-alive` 标志。这将保持工作流运行。GitHub Actions 允许自托管 Runner 上的工作流运行最长可达 **5 天**(截至撰写本文时,这可能会改变 - 原来是 30 天)。 ### 转储密钥 如果你拥有一个具有仓库写入权限以及 `repo` 和 `workflow` 作用域的 PAT,你可以使用单个命令转储该仓库可访问的所有密钥: `gato-x attack --secrets -t targetOrg/targetRepo -d` 请参阅文档以了解其他选项,例如指定工作流名称、分支名称等。 ## 安装 Gato 支持至少 **Python 3.10** 的 OS X 和 Linux。 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` 以可编辑模式安装。 ## 贡献 欢迎贡献!请在开发新功能之前 [review](https://adnanekhan.github.io/gato-x/contribution-guide/contributions/) 设计方法论! 此外,如果你对该工具提出重大更改,请打开一个 issue 以开始讨论修改动机。 ## 许可证 Gato-X 根据 [Apache License, Version 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. ```
标签:Black 代码风格, CI/CD 安全, CSV导出, GitHub Actions, Pwn Request, Python 3.10+, Runner 劫持, SEO: GitHub 攻击, SEO: 开源渗透测试, SEO: 静态分析工具, StruQ, TOCTOU, 云安全监控, 协议分析, 可重用 Action, 安全扫描, 工作流漏洞, 攻击工具包, 数据投毒防御, 时序注入, 权限提升, 注入攻击, 漏洞披露, 秘密枚举, 网络安全审计, 自动笔记, 自托管 Runner, 跨仓库工作流, 逆向工具, 配置错误, 静态分析