
Exploit para tomada de conta no GitLab via CVE-2023-7028, demonstrando bypass da redefinição de senha ao injetar e-mail do atacante para receber o token de redefinição.
GitLab é um gerenciador de repositórios hospedado na web amplamente adotado, que fornece uma plataforma abrangente para gerenciar código-fonte, integração, manutenção e colaboração em projetos de desenvolvimento de softwareCVE-2023-7028 é uma vulnerabilidade que permite ao atacante assumir a conta do usuário (Account TakeOver) por meio do formulário reset passwordversões do GitLab:
reset password, especificamente no endpoint da API POST /users/password do GitLab. O atacante explora a vulnerabilidade no campo de endereço de email, contornando a verificação de formato incorreto, o que permite que o atacante insira seu próprio email e, assim, o GitLab envie o para o email do atacantereset tokenCom base no trecho de código fornecido pelo GitLab, observamos o seguinte:

A parte que processa a solicitação de Reset Password está no arquivo spec/controllers/passwords_controller_spec.rb, que permite inserir vários emails na entrada, mas não possui nenhum mecanismo de autenticação de email para confirmar que se trata do email do usuário
O servidor apenas exige authenticity_token (que é um token oculto para proteção contra CSRF) do atacante no envio do formulário para enviar a solicitação de redefinição de senha

→ Podemos inserir nosso próprio email para receber o reset token de redefinição de senha do email da vítima e, assim, assumir a conta do usuário
Ao capturar a solicitação de redefinição de senha, obtemos o seguinte:

authenticity_token usado para proteção contra CSRF; o nome do email do usuário cuja senha será redefinida está na variável user[email]Adicione o email do atacante com o payload a seguir &user[email][]=victim_email&user[email][]=attacker_email e envie a solicitação:

→ Ao verificar o email do atacante, observamos que o token de redefinição de senha foi enviado e é possível acessá-lo para alterar a senha

