Adquisición de cuenta - Inside The Tenant

Resumen :
Account Takeover (ATO) es un ataque mediante el cual un gato atacante toma posesión de la cuenta de otra persona. Hay varias formas de un ataque de apropiación de cuenta, a saber, credenciales de fuerza bruta, relleno de credenciales, manipulación de respuestas, envenenamiento por restablecimiento de contraseña, ingeniería social y phishing, ataques de omisión 2FA, etc.
Descripción :
Encontré una vulnerabilidad en un programa privado en una de las plataformas de recompensas por errores por la que me otorgaron 150 USD. Mientras navegaba por la aplicación, encontré una función de invitación que era vulnerable a la fuga de tokens de invitación. Aproveché el token de invitación filtrado para apoderarme de la cuenta de la víctima a través de un correo electrónico no registrado que manejé yo (el atacante).
¿Qué es Inquilino?
En palabras simples, un inquilino se define como un grupo de usuarios de una sola organización o empresa. Hay un administrador en el arrendatario que puede invitar a otros usuarios a trabajar para la empresa que creó el arrendatario. Un inquilino puede ser del departamento de TI, departamento de cuentas, departamento de ventas, etc.

¿Cómo encontré esta vulnerabilidad?
- Inicié sesión en la cuenta (la plataforma proporcionó las credenciales de administrador) e hice clic en la función Invitar usuario


3. Luego intercepté la solicitud usando burpsuite e hice clic derecho en la solicitud> Interceptar> Responder a esta solicitud



4. Elaboré la URL para el token de invitación y lo abrí en el navegador porque el token ya se filtró en la respuesta, luego hice clic en Aceptar y me pidió que ingresara un correo electrónico.


5. Luego fui a Temp Mail y copié el correo electrónico no registrado y lo pegué en el sitio web e hice clic en el botón y luego hice clic en Aprobar



6. Luego, el código se envió a un correo electrónico no registrado (correo electrónico del atacante)


7. Usé el código y acepté la invitación enviada a la víctima



Porqué sucedió ?
En mi opinión,
Había dos fallas en la aplicación web.
- El token de invitación se filtró en la respuesta al invitar al usuario
- No se realizó la validación del usuario invitado en el token de invitación.
Cualquier administrador puede hacerse cargo de la cuenta de cualquier usuario invitado por el administrador al arrendatario.
La gravedad sería de baja a media porque el ataque está dentro del inquilino y, aparte de eso, lo único que puede hacer un administrador aquí es hacerse pasar por el usuario invitado y realizar las acciones en nombre de ese usuario y un administrador no puede hacerse pasar por el usuario existente. .
CVSS calculado
Cadena vectorial - CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
Puntuación - 5.4 (Medio)

Mitigación
Habrá dos mitigaciones aquí
- El código de invitación no debe enviarse en la respuesta del servidor.
- Se debe realizar una verificación contra el código de invitación y la dirección de correo electrónico invitada.
// Comprobar si el correo electrónico proporcionado coincide con el código de invitación
if (email == inviteCode) {
// El correo electrónico coincide con el código de invitación
// Continúa con el resto del proceso de autenticación
// …
} else {
// El correo electrónico no coincide con la invitación código
// Devuelve un mensaje de error o pide el código de invitación correcto
// …
}
