Ferramenta avançada de análise forense, recuperação de repositórios Git e outros artefatos expostos publicamente na web via HTTP com saída visual, perfeita para aquele recon de respeito
Sobre | Aviso Legal | Funcionalidades | Screenshots | Instalação | Como Usar | Agradecimentos
O Git Leak Explorer é uma ferramenta "tudo-em-um" projetada para pesquisadores de segurança e administradores de sistemas. Ela permite identificar, baixar, reconstruir e analisar artefatos de pastas .git expostas inadvertidamente em servidores web.
A ferramenta vai além do download simples, oferecendo reconstrução de histórico de commits, detecção de riscos de segurança (hardening), suporte a packfiles e uma interface visual moderna (com Dark Mode) para análise dos dados. Opcionalmente suporta também busca de vazamentos de artefatos SVN, HG, Env e DS_Store. Também possui a habilidade de scan massivo em lista de alvos e efetuar bruteforce com wordlist em busca de artefatos de interesse.
Tudo isso em um só projeto. Leve, direto e brasileiro.
Ajude a desenvolver este projeto
Sinta-se a vontade para contribuir, enviar sugestões e suas pull requests :D
Esta ferramenta foi desenvolvida para fins profissionais éticos, educacionais e de auditoria autorizada. O acesso a sistemas de terceiros sem permissão explícita é ilegal, antiético e passível de punições legais.
- 👁️ Blind Mode: Recuperação inteligente mesmo quando o arquivo
.git/indexestá ausente ou bloqueado (403/404), utilizando "Crawling" da árvores e commits. - 🔍 Reconstrução de Artefatos: Baixa e reconstrói arquivos localmente a partir do
.git/indexremoto. - 📜 Histórico de Commits: Reconstrói a árvore de commits (mensagens, autores, timestamps) sem precisar clonar o repositório inteiro via
git clone, com suporte a visualização de stash e diffs de arquivos. - 🛡️ Análise de Hardening: Verifica a exposição de arquivos sensíveis (
config,HEAD,logs, etc.) e gera um relatório de risco (Crítico/Atenção). - 📦 Suporte a Packfiles: Detecta, baixa e extrai arquivos
.pack(Git objects comprimidos) automaticamente. - 📊 Relatórios Unificados: Gera um painel HTML interativo (
report.html) contendo listagem de arquivos, histórico, hardening e status de packfiles. - 🎨 Interface Moderna: Todos os relatórios HTML possuem tema escuro (Dark UI), busca em tempo real e paginação.
- 🚀 Alta Performance: Utiliza multi-threading e session pooling para downloads paralelos de objetos.
- 🔍 Suporte Adicional: Efetua buscas por artefatos SVN, HG, Env e DS_Store.
- 💪 Suporte a Brute Force: Habilidade de utilizar wordlists contendo artefatos de interesse e seus respectivos paths de busca.
- 🌎 Suporte a Proxy: Conecte-se com o Proxy que desejar, incluindo a rede Tor.
- 👥 Random User-Agents: User-Agentes simulados por default.
Tip
ESTE REPOSITÓRIO POSSUI UMA BUILD STANDALONE PARA WINDOWS, se preferir utilizar ao invés do python.
Apenas copie o arquivo em um path que você desejar e registre-o no sistema para ser reconhecido como um cmdlet e pule os próximos passos.
Não exclui a necessidade de ter o Git instalado no sistema.
Certifique-se de ter os seguintes requisitos instalados: Python 3.8+ e Git (necessário para descompactação de objetos):
pip install -r requirements.txtpipenv install requests
pipenv shell
python git_leak.py --helppoetry init -n
poetry add requests
poetry run python git_leak.py --helpdocker build -t gitleak_explorer .
docker run -v $(pwd)/repo:/app/repo gitleak_explorer http://alvo.com/.git --default --output-dir /app/repoPara criar um executável portátil (standalone):
- Instale o PyInstaller:
pip install pyinstaller- Compile o script:
pyinstaller --onefile --name "git_leak" git_leak.pyTip
Se estiver utilizando a versão RELEASE (Windows), considere usar
git_leak.exeao invés depython git_leak.py.
git_leak.py — Conjunto completo de ferramentas em arquivo único para recuperação e análise forense de vazamentos do Git.
Funcionalidades Principais:
- Recuperação via Index ou Blind Mode (Crawling)
- Reconstrução inteligente de arquivos e estrutura de diretórios
- Análise de histórico de commits (Metadados + Arquivos)
- Detecção de Hardening e outros vazamentos (SVN, HG, Env, DS_Store)
- Geração de relatórios técnicos detalhados e interface visual
Uso: python git_leak.py <URL> [OPÇÕES]
Exemplo: python git_leak.py http://alvo.com --full-scan
Principais funcionalidades implementadas:
- --parse-index : baixa .git/index e converte para JSON
- --blind : Blind mode: Rastrear commits/árvores quando .git/index está ausente/403
- --reconstruct : Baixa os blobs do dump.json e reconstrói o diretório .git/objects localmente.
- --list : gera listing.html (UI simplificada) dos arquivos encontrados no indice, com links
- --serve : abre um servidor http para visualização dos relatórios
- --sha1 : baixa um objeto único pelo SHA
- --reconstruct-history : reconstrói cadeia de commits somente como interface do usuário (history.json + history.html)
- --detect-hardening : verificações de exposição e gera os arquivos hardening_report.json e hardening_report.html.
- --packfile [MODE] : manuseio de packfiles (modes: list, download, download-unpack)
- --scan : roda scan em multiplos albos em busca de .git/HEAD exposure
- --default : roda parse-index, detect-hardening, packfile(list), list, reconstruct-history e serve
- --full-history : analisa árvore de arquivos completa de TODOS os commits (lento)
- --full-scan : executa verificação completa de vazamentos (SVN, HG, Env, DS_Store)
- --report : gera apenas o relatório final (report.html)
- --bruteforce : ativa a tentativa de recuperação de arquivos comuns via força bruta
- --wordlist : caminho para wordlist (Brute-Force) personalizada
- --proxy : URL do Proxy (ex: http://127.0.0.1:8080 para Burp/ZAP ou socks5h://127.0.0.1:9150 para rede Tor)
- --no-random-agent : desativa a rotação de User-Agents (Usa um fixo)
- --secrets : Executa scanner de regex/entropia em busca de chaves
- --show-dif : Baixa e exibe as diferenças (diffs) de código no histórico (Pode ser MUITO Lento)
- --local, : Caminho completo da pasta do projeto local (ex: /home/user/app ou C:\Projeto\)
- options: --max-commits, --ignore-missing, --strict, --workers, --output-index, --output-dir, --serve-dir
- Todos os arquivos de saída são armazenados no diretório externo fornecido: arquivos HTML na raiz, arquivos JSON/outros arquivos em outdir/_files.
Utilize de forma responsável e somente em sistemas que você esteja autorizado a testar.
Modo Automático (Recomendado) Executa todo o pipeline: baixa índice, verifica segurança, procura packfiles, reconstrói histórico e gera o relatório final.
python git_leak.py http://exemplo.com
# ou
python git_leak.py http://exemplo.com/.git --defaultEfetuar uma análise em uma pasta .git localmente: --local:
# Não é o propósito deste script, mas pode ser útil em caso de extração de arquivos expostos ou somente um teste local
python git_leak.py --local c:\Projeto\Meu_Projeto
# ou em conjunto com --output-dir para servir a saída em um diretório especifico
python git_leak.py --local c:\Projeto\Meu_Projeto --serve --output-dir temp/arquivos/Modo Adicional --full-scan
Executa além do modo padrão, outros vazamentos (SVN, HG, Env, DS_Store)
python git_leak.py http://exemplo.com/.git --full-scanModo comparativo --show-diff
Para mostrar um comparativo das alterações no histórico de commits
python git_leak.py http://exemplo.com/.git --show-diffModo lento --full-history
Executa em modo padrão ou modo adicional, mas tenta reconstruir o history de commits analisando todos os registros encontrados, pode ser utilizado em conjunto com --show-diff para mostrar um comparativo completo das alterações
python git_leak.py http://exemplo.com/.git --full-history- Apenas Gerar Relatório Unificado (se já houver dados baixados anteriormente)
--report:
python git_leak.py http://exemplo.com/.git --report- Habilitar servidor http para visualizar relatorios ou servir outros arquivos
--serve:
python git_leak.py http://exemplo.com/.git --serve
# ou em conjunto com --output-dir para servir um diretório especifico
python git_leak.py --serve --output-dir temp/arquivos/- Recuperar um objeto diretamente pelo SHA
--sha1
## Útil quando encontrado um arquivo de interesse na listagem de arquivos e o link para o objeto está acessível, --sha1 faz o download do arquivo e reconstrói seu conteúdo
python git_leak.py http://exemplo.com/.git --sha1 138605f2337271f004c5d18cf3158fce3f4a4b16
# Pode ser usado em conjunto com --output-dir
python git_leak.py http://exemplo.com/.git --sha1 138605f2337271f004c5d18cf3158fce3f4a4b16 --output-dir temp/arquivos/- Gerenciar Packfiles (Listar/Baixar/Extrair)
--packfile:
# Apenas listar packfiles encontrados
python git_leak.py http://exemplo.com/.git --packfile list
# Baixar e tentar extrair (requer git instalado no sistema)
python git_leak.py http://exemplo.com/.git --packfile download-unpack- Escanear Lista de URLs (Mass Scan)
--scan:
python git_leak.py --scan alvos.txt- Servir Relatórios Localmente:
python git_leak.py --serve --output-dir repo/temp- Executar scan massivo de alvos utilizando bruteforce de objetos de interesse através de lista personalizada com resultado organizado em pastas distintas:
python git_leak.py --scan alvos-exemplo.txt --output-dir pasta-alvos --full-scan --bruteforce --wordlist wordlist-exemplo.txt --serve- Caso executado apenas com
--brute-force, o bruteforce utilizará uma lista hardcoded:
# --- Environment & Secrets ---
".env", ".env.local", ".env.dev", ".env.development", ".env.prod", ".env.production",
".env.example", ".env.sample", ".env.save", ".env.bak", ".env.old",
"config.json", "secrets.json", "config.yaml", "secrets.yaml", "config.toml", "config.php",
"settings.py", "database.yml", "robots.txt", "README.md", "index.php", "index.html", "server.js",
# --- Version Control & CI/CD (Risco Crítico) ---
".git/config", ".gitignore", ".gitmodules",
".gitlab-ci.yml", ".travis.yml", "circle.yml", "jenkinsfile", "Jenkinsfile",
".github/workflows/main.yml", ".github/workflows/deploy.yml",
# --- Javascript / Node.js ---
"package.json", "package-lock.json", "yarn.lock", ".npmrc",
"webpack.config.js", "rollup.config.js", "next.config.js", "nuxt.config.js",
"server.js", "app.js",
# --- PHP / CMS / Frameworks ---
"wp-config.php", "wp-config.php.bak", "wp-config.php.old", # WordPress
"configuration.php", "configuration.php.bak", # Joomla
".htaccess", "composer.json", "composer.lock", "auth.json",
"artisan", "phpunit.xml", # Laravel
# --- Python / Django / Flask ---
"requirements.txt", "Pipfile", "Pipfile.lock", "setup.py", "pyproject.toml",
"manage.py", "app.py", "wsgi.py", "uwsgi.ini",
# --- ASP.NET / C# (IIS) ---
"web.config", "Web.config", "appsettings.json", "appsettings.Development.json",
"packages.config", "Global.asax",
# --- Docker / Kubernetes / Cloud / Terraform ---
"Dockerfile", "docker-compose.yml", "docker-compose.yaml", ".dockerignore",
"Makefile", "Vagrantfile",
"k8s.yaml", "kubeconfig", "deployment.yaml",
"main.tf", "variables.tf", "terraform.tfvars", ".terraform.lock.hcl",
"serverless.yml", "serverless.yaml",
# --- Backups & Dumps (Arquivos pesados) ---
"backup.zip", "backup.tar.gz", "backup.sql",
"dump.sql", "database.sql", "db_backup.sql", "users.sql",
"www.zip", "site.zip", "public.zip", "html.tar.gz",
# --- IDEs & Logs ---
".vscode/settings.json", ".idea/workspace.xml",
"debug.log", "error_log", "access.log", "npm-debug.log",
"id_rsa", "id_rsa.pub", "known_hosts"- Modo completo com Proxy:
python git_leak.py exemplo.com --output-dir teste_proxy --proxy 127.0.0.1:8080 --full-scan --bruteforce --serve
# ou rede Tor (SOCKS5)
python git_leak.py exemplo.com --output-dir teste_proxy --proxy socks5h://127.0.0.1:9150 --full-scan --bruteforce --serve
- Desativa User-Agents aleatórios:
python git_leak.py exemplo.com --output-dir sua_pasta --proxy 127.0.0.1:8080 --no-random-agent --serve- Comando tudo em um:
## Efetua scan de alvos em um arquivo de texto, com full scan ativado, saindo para a pasta MEU_SCAN, utilizando Tor como proxy,
## ativando 250 workers (threads), ativando scan por secrets (WIP), bruteforce nativo sem wordlist
## com reconstrução completa de histórico de commits carregando as diffs e servindo em localhost no final.
python git_leak.py --scan minha-lista.txt --full-scan --output-dir MEU_SCAN --proxy socks5h://127.0.0.1:9150 --workers 250 --secrets --bruteforce --full-history --show-diff --packfile download-unpack --serveTip
Ao analisar arquivos, principalemnte de pack files extraídas eu recomendo abrir a pasta dentro de uma IDE de sua preferencia, como o Visual Studio Code.
Err.. ninguém contribuiu ainda :(