[GIT] Git Exposed e resolução da máquina Git Happens da TryHackMe
4
0

[GIT] Git Exposed e resolução da máquina Git Happens da TryHackMe

Como encontrar uma falha de Git Exposed.

Nathalia Peres
4 min
4
0
Email image

O que é Git

O Git é uma ferramenta de versionamento de código muito utilizada no desenvolvimento de aplicações. Ela permite que desenvolvedores mantenham sempre uma cópia atualizada do código e tenham um controle maior sobre mudanças realizadas. Eu mesmo utilizo o Git para versionar e atualizar esse blog. Sempre que crio uma nova página, realizo a atualização para meu repositório com os novos arquivos e modificações.

Exatamente por ser muito utilizada no desenvolvimento de aplicações é que alguns problemas podem ocorrer, como a vulnerabilidade que vou descrever.

Git Exposed

Git Exposed pode ser definido como uma falha de configuração ou uma vulnerabilidade, dependendo do quão critica é a informação contida no arquivos do repositório.

Por um breve descuido, uma aplicação que utiliza o Git para versionamento pode vir a expor o diretório “.git”. Esse diretório possui arquivos com os logs de todas as mudanças realizadas ao longo do desenvolvimento.

Então, digamos que um desenvolvedor em fase de testes da aplicação acabou utilizando algumas credenciais de acesso, como um usuário e senha por exemplo, e para controle de versões da aplicação utilizou o Git. Em dado momento, obviamente as credenciais foram removidas. Entretanto, as versões criadas ainda constam nos logs do diretório “.git”.

Com esse diretório exposto, é possível realizar o download de todos os arquivos relacionados e acessar os logs de todas as modificações realizadas ao longo do desenvolvimento.

Como encontrar

Google Dorks

Para que possamos realizar as pesquisas de uma forma refinada no Google é possível informar ao buscador alguns comandos. Nesses comandos, podemos informar termos que, combinados, formam os dorks. Neste exemplo, vou demonstrar uma pesquisa em que no título da página conste “Index of /.git” e na página em si “parent directory”. Detalhe, nesse tipo de pesquisas só vão constar páginas indexadas pelo Google, ou seja, em que o diretório “.git” esteja explicitamente exposto, ou seja, é possível navegar dentro do diretório sem restrição de acesso alguma.

Email image
Email image

Extensão DotGit.

Existe uma extensão para Firefox e Chrome chamada DotGit. Como a própria descrição diz “É uma extensão para verificar se em um site acessado pelo usuário o mesmo possui um repositório .git exposto”. Utilizando o endereço anterior, acessei um dos sites retornados na pesquisa e a extensão já acusou um problema na página.

Dirb

Nem sempre o diretório estará acessível como no exemplo anterior. Pode ser que, ao acessar o diretório “/.git” seja retornado um erro 403, o que significa que o diretório está disponível no servidor, entretanto, não é permitida sua listagem ou acesso direto. Neste caso, é possível realizar o “fuzzing”, uma consulta de diretórios à partir de uma wordlist. Utilizei como exemplo a própria VM do desafio da TryHackMe

Email image

Nmap

O nmap possui um script para detectar e testar diversas vulnerabilidades conhecidas, chamado vuln. Utilizei como exemplo a própria VM do desafio da TryHackMe

Email image

Gitdumper

Como a própria descrição da ferramenta já diz, com ela é possível realizar um “dump” do repositório na máquina onde está sendo realizado o download. Irei utilizar a ferramenta no CTF da TryHackMe

[CTF] Git Happens - TryHackMe

Email image

Resumo

  • IP alvo: 10.10.50.149 (o ip pode mudar de acordo com a máquina)
  • Escopo: Git Exposed

Questões

Find the Super Secret Password

Th1s_1s_4_L0ng_4nd_S3cur3_P4ssw0rd!

Abri o navegador para verificar se era exibido alguma informação:

Email image

Fiz um teste manualmente a procura do diretório “.git” por já saber que o escopo era esse e obtive a listagem de diretórios:

Email image

Realizei o download da ferramenta Git-dumper e executei com o comando abaixo:

python3 git_dumper.py http://10.10.50.149 tryhackme
Email image

Acessei o diretório criado e constatei os arquivos baixados:

Email image

Com o comando “git log” verifiquei se o repositório possuia histórico de commits:

Email image
Email image

Ao analisar os logs, encontrei alguns interessantes, conforme abaixo. Para consultar o log, utilizei o comando “git show {ID_LOG}":

Email image

Ao analisar o arquivo, encontrei uma senha que possívelmente foi utilizada em dado momento do desenvolvimento e depois foi excluída:

Email image

E obtive a flag:

Email image

Links

https://tryhackme.com/room/githappenshttps://github.com/arthaud/git-dumper