En el proceso de desarrollo de una aplicación vulnerable basada en jsp / servlet, intenté introducir la vulnerabilidad de la fijación de sesión.
Refiriéndose a la documentación Vine con el siguiente código que, cuando se utiliza en el servlet para crear una nueva sesión, debe devolver la sesión HTTP existente si existe y, de lo contrario, debe devolver un valor nulo. En cualquier caso, no se debe crear una nueva sesión.
if(obj.checkLogin(username, password))//if credentials are valid
{
HttpSession session = request.getSession(false);//return the existing session
if(session != null)
response.sendRedirect("LoginSuccess.jsp");
else
response.sendRedirect("error.jsp");
}
Para probar el código, lo implementé con Tomcat 7 y probé la fijación de sesión:
- Observe la cookie (
c1
) cuando se cargue la página de inicio de sesión (usando un proxy interceptor) - Introduzca las credenciales correctas en el formulario de inicio de sesión. La autenticación fue exitosa y fui redirigido a LoginSuccess.jsp
- Observe la cookie (
c2
) después de la autenticación.
Encontré que las cookies c1
y c2
son diferentes. Lo que implica que el código no es vulnerable a la fijación de sesión. Estoy teniendo problemas para entender este comportamiento. ¿Por qué es que la cookie original c1
no persiste después de la autenticación?