
Herramienta de reconocimiento de tokens de acceso personal (PAT) para cazadores de bug bounty, pentesters y equipos rojos

¿Alguna vez has encontrado un token de acceso personal (PAT) de GitHub o NPM y te has preguntado «¿Es válido?» o «¿Qué podría hacer un tipo malo con esto?» Bueno, si es así, ¡tengo la herramienta para ti!
Te presento gimmePatz, una completa herramienta de reconocimiento para PATs. gimmePATz te dirá si un PAT es válido y qué tipo de PAT es. Proporciona información sobre la cuenta de usuario que creó el PAT, incluyendo a qué organizaciones pertenece ese usuario y cuántos seguidores tiene. gimmePATz te mostrará qué alcances tiene un PAT y a qué variables o secretos tiene acceso el PAT. gimmePATz también enumerará a qué repositorios, paquetes NPM u organizaciones de GitHub está vinculado el PAT, y te dirá exactamente qué permisos tiene el PAT sobre cada recurso. Esta herramienta está diseñada para profesionales de la seguridad ofensiva, como cazadores de bugs (bug bounty), pentesters y equipos rojos. Al usar esta herramienta, aceptas utilizarla en un contexto legal.
Puedes apuntar gimmePATz a un archivo y encontrará todos los PATs en ese archivo y te dirá si son válidos. gimmepatz también admite salida JSON, por lo que puedes guardar la salida en JSON y/o canalizar la salida de gimmePATz a otras herramientas como jq. Puedes ver algunos ejemplos de las diferentes formas de usar gimmePATz en la sección «Uso avanzado» más abajo.
gimmepatz.py TOKEN
requests # pip install requestsgit (para descargar repositorios)# Discover secrets and variables
gimmepatz.py TOKEN --variables
# Include organization repositories
gimmepatz.py TOKEN --org GITHUB_ORGANIZATION
# JSON output for scripting
gimmepatz.py TOKEN --json
# Combined: organization repos + JSON output
gimmepatz.py TOKEN --org GITHUB_ORGANIZATION --json
# Save the output of gimmePATz in JSON output to a file
gimmepatz.py TOKEN --variables --org target-org --json > assessment.json
# Download all accessible repositories
gimmepatz.py TOKEN --download
# Download only private repositories
gimmepatz.py TOKEN --download --download-type private
# Custom download location
gimmepatz.py TOKEN --download --download-path ./target-repos
# Scan a file to see if it has any PATs in it
gimmepatz.py --scan ./example-file.json
Clona o descarga el script
git clone https://github.com/6mile/gimmepatz.git
cd ./gimmepatz/ && chmod u+x ./gimmepatz.py
_ ______ ___ _____
(_) | ___ \/ _ \_ _|
__ _ _ _ __ ___ _ __ ___ ___| |_/ / /_\ \| |____
/ _` | | '_ ` _ \| '_ ` _ \ / _ \ __/| _ || |_ /
| (_| | | | | | | | | | | | | __/ | | | | || |/ /
\__, |_|_| |_| |_|_| |_| |_|\___\_| \_| |_/\_/___|
__/ |
|___/ "Personal Access Token recon tool"
----------------------------------------------------
by @6mile
✅ Token is valid
👤 Authenticated as: octocat
Name: Octocat Maclean
Account type: User
Public repos: 4
Private repos: 3
Followers: 9714
Following: 731
🏢 Organization Memberships (2 total):
👤 Space-Force-Beta (member)
Name: Space-Force-Beta
Description: Building cool stuff for space
Public repos: 2
Private repos: 1
URL: https://github.com/Space-Force-Beta
👑 ThrifyBank (admin)
Description: The thriftiest Neo Bank in Kansas!
Public repos: 1
Private repos: 5
URL: https://github.com/thrifybank-kansas
🔑 Token Scopes (14 total):
• codespace:secrets
• notifications
• read:audit_log
• read:discussion
• read:enterprise
• read:org
• read:packages
• read:project
• read:public_key
• read:repo_hook
• read:user
• repo
• user:email
• workflow
Scope Descriptions:
--------------------------------------------------
repo: Full access to repositories
user: Access to user profile information
notifications: Access to notifications
📊 Rate Limit Status:
Limit: 5000
Remaining: 4999
Reset time: 1234567890
📁 Accessible Repositories:
Found 25 accessible repositories:
• 15 private repositories
• 10 public repositories
🔒 Private Repositories (9):
📂 octocat (3 private repos):
• octocat/internal-api (admin)
• octocat/database (admin)
• octocat/external-api (admin)
📂 Space-Force-Beta (1 private repos):
• Space-Force-Beta/destrukto-beam (admin)
📂 ThriftyBank (5 private repos):
• thriftybank-kansas/web (admin)
• thriftybank-kansas/docker (admin)
• thriftybank-kansas/database-int (admin)
• thriftybank-kansas/bank-vault (admin)
• thriftybank-kansas/SAAS-PORTAL (admin)
🔓 Public Repositories (7):
📂 octocat (4 public repos):
• octocat/sdk (admin)
• octocat/helpdesk-docs (admin)
• octocat/aws-sdk-helpers (admin)
• octocat/stinkyCaptain (admin)
📂 Space-Force-Beta (1 public repos):
• Space-Force-Beta/destrukto-beam (admin)
📂 thrifybank-kansas (1 public repos):
• thrifybank-kansas/node-restify (admin)
{
"token_valid": true,
"user_info": {
"login": "octocat",
"name": "The Octocat",
"type": "User",
"id": 1
},
"scopes": ["repo", "user", "notifications"],
"rate_limit": {
"limit": 5000,
"remaining": 4999,
"reset": 1234567890
},
"repositories": {
"total": 25,
"private": [
{
"name": "mycompany/internal-api",
"owner": "mycompany",
"permissions": {
"admin": true,
"push": true,
"pull": true
},
"url": "https://github.com/mycompany/internal-api"
}
],
"public": [
{
"name": "octocat/awesome-project",
"owner": "octocat",
"permissions": {
"admin": true,
"push": true,
"pull": true
},
"url": "https://github.com/octocat/awesome-project"
}
]
},
"summary": {
"total_repos": 25,
"private_count": 15,
"public_count": 10,
"owners": ["mycompany", "octocat"]
}
}
export TOKEN="your_token_here"
gimmepatz.py "$TOKEN"
«Token no válido o error de red»
«No se encontraron repositorios»
--orgLímite de tasa superado
200: Éxito401: Credenciales incorrectas (token no válido)403: Límite de tasa superado o permisos insuficientes404: Recurso no encontrado (el usuario/organización no existe)¡Las contribuciones son bienvenidas! No dudes en enviar un Pull Request. Para cambios importantes, abre primero un issue para discutir lo que te gustaría cambiar.
Este proyecto está licenciado bajo la Licencia MIT; consulta el archivo LICENSE para más detalles.
--downloadHecho con ❤️ por @6mile para mis colegas de offsec
| Option | Description |
|---|
--json | Salida de resultados en formato JSON |
--variables, --var | Enumera variables y secretos de GitHub |
--var-target | Alcance objetivo: all, user, repo, org |
--var-name | Nombre específico de repositorio u organización |
--download | Descarga todos los repositorios accesibles |
--download-path | Directorio de descarga personalizado (por defecto: repos) |
--download-type | Filtro: all, private, public |
--org | Incluye el análisis de una organización específica de GitHub |
--debug | Activa la salida de depuración detallada |
--scan | Escanea archivos locales en busca de PATs |
| Scope | Description |
|---|
repo | Acceso completo a los repositorios |
public_repo | Acceso solo a repositorios públicos |
repo:status | Acceso al estado de los commits |
repo_deployment | Acceso a los estados de despliegue |
user | Acceso a la información del perfil de usuario |
user:email | Acceso a las direcciones de correo del usuario |
user:follow | Acceso para seguir/dejar de seguir usuarios |
admin:org | Acceso completo a organizaciones, equipos y membresías |
write:org | Acceso de escritura a organizaciones y equipos |
read:org | Acceso de lectura a organizaciones y equipos |
gist | Acceso de escritura a gists |
notifications | Acceso a notificaciones |
workflow | Acceso a los flujos de trabajo de GitHub Actions |
write:packages | Acceso de escritura a paquetes de GitHub |
read:packages | Acceso de lectura a paquetes de GitHub |
delete_repo | Acceso de eliminación a repositorios |