Saltearse al contenido

Git para hacking

Git es el control de versiones que usa casi todo el mundo, y para un pentester tiene dos caras: es la herramienta con la que clonas y gestionas tu arsenal (miles de repos de exploits y tools), y es una fuente de hallazgos —repos expuestos, secretos commiteados, y .git/ accesibles en webs que filtran el código fuente entero. Saber Git es saber recuperar lo que la gente creyó haber borrado.

git clone https://github.com/user/repo # descargar un repo (tu arsenal)
git pull # actualizar
git log --oneline # historial de commits
git diff # cambios no confirmados
git show <commit> # ver un commit concreto
git branch -a ; git checkout <rama> # ramas

El concepto clave: Git guarda todo el historial. Un fichero borrado o un secreto “eliminado” en un commit posterior sigue en el historial y se recupera.

Si un servidor web sirve el directorio .git/ (por despliegue descuidado), se puede reconstruir el código fuente completo del sitio, incluidos secretos y lógica:

# detectar
curl -s https://target/.git/HEAD # si devuelve "ref: refs/heads/..." -> expuesto
# volcar y reconstruir
git-dumper https://target/.git/ ./salida

Con el código recuperado buscas credenciales, endpoints ocultos, claves y vulnerabilidades en la lógica.

Los desarrolladores commitean claves por error y luego “las borran” en otro commit —pero el historial las conserva:

# buscar secretos en todo el historial de un repo
trufflehog git https://github.com/org/repo
gitleaks detect --source .
git log -p | grep -iE 'password|api_key|secret|token'

En recon, los repos públicos de una empresa (y de sus empleados) son una mina de credenciales filtradas (ver OSINT en repositorios de código).

git clone --depth 1 <repo> # clon rápido sin historial (solo quieres la tool)
pip install -r requirements.txt # muchas tools Python traen deps
# contribuir / guardar tus cambios
git add . ; git commit -m "msg" ; git push

Higiene (para no filtrar tú lo que buscas en otros)

Sección titulada «Higiene (para no filtrar tú lo que buscas en otros)»
.gitignore # nunca commitees .env, claves, wordlists privadas
git secrets / pre-commit hooks # bloquear secretos antes del commit

Dos frentes: defensivo/OSINT, los .git/ expuestos y los secretos en historiales son hallazgos reales y frecuentes en bug bounty y pentest; operativo, todo el ecosistema de herramientas ofensivas vive en GitHub y necesitas Git para usarlo, adaptarlo y mantenerlo. Además, entender ramas/commits te deja auditar código de terceros antes de ejecutarlo.

  • Clono, actualizo y navego repos (clone, pull, log, checkout)
  • Entiendo que el historial conserva lo “borrado”
  • Detecto un .git/ expuesto y lo reconstruyo (git-dumper)
  • Busco secretos en historiales con trufflehog/gitleaks
  • Recupero un fichero o secreto de un commit antiguo
  • Uso .gitignore y hooks para no filtrar mis propios secretos
  • Clono tools con —depth 1 e instalo sus dependencias