
Exploit para la toma de control de cuentas de GitLab mediante CVE-2023-7028, que demuestra la evasión del restablecimiento de contraseña inyectando el correo del atacante para recibir el token de restablecimiento.
GitLab es un gestor de repositorios de datos alojado en la web ampliamente utilizado, que proporciona una plataforma integral para gestionar código fuente, integración, mantenimiento y colaboración en proyectos de desarrollo de software.CVE-2023-7028 es una vulnerabilidad que permite a un atacante tomar control de la cuenta de un usuario (Account TakeOver) a través del formulario reset password.versiones de GitLab:
reset password, específicamente en el endpoint de API POST /users/password de GitLab. El atacante explota la vulnerabilidad en el campo de dirección de email, omitiendo la verificación de formato incorrecto, lo que permite al atacante insertar su propio email y, cuando GitLab envía el , este llega al email del atacante.reset tokenBasándonos en el código proporcionado por GitLab, observamos lo siguiente:

La parte que procesa la solicitud de Reset Password se encuentra en el archivo spec/controllers/passwords_controller_spec.rb, que permite ingresar múltiples emails desde la entrada, pero no tiene ningún mecanismo de autenticación de email para confirmar que ese es el email del usuario.
El servidor solo requiere authenticity_token (que es un token oculto para prevenir CSRF) del atacante en el envío del formulario para procesar la solicitud de reset de contraseña.

→ Podemos insertar nuestro propio email para recibir el reset token de la contraseña del email de la víctima y así tomar control de la cuenta del usuario.
Al interceptar la solicitud de reset de contraseña, obtenemos lo siguiente:

authenticity_token utilizado para prevenir CSRF; el nombre del email del usuario cuya contraseña se va a restablecer se coloca en la variable user[email].Añadimos el email del atacante con el payload &user[email][]=victim_email&user[email][]=attacker_email y enviamos la solicitud:

→ Al revisar el email del atacante, observamos que el token de restablecimiento de contraseña ha sido enviado y se puede acceder a él para cambiar la contraseña.

