Salve salve galera, hoje irei falar sobre mais uma vulnerabilidade de Account Takeover que encontrei desta vez no programa de Bug Bounty da Hackerearth. Esta vulnerabilidade já foi corrigida e vai ter video da PoC \o/, deixo também um aviso de que os emails utilizados para criação das contas (mostrados nos vídeos) são utilizados apenas para spam :)

Bom, primeiramente, esta vulnerabilidade foi encontrada em um subdomínio do Hackerearth, então, para encontrá-lo utilizei o Sublist3r (futuramente irei trazer tutoriais de Recon :) ) e depois utilizei o Knockpy para fazer a resolução dos subdomínios encontrados anteriormente.

Após ter finalizado a enumeração e a resolução dos subdomínios, fui procurando algum alvo para que eu começasse a realizar os testes. Foi aí que encontrei um que me chamou a atenção, movehack.

Notei que era possível realizar a criação de conta para acessar este sistema e decidi criar uma para navegar dentro da aplicação.

Ao criar uma conta, é necessário apenas que seja fornecido um endereço de email, pois um link será enviado para o mesmo e a senha é definida por meio deste link (redireciona para uma página de criação de senha).

Ao entrar na página de definição de senha, utilizei o Burp Suite para interceptar a request que era feita, e foi aí que vi algo um pouco estranho...

No corpo da request, havia além das senhas digitadas, o meu endereço de email, algo como:
email=conta1@gmail.com&password=1234567890:)&passwordConfirm=1234567890:)

Decidi criar outra conta para tentar alguma coisa com 2 contas conhecidas, pois teria mais certeza caso algo acontecesse.

Ao criar a conta e clicar no link de ativação enviado para o email, na página de definição de senhas coloquei o burp para interceptar as requests para que eu pudesse modificá-las. Então, ao interceptar a request, novamente a mesma requisição era feita:
email=conta2@gmail.com&password=1234567890:)&passwordConfirm=1234567890:)

Fiz a requisição normalmente, e modifiquei o email do payload para o email da conta1, ficando da seguinte forma:
email=conta1@gmail.com&password=abcdefghjkl:)&passwordConfirm=abcdefghjkl:)

E para minha surpresa, recebi a mensagem de confirmação que a senha foi definida com sucesso.

Até aí tudo bem, poderia haver uma verificação no lado do servidor que enviava só pro email e tal (meu pensamento na hora).

Decidi então verficar se realmente houve a troca da senha da minha conta1, tentei logar com as credenciais da conta1 definidas na primeira request (conta1@gmail.com && 1234567890:)) e para minha surpresa, não funcionou (eu já estava me levantando da cadeira para comemorar)...

E para tirar a prova final, decidi logar na conta1 com a senha definida na 2 request (abcdefghjkl:)) e funcionou AOEIAOEAIEAOEIAEOAEIOAEIOAEI

Daí amigo, foi só gravar o vídeo da PoC, reportar pra eles e ser feliz :)

Então galerinha, para realizar o takeover (aquisição) da conta de outro usuário, era necessário que você conhecesse o email da vítima (ainda sim vale né?!).

Como prometido aqui está o vídeo da vulnerabilidade:

Espero que tenham gostado galera, irei trazer mais posts futuramente, dá aquela compartilhada, manda um feedback pelo Twitter, Telegram etc no que posso mudar e tal :)
Valeuu!