Gato – GitHub Self-Hosted Runner Enumeration And Attack Tool
Discription

[![](https://blogger.googleusercontent.com/img/a/AVvXsEjrSybj3mH9kKuf6SoryxrJVROcNdHYesZ8YTHS58VuvB6BGBWFZPONd8Rg4mfjChEQkcv7dDMegB55HJKavruICmdrEy5zXZ9TKqsZwlBexHxrNsnSu_4bWkOZ1IHV4VK_tmi7fqobAgwOzzGZ5UsfuqQGTAh5DNFZolvPn7rZs0Z7QWKCqOQQxgyQkw=w494-h640)]()

Gato, or GitHub Attack Toolkit, is an [enumeration]( “enumeration” ) and attack tool that allows both blue teamers and offensive security practitioners to evaluate the blast radius of a compromised personal [access token]( “access token” ) within a GitHub organization.

The tool also allows searching for and thoroughly enumerating public repositories that utilize self-hosted runners. GitHub recommends that self-hosted runners only be utilized for private repositories, however, there are thousands of organizations that utilize self-hosted runners.

## Who is it for?

* Security engineers who want to understand the level of access a compromised classic PAT could provide an attacker
* Blue teams that want to build detections for self-hosted runner attacks
* Red Teamers
* Bug bounty hunters who want to try and prove RCE on organizations that are utilizing self-hosted runners

## Features

* GitHub Classic PAT Privilege Enumeration
* GitHub Code Search API-based enumeration
* GitHub Action Run Log Parsing to identify Self-Hosted Runners
* Bulk Repo Sparse Clone Features
* GitHub Action Workflow Parsing
* Automated Command Execution Fork PR Creation
* Automated Command Execution Workflow Creation
* SOCKS5 Proxy Support
* HTTPS Proxy Support

## Getting Started

### Installation

Gato supports OS X and Linux with at least **Python 3.7**.

In order to install the tool, simply clone the repository and use `pip install`. We recommend performing this within a virtual environment.

git clone https://github.com/praetorian-inc/gato
cd gato
python3 -m venv venv
source venv/bin/activate
pip install .

Gato also requires that `git` version `2.27` or above is installed and on the system’s PATH. In order to run the fork PR attack module, `sed` must also be installed and present on the system’s path.

### Usage

After installing the tool, it can be launched by running `gato` or `praetorian-gato`.

We recommend viewing the parameters for the base tool using `gato -h`, and the parameters for each of the tool’s modules by running the following:

* `gato search -h`
* `gato enum -h`
* `gato attack -h`

The tool requires a GitHub classic PAT in order to function. To create one, log in to GitHub and go to [GitHub Developer Settings]( “GitHub Developer Settings” ) and select `Generate New Token` and then `Generate new token (classic)`.

After creating this token set the `GH_TOKEN` environment variable within your shell by running `export GH_TOKEN=`. Alternatively, store the token within a secure password manager and enter it when the application prompts you.

For [troubleshooting]( “troubleshooting” ) and additional details, such as installing in developer mode or running unit tests, please see the [wiki]( “wiki” ).

## Documentation

Please see the [wiki]( “wiki” ). for detailed documentation, as well as [OpSec]( “OpSec” ) considerations for the tool’s various modules!

## Bugs

If you believe you have identified a bug within the software, please open an issue containing the tool’s output, along with the actions you were trying to conduct.

If you are unsure if the behavior is a bug, use the discussions section instead!

## Contributing

Contributions are welcome! Please [review]( “review” ) our design methodology and coding standards before working on a new feature!

Additionally, if you are proposing significant changes to the tool, please open an issue [open an issue]( “open an issue” ) to start a conversation about the motivation for the changes.

**[Download Gato]( “Download Gato” )**Read More

Back to Main

Subscribe for the latest news: