La explotación de repositorios Git expuestos es una de mis técnicas favoritas de recolección de información, ya que frecuentemente nos permite acceder a datos confidenciales que no deberían estar disponibles públicamente. Este tipo de vulnerabilidad puede revelar credenciales, tokens de API, información de configuración y hasta código fuente sensible.
¿Qué es un repositorio Git expuesto?
Un repositorio Git expuesto ocurre cuando el directorio .git de un proyecto web es accesible públicamente en el servidor. Esto permite a atacantes descargar todo el historial del proyecto, incluyendo posibles secretos que hayan sido comprometidos en commits anteriores.
Métodos de Detección
1. Herramientas de Enumeración de Directorios
La forma más común de encontrar repositorios Git expuestos es mediante herramientas de enumeración de directorios:
- Dirb
- Dirbuster
- Gobuster
- wfuzz
Estas herramientas buscan directorios comunes, incluyendo /.git/ en el servidor objetivo.
2. Extensiones de Navegador (Firefox/Chrome)
Para una identificación rápida durante el reconocimiento manual, puedes utilizar extensiones especializadas:
- GitHub .git Exposure (Firefox)
- GitMiner (Chrome)
- GitHub Secret Scanner
3. Comprobación Manual
Simplemente navegar a https://objetivo.com/.git/ o https://objetivo.com/.git/HEAD puede revelar si el repositorio es accesible.
Herramientas de Explotación
git-dumper (Recomendada)
git-dumper es una herramienta especializada que descarga repositorios Git completos incluso cuando solo partes del directorio .git son accesibles.
Instalación:
pip install git-dumper
Repositorio oficial:
https://github.com/arthaud/git-dumper
Otras herramientas útiles:
- GitTools (https://github.com/internetwache/GitTools)
- DVCS-Pillage (https://github.com/evilpacket/DVCS-Pillage)
- GitHack (https://github.com/lijiejie/GitHack)
Proceso de Explotación Paso a Paso
Método 1: Usando git-dumper desde consola
1. Identificar el repositorio expuesto:
curl -I https://ejemplo.com/.git/HEAD
2. Descargar el repositorio completo:
git-dumper https://ejemplo.com/.git/ directorio-salida
Método 2: Usando extensiones de navegador
Análisis del Repositorio Descargado
1. Examinar el historial de commits:
cd directorio-salida
git log --oneline
2. Buscar información sensible:
# Buscar palabras clave comunes
grep -r "password\|secret\|token\|key\|auth\|credential" . --include="*.php" --include="*.py" --include="*.js" --include="*.json" --include="*.env" --include="*.config"
# Buscar en todo el historial
git log -p --all -S "password"
3. Examinar archivos de configuración comunes:
.envoenv.exampleconfig.php,database.phpsettings.py,config.jsondocker-compose.ymlpackage.json(dependencias vulnerables)
Qué Buscar Específicamente
Información más comúnmente encontrada:
- Credenciales de base de datos
- Tokens de API (AWS, Google, GitHub, etc.)
- Claves SSH privadas
- Contraseñas de administrador
- Información de configuración de servidores
- Comentarios con información sensible
Prevención y Mitigación
Para desarrolladores/administradores:
1. Configurar correctamente el servidor web:
- Bloquear acceso a
.git/en Apache/Nginx - Eliminar directorios
.giten producción
2. Usar .gitignore correctamente:
- Incluir archivos con credenciales
- Usar variables de entorno para datos sensibles
3. Implementar hooks de pre-commit:
- Escanear commits en busca de secretos
- Usar herramientas como
git-secrets
Conclusión
La explotación de repositorios Git expuestos sigue siendo un vector de ataque común debido a configuraciones incorrectas en entornos de producción. La combinación de herramientas automatizadas y análisis manual puede revelar información extremadamente valiosa durante pruebas de penetración.