Español | English
rss facebook linkedin Twitter

Seguridad en las sesiones de las aplicaciones Web – IV

Con este artículo terminamos la serie relacionada con sesiones en aplicaciones Web.

Session-hijacking

Definición:

Se llama Session-hijacking a un tipo de ataques contra aplicaciones Web que consisten en aprovechar las características del mecanismo de control de accesos basado en sesiones para suplantar a un usuario legítimo.

Este mecanismo de control utiliza un token lógico o identificador de sesión para identificar a cada usuario. Si no se aplican controles adicionales, la mera posesión del token de sesión sirve para garantizar el acceso de un usuario. Debido a esto, si este identificador de sesión es conseguido por un tercero (un posible atacante), este podrá acceder a la aplicación suplantando al usuario legítimo.


Formas de obtener el identificador de sesión de un usuario:
La parte crítica del ataque consiste en conseguir el identificador de sesión de un usuario valido. Esta suele ser la parte más compleja y paradójicamente la fase de suplantación en si misma suele ser sencilla.

La obtención del identificador de sesión de un usuario legítimo se puede lograr por diversas vías:

• Sniffing: Monitorizando el trafico de conexiones a la aplicación.

• Robo: Aprovechando alguna vulnerabilidad para atacar el navegador del usuario: Cross Site Scripting, un troyano instalado en el equipo, etc.

• Fijación: Fijación de sesión mediante un ataque de sesión-fixation. (ver capítulo III)

• Predicción: Cuando la generación del identificador de sesión no es suficientemente aleatoria.

• Filtración: Si la aplicación en algún punto revela algunos de los identificadores de sesión activos.


Explotación:

Una vez el atacante ha conseguido hacerse con un identificador de sesión podrá utilizarlo para acceder a la aplicación con la identidad del usuario suplantado. Normalmente el acceso se realiza a través de alguna página inicial dentro de la zona protegida del aplicativo. Esta página deberá utilizar como único mecanismo de autenticación la comprobación del identificador de sesión. (Que es lo normal)

El atacante por tanto deberá tener un conocimiento aunque sea mínimo de la localización inicial (URL) de las páginas protegidas. Si el identificador de sesión va incluido dentro de la URL, la explotación es trivial y se puede realizar directamente desde cualquier navegador Web.

Si el identificador va incluido en una cookie de sesión. Sera necesario alguna herramienta que nos permita fijar la cookie en el navegador o algún proxy de navegación que sustituya la cookie por la suplantada.


Protección:

La seguridad de las sesiones Web depende de la confidencialidad del identificador de sesión. Cualquier medida que garantice su secreto será positiva. Aunque como hemos visto debemos cubrir un gran número de frentes: la red (sniffing), el usuario (xss, troyanos), la aplicación (filtración, fijación) o el api de manejo de sesiones (predicción).

Para complementar las protecciones contra toda esta gama de ataques se suele recomendar:

• Regenerar el identificador de sesión tras un periodo prudencial de tiempo. Y darlo de baja si el usuario está inactivo.

• En casos extremos se puede incluso generar un identificador nuevo para cada respuesta.

• Realizar comprobaciones secundarias sobre la identidad del usuario: Por ejemplo la dirección IP de origen, la versión del navegador, etc.

• Comprobar que la navegación del usuario sigue un proceso lógico y que no se accede directamente a partes concretas del aplicativo sin pasar por las páginas iníciales.

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


Saludos y hasta la próxima

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