Saltearse al contenido

OSINT en repositorios de código

GitHub, GitLab y similares son una de las fuentes de recon más rentables que existen: los desarrolladores de una empresa (y sus empleados a título personal) suben código que, por error, contiene credenciales, claves de API, tokens, rutas internas, nombres de infraestructura y lógica sensible. Y recuerda: Git conserva el historial, así que un secreto “borrado” sigue ahí. Buscar bien en repos encuentra accesos que ningún escaneo revelaría.

  • Secretos: API keys (AWS, GCP, Stripe…), contraseñas, tokens, claves privadas SSH/PGP.
  • Infraestructura: URLs internas, hostnames, IPs, endpoints de API no públicos.
  • Lógica: cómo funciona la autenticación, algoritmos propios, validaciones (para romperlas).
  • Repos de empleados: dotfiles, proyectos personales con credenciales del trabajo.
# por organización
org:target-inc password
org:target-inc "api_key"
# por dominio/hostname en el código
"target.com" password
"internal.target.local"
# por tipo de secreto
"AKIA" (AWS access key id) "-----BEGIN RSA PRIVATE KEY-----"
filename:.env DB_PASSWORD
filename:config.php password
# combinando lenguaje/ruta
extension:yml password path:/.github/workflows secret

También en el historial y en gists (fragmentos públicos que la gente olvida).

# escanear repos/historial en busca de secretos
trufflehog github --org=target-inc # alto recall, verifica claves vivas
gitleaks detect --source .
# GitHub dorking automatizado
github-search / gitrob / gitdorker
# por commits y organizaciones
trufflehog git https://github.com/target-inc/repo

TruffleHog además verifica si la clave encontrada sigue activa, reduciendo falsos positivos.

1. Identifica la org en GitHub/GitLab y sus repos públicos
2. Enumera empleados (ver recon-personas) y sus cuentas personales
3. Escanea repos + historial + gists con trufflehog/gitleaks
4. Busca manualmente dorks específicos (dominio, "password", filename:.env)
5. Verifica cada secreto (¿sigue vivo? ¿a qué da acceso?)
6. Si hay .git/ expuesto en la web, reconstruye el código (ver fund-git)
GitLab, Bitbucket mismos problemas
Postman public workspaces colecciones con tokens/endpoints
Docker Hub imágenes con secretos en capas/ENV
npm / PyPI paquetes internos publicados por error (dependency confusion)
Pastebin / similares volcados de credenciales

Prevención: secret scanning en el pipeline (GitHub Advanced Security, gitleaks en pre-commit), .gitignore para .env/claves, rotar inmediatamente cualquier secreto que llegó a un repo (borrarlo del historial no basta: hay que rotarlo), formar a los empleados sobre repos personales, y monitorizar menciones de la org con las mismas herramientas.

  • Repos públicos de la org identificados
  • Dorks de código (org:, “password”, filename:.env, “AKIA”)
  • Historial y gists revisados (secretos “borrados”)
  • trufflehog/gitleaks sobre repos y commits
  • Cuentas personales de empleados escaneadas
  • Secretos verificados (¿vivos? ¿qué abren?)
  • Postman/Docker Hub/npm revisados
  • .git/ expuesto en la web reconstruido