Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Fijación de sesión leída en el código

5 tareas · 35 min · Principiante

El portal donde los compradores de Facturas Sativanorte consultan sus facturas corre en PHP y es más viejo que el panel. Una compradora entró con su correo y su clave desde un enlace que le llegó por correo, y al día siguiente alguien la llamó citando sus datos. Con autorización escrita te entregan la configuración de sesión de PHP, la página de ingreso y el registro de esa mañana. Se lee cómo pudo pasar sin que nadie conociera su clave.

0 de 5 · 0%

Objetivo de la sala

El portal donde los compradores de Facturas Sativanorte consultan sus facturas corre en PHP y es más viejo que el panel. Una compradora entró con su correo y su clave desde un enlace que le llegó por correo, y al día siguiente alguien la llamó citando sus datos. Con autorización escrita te entregan la configuración de sesión de PHP, la página de ingreso y el registro de esa mañana. Se lee cómo pudo pasar sin que nadie conociera su clave.

En el robo de una sesión, alguien obtiene un identificador que la aplicación ya le dio a otra persona. En la fijación ocurre al revés: alguien consigue que la víctima use un identificador que él ya conoce, y espera a que ella se autentique con él. Si la aplicación no cambia el identificador al ingresar, la sesión autenticada queda con un valor que ambos conocen. MITRE la cataloga como CWE-384.

Para que funcione hacen falta dos condiciones en la aplicación: que acepte un identificador puesto desde fuera (por ejemplo, en la URL, o uno que ella nunca generó) y que lo mantenga al pasar a autenticada. Basta con quitar cualquiera de las dos para cortarla, y lo correcto es quitar ambas.

Responde para continuar

¿Qué distingue la fijación de sesión del robo de una sesión?

Ver pista de ayuda

Piensa en quién conoce el valor primero.

PHP puede aceptar o rechazar un identificador que llega en la petición pero que él nunca creó. Con la opción adecuada encendida, si el valor no corresponde a una sesión existente, emite uno nuevo en lugar de adoptarlo. La documentación de PHP recomienda encenderla en todos los sitios. Otras dos opciones deciden si el identificador puede llegar por la URL además de por la cookie.

Abre php-sesion.ini en el laboratorio.

Responde para continuar

¿Qué directiva, puesta en 0, deja que el portal adopte un identificador que él no creó? Escribe su nombre completo.

Los identificadores que genera el portal tienen una forma fija, descrita en encargo.txt. Un valor con otra forma no salió del portal. Busca en registro-portal.txt el que no encaja.

Responde para continuar

¿Qué identificador, que no tiene la forma de los que genera el portal, aparece usado desde dos direcciones distintas?

En entrar.php la sesión recibe los datos de la compradora, pero falta algo entre la verificación de la clave y la redirección. Con eso en mente, sigue el identificador del registro después del POST de las 11:41:20.

Responde para continuar

¿Desde qué dirección se usó la sesión de la compradora CMP-3307 después de que ella ingresara?

El equipo del portal quiere una sola corrección. Recuérdales que hay dos condiciones y elige el conjunto que corta ambas.

Responde para continuar

¿Qué recomiendas para el portal de compradores?

Ver pista de ayuda

Una condición es aceptar un valor de fuera; la otra, conservarlo al ingresar.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad