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.
Lo básico
Sección titulada «Lo básico»git clone https://github.com/user/repo # descargar un repo (tu arsenal)git pull # actualizargit log --oneline # historial de commitsgit diff # cambios no confirmadosgit show <commit> # ver un commit concretogit branch -a ; git checkout <rama> # ramasEl 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.
El hallazgo: .git/ expuesto en webs
Sección titulada «El hallazgo: .git/ expuesto en webs»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:
# detectarcurl -s https://target/.git/HEAD # si devuelve "ref: refs/heads/..." -> expuesto# volcar y reconstruirgit-dumper https://target/.git/ ./salidaCon el código recuperado buscas credenciales, endpoints ocultos, claves y vulnerabilidades en la lógica.
El hallazgo: secretos en el historial
Sección titulada «El hallazgo: secretos en el historial»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 repotrufflehog git https://github.com/org/repogitleaks 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).
Trabajar con tu propio arsenal
Sección titulada «Trabajar con tu propio arsenal»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 cambiosgit add . ; git commit -m "msg" ; git pushHigiene (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 privadasgit secrets / pre-commit hooks # bloquear secretos antes del commitPor qué importa en seguridad
Sección titulada «Por qué importa en seguridad»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.
Checklist de dominio
Sección titulada «Checklist de dominio»- 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