Español | English
rss facebook linkedin Twitter

Seguridad en las sesiones de las aplicaciones Web – III

Fijación de sesión (Session fixation):

Definición:

Esta vulnerabilidad puede afectar a aplicaciones Web que utilizan un mecanismo de control de sesiones para gestionar el acceso de los usuarios.

Un ataque de session-fixation consiste en hacer que la victima haga login en la aplicación utilizando un identificador de sesión (ID) que le da el atacante.

Una vez la víctima ha hecho login con este ID prefijado. El atacante puede suplantarle ya que conoce su identificador de sesión.

Causas:

La vulnerabilidad aparece cuando la aplicación utiliza para el proceso de login un identificador de sesión generado anteriormente. Si durante el proceso de conexión a la aplicación este ID puede ser añadido o modificado por un tercero, el usuario puede ser víctima de un ataque.

Por ejemplo supongamos un proceso de conexión vulnerable:

1) Inicio:

àhttp://www.s.com/INDEX

ßSe genera el ID y se envía al navegador

2) Formulario de Login:

àhttp://www.s.com/FORMULARIO_LOGIN?session_id=123

ß Se presenta una pantalla que pide usuario y contraseña

3) Envió de las credenciales:

àhttp://www.s.com/LOGIN?session_id=123&usuario=pepe&pass=papa

ß Se comprueban las credenciales y se da el OK al login

4) Entorno protegido:

àhttp://www.s.com/MENU?session_id=123

ß Se muestra la parte privada de la aplicación

Explotación:

Para explotar la vulnerabilidad en este caso. El atacante necesita conseguir que la victima visite una URL que utilice un identificador de sesión prefijado. Por ejemplo:

http://www.s.com/FORMULARIO_LOGIN?session_id=666

Esta URL envía al navegador directamente al formulario de login con el identificador de sesión ya prefijado (666). Si el usuario hace login con este ID, su sesión podrá ser suplantada.

La forma habitual de hacer que el usuario visite una URL de este estilo consiste en engañarle o coaccionarle. Bien conscientemente o bien de forma inadvertida, aprovechando alguna vulnerabilidad en su navegador Web o en la propia aplicación.

Cookie-fixation:

En aplicaciones que envían el identificador de sesión dentro de la URL es sencillo generar una URL que inyecte el identificador de sesión prefijado.

Pero en aplicaciones que envían el ID en una Cookie la explotación es más compleja. Ya que la Cookie se incluye dentro de las cabeceras que envía el navegador y no puede ser añadida directamente en una URL.

Para que aparezca la vulnerabilidad en estos casos es necesario que en alguna parte de la aplicación se pueda modificar el valor de la Cookie de forma externa debido a algún defecto en la programación del aplicativo. Por ejemplo:


àhttp://www.s.com/INDEX?variable=xxx;%20cookie_inyectada=loquesea

ßHTTP/1.1 200 OK

ßSet-Cookie: opciones=xxx; cookie_inyectada=loquesea

Esta URL hace posible añadir nuevos valores a la Cookie. Si añadimos una variable con nombre “session_id” podremos prefijar el identificador de sesión. Y si el usuario sigue navegando a partir de esta URL y hace login en la aplicación, lo hará con la Cookie falsificada y podrá ser suplantado.


Protección:

La forma de protegerse contra este tipo es simple. Evitar que el identificador de sesión pueda ser fijado o manipulado por un tercero. Para ello se recomiendan una serie de directivas de programación.

Medidas de protección:

· No incluir el ID en la URL. Por lo menos hasta completar el proceso de login.

· Generar un nuevo ID de sesión tras el proceso de login.

· Prohibir el uso del mismo ID desde direcciones IP diferentes. (En algunos servidores de aplicaciones se denomina “roaming”)

· Aceptar solamente IDs generados por la aplicación.

· No compartir el mismo pool de sesiones entre 2 o más aplicativos.

· Borrar la sesión cuando el usuario ha terminado su actividad o tras un periodo de inactividad.

Otras medidas adicionales pueden ser:

· Utilizar como ID el identificador de la sesión SSL.

· Generar un ID nuevo con cada respuesta.


Hasta la próxima entrega!

Ramon Pinuaga

S21sec Auditoría



(+34 902 222 521)


24 horas / 7 días a la semana



© Copyright S21sec 2013 - Todos los derechos reservados


login