Vulnerabilidad Session Puzzling(Session Fixation , Session Variable); Explicación y PoC

    Session Puzzling es una vulnerabilidad a nivel de aplicación que ocurre cuando la variable de sesión de la aplicación se utiliza para más de un propósito. Otro nombre para la sesión Puzzling es la sobrecarga de variables de sesión.

    El atacante intenta acceder a los puntos de entrada de la aplicación. La creación de objetos de sesión puede iniciarse de manera indirecta mientras se explotan las Session Puzzling y luego explotarse, accediendo a un punto de entrada como servicios web, páginas web, llamadas a procedimientos remotos, etc.

    La Session Puzzling permite a los atacantes eludir la autenticación, suplantar a usuarios legítimos, elevar privilegios, eludir restricciones de flujo e incluso ejecutar ataques adicionales. A esto de le suma Session Fixation y Session Variable que afectan a la manera en que se gestionan las sesiones en las aplicaciones web.

    Session Fixation ocurre cuando un atacante establece un identificador de sesión válido para un usuario y espera a que este inicie sesión. Una vez que el usuario lo hace, el atacante puede acceder a su sesión y llevar a cabo acciones maliciosas en su nombre. Esto puede lograrse engañando al usuario para que utilice un enlace con un identificador de sesión válido o aprovechando una debilidad en la aplicación para establecer el identificador de sesión.

    Session Variable, por otro lado, es un tipo específico de ataque de Session Fixation donde el atacante envía una gran cantidad de datos a la aplicación web con el fin de saturar las variables de sesión. Si la aplicación no valida adecuadamente la cantidad de datos que pueden almacenarse en estas variables, el atacante puede sobrecargarlas con datos maliciosos, causando problemas de rendimiento.

    Para prevenir estas vulnerabilidades, es crucial utilizar identificadores de sesión aleatorios y seguros, validar la autenticación y autorización del usuario antes de establecer una sesión, y limitar la cantidad de datos que pueden almacenarse en las variables de sesión, además de separar claramente las funciones de cada variable de sesión, validar y sanitizar las entradas de usuario, utilizar prácticas de gestión de sesiones seguras, implementar un control de acceso basado en roles, realizar revisiones de código y pruebas de penetración, monitorizar y registrar actividades para detectar posibles ataques, y educar a desarrolladores y usuarios sobre buenas prácticas de seguridad.




PoC

    
    Nos encontramos frente a un panel de inicio de sesión


    Acedemos mediante Admin/Admin y podemos ver información confidencial puesto que somos administradores.


     Estando logueado podemos ver un JWT;


    El cual en esta pagina podemos ver la estructura del mismo. Nos representa un log y username


    Ahora, supongamos que el usuario cierra sesión y olvida su contraseña, intenta recuperarla proporcionando su nombre de usuario (admin) y si el nombre de usuario es válido, la aplicación indica que debería recibir su nueva contraseña a través de un correo electrónico.


    Ponemos el usuario admin, y lo interceptamos con Burpsuite


    Al interceptarlo nos da una cookie de sesión, la cual si nos lo traemos a nuestro dashboard, podemos acceder a páginas autenticadas sin iniciar sesión en la aplicación, lo que demuestra que podemos eludir con éxito el mecanismo de autenticación.

    Todo esto viene dado a que si nosotros creamos una sesión, la construimos en una url y la mandamos a nuestra victima, el accedería mediante esa cookie de sesión y nosotros al recargar veríamos su sesión. 

No hay comentarios:

Publicar un comentario