Insights > Blog

PERIGOS DO GIT EXPOSTO

 

Hoje em dia diversas aplicações (sites ou até sistemas web) utilizam o GIT para versionar e/ou publicar códigos de aplicações. Assim, como várias outras tecnologias novas que apareceram de uns tempos para cá, o GIT cumpre bem o seu papel ao ajudar profissionais de engenharia de software, mas também acabou abrindo novas brechas de segurança.

O perigo ocorre quando a aplicação deixa exposto o diretório “.git”, que fica na raiz do sistema.
Vamos utilizar como exemplo, a aplicação WEB http://sistemavuln.com, que foi desenvolvida para fins de demonstração. Podemos verificar se a falha existe, simplesmente acessando o endereço http://sistemavuln.com/.git, que pode ser validado como vulnerável, caso consiga listar os arquivos desse diretório. Vamos então acessar essa URL e procurar pelo diretório objects, para assim pegarmos o arquivo com extensão pack.

Um detalhe importante a ser notado, é que em muitos casos os desenvolvedores bloqueiam a listagem do diretório .git (Directory Listing) mas esquecem de bloquear a leitura dos arquivos dentro desse diretório, o que não iria parar um atacante com os devidos conhecimentos.

Agora que já sabemos que o site alvo permite ler (e consequentemente baixar) arquivos, vamos procurar pelo arquivo com extensão pack, que se encontra dentro do diretório .git/objects.

Dentro do arquivo pack-bda1031d16bb0336bfc8b3f9f861a41176b99cbf.pack, está o código-fonte da aplicação junto com informações de Commits já realizados. Então vamos trabalhar com esse arquivo para encontrar informações sensíveis. Antes de tudo, vamos criar um diretório e baixar o arquivo pack:

mkdir /tmp/sistemavuln ; cd $_
• wget http://sistemavuln.com/.git/objects/pack/pack-bda1031d16bb0336bfc8b3f9f861a41176b99cbf.pack

Com o diretório criado, vamos fazer dele um repositório vazio do GIT e em seguida descompactar o arquivo pack.

• git init
• cat pack-bda1031d16bb0336bfc8b3f9f861a41176b99cbf.pack | git unpack-objects

Podemos agora, notar que alguns diretórios (com nomes de 2 caracteres de tamanho) foram criados em .git/objects e dentro deles, arquivo(s) que possue(m) o código-fonte da aplicação, que não pode ser lido com comandos como cat, vi ou demais editores convencionais.

Por último, vamos ler um desses arquivos gerados utilizando o comando:

printf “\x1f\x8b\x08\x00\x00\x00\x00\x00” | cat – .git/objects/dd/ea5e29f321ebf569b15f9ef2ca3b43b97b560e | gzip -cd -q | strings -a

Aqui conseguimos recuperar o código-fonte de um arquivo que contém credenciais para acessar um Banco de Dados MySQL. Utilizei um arquivo qualquer que foi gerado, mas os demais arquivos também podem ser lidos.

Obviamente já existem ferramentas automatizadas para realizar essa e outras técnicas para explorar repositórios GIT, mas aqui podemos ver como realmente tudo acontece por debaixo dos panos e assim ter uma visão mais clara dos riscos que um simples diretório exposto pode trazer.

O intuito desse post foi somente mostrar os riscos que os arquivos do GIT (quando expostos) podem trazer e não ensinar ou motivar a realizar qualquer tipo de ataque.

Fonte: Lucas Davis – Analista de red team senior

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

RECEBA NOSSAS NOTÍCIAS!

Information Security Maturity Self-Assessment Survey

Saiba mais

•  Whitepapers
•  E-books
•  Checklists
•  Self-Assessments
•  Webcasts
•  Infographics