DEV Community

José Vitor Alves Pignataro
José Vitor Alves Pignataro

Posted on

2 1

Write-up: Git Exposed, weak password reset and account takeover.

Image description

Olá, primeiramente antes de mais nada e não menos importante, me chamo José Vitor, trabalho atualmente como desenvolvedor de software, automação de processos e desenvolvimento de bots.

Sou entusiasta em Segurança da Informação e é nela em que aplico meus estudos, então sempre que possível estou dedicando meu tempo em me desenvolver cada vez mais nesta área, e quando possível realizo testes de seguranças como um trabalho extra.

Este write-up é referente a um teste que realizei em um sistema o qual me foi solicitado, onde mostro os métodos aplicados para realizar o teste e falo um pouco sobre a importância de saber programação dentro da área de segurança.

Buscando ser breve, não irei me aprofundar em cada tópico abaixo, e sim mostrar o processo e explicar o básico do que está acontecendo para melhor seguirmos durante o write-up.

  1. Reconhecimento
  2. Exploração
  3. Explorando um pouco mais a fundo

Reconhecimento.
Nesta etapa iniciei o reconhecimento geral do sistema, enumerando portas, tecnologias, arquivos, diretórios etc...

Mas neste caso vou focar na enumeração de diretórios em que nos leva a falha de git exposed. Utilizando uma ferramenta autoral que desenvolvi para realizar o fuzzing em aplicações Web, obtive a seguinte saída

Image description

Aqui temos o resultado da enumeração e um possível git exposto na aplicação, verificando manualmente conseguimos ver mais a fundo os repositórios abertos.

.git/HEAD
Image description

.git/config
Image description

.gitignore
Image description

Exploração.
Confirmando então que os repositórios estão abertos, podemos realizar o dump do git explorando a falha de git exposed, para isso costumo utilizar a ferramenta git-dumper que pode ser acessada através do link: https://github.com/arthaud/git-dumper

Image description

Com isso já foi possível explorar a vulnerabilidade e dumpar o repositório da aplicação em minha máquina.

Image description

Explorando um pouco mais a fundo.
Aqui entramos na importância de ter uma boa base em programação, explorando um pouco os arquivos da aplicação me deparei com uma função que fazia o reset de senha do usuário em caso de esquecimento de senha, basicamente a função criava um hash para a nova senha e utilizava os 8 primeiros dígitos deste mesmo hash para gerar a nova senha.

Image description

Reproduzindo a mesma lógica em minha máquina com seguinte código:

<?php

$randomPassword = uniqid(rand());
$emailPassword = substr($randomPassword, 0, 8);

echo "HASH: $randomPassword | PasswordReset: $emailPassword"

?>
Enter fullscreen mode Exit fullscreen mode

Resultando na seguinte saída:
Image description

Confirmando então, ele utiliza sempre os oito primeiros dígitos gerados inicialmente para criar a nova senha, levando em conta isso temos então um weak password reset que podemos explorar elevando para um possível Account Takeover.

Sabendo então que a nova senha terá sempre um tamanho único e utiliza números, podemos realizar um ataque de brute force.

Primeiramente realizo o reset em uma conta disponibilizada para os testes.

Image description

Então simulo um login e faço a interceptação utilizando um proxy para capturar os parâmetros passados para executar o login de um usuário.

Image description

Agora utilizando a ferramenta wfuzz, realizei o brute force na aplicação com o seguinte comando:

wfuzz -c -z file,passwordlist.txt --hw 262 -d "empEmail=***@***.com.br&password=FUZZ&submit=signIn" https://***/login.php 
Enter fullscreen mode Exit fullscreen mode

Após algum tempo temos o retorno da possível senha encontrada.

Image description

Então bastou realizar a tentativa de login e garantir o acesso a conta, realizando então o Account Takeover.

Image description

Conclusão

Este é meu primeiro write-up publicado oficialmente, tendo em vista que todo processo de teste é sempre carregado de um enorme aprendizado, agregando sempre experiência a cada processo, espero ter conseguido transmitir um pouco de todo este aprendizado neste artigo.

Fique a vontade para entrar em contato a qualquer momento, você pode encontrar minhas redes sociais no meu site logo abaixo:

https://vitorpignataro.github.io/Portfolio-Jose-Vitor/homepage.html

Até a próxima.
José.

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More

Top comments (0)

Image of Datadog

How to Diagram Your Cloud Architecture

Cloud architecture diagrams provide critical visibility into the resources in your environment and how they’re connected. In our latest eBook, AWS Solution Architects Jason Mimick and James Wenzel walk through best practices on how to build effective and professional diagrams.

Download the Free eBook