Bug Bounty 02 - Account Takeover via IDOR
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!