Gestión De Sesiones Web
Enviado por ckarl • 4 de Agosto de 2014 • 4.236 Palabras (17 Páginas) • 278 Visitas
1. INTRODUCCIÓN
El informe «Gestión de sesiones web: ataques y medidas de seguridad» tiene el objetivo de informar de cómo prevenir los ataques que se pueden realizar sobre la gestión de la sesión de páginas web, como los sufridos en la red social LinkedIn o el ataque que permitía suplantar al usuario en redes sociales.
En primer lugar, el informe describe cuál es la finalidad de una sesión web, de la que dependen un gran número de los servicios de Internet, así como el principal medio por el que se implementa una sesión: los identificadores de sesión.
A continuación, se analizan uno a uno los principales tipos de ataques, que se pueden producir sobre la gestión de sesiones web: de predicción de sesión, a través de XSS, de fijación de sesión, interceptando la comunicación y mediante errores en el cierre de sesión. Para cada tipo, se explican las medidas de seguridad que se deben implantar, en la aplicación o en el servidor web, para paliarlos.
Por último, se concretan cómo implantar las medidas de seguridad, ante cada tipo de ataque, en los frameworks de desarrollo web más comunes: PHP, ASP.NET y Java.
Gestión de sesiones web: Ataques y medidas de seguridad 5
2. SESIONES WEB E IDENTIFICADORES DE SESIÓN
Las páginas web tienen «memoria», reconocen las acciones que el usuario ha realizado anteriormente como, por ejemplo, si se ha registrado, qué elementos ha visitado o las compras añadidas a la cesta. Dicho de otro modo, establecen una sesión con el internauta.
Si HTTP, el protocolo con el que se interactúa con las páginas web, no está orientado a conexión, ya que por sí mismo no proporciona manera de almacenar las acciones que el navegante realiza en una página web1, ¿cómo es posible mantener una sesión web?
Para mantener las sesiones web el navegador y el servidor web comparten un identificador único que el navegador web incluye en cada petición HTTP o HTTPS realizada al portal (generalmente mediante cookies). De este modo, por medio de este identificador, el servidor web puede reconocer que la petición que recibe pertenece a una determinada sesión, almacenar la información de esta petición que le interese y responder a ella según la información almacenada anteriormente.
Normalmente, al autenticarse un usuario en una página web o portal, se incluye en la información de sesión el identificador del usuario; de este modo, en peticiones HTTP posteriores el portal reconoce, a través del identificador de sesión, a qué usuario corresponde esa petición y puede asociarle las acciones realizadas y personalizar su contenido. Del mismo modo, al salir un usuario de un portal o aplicación web, éste cierra la sesión web.
En la siguiente imagen se pude apreciar un «diálogo» entre el navegador y el servidor web capturado con el complemento de Firefox Live HTTP headers, también se puede utilizar ieHTTPHeaders para Internet Explorer:
1 Aunque HTTPS sí está orientado a conexión la información que almacena sólo es relativa a la gestión de la conexión segura.
Gestión de sesiones web: Ataques y medidas de seguridad 6
Imagen 1. Diálogo HTTP
La imagen muestra como, en un primer momento, el servidor envía una cabecera en la que solicita que el cliente almacene una cookie que contiene el identificador de sesión y, posteriormente, el navegador incluye esta cookie en la respuesta para que el servidor reconozca que la petición pertenece a una determinada sesión.
Otra ventaja del uso de los identificadores de sesión es que permiten que la información asociada a la sesión esté almacenada en el servidor, un entorno de seguridad más controlado, al que no tiene acceso el cliente directamente.
Gestión de sesiones web: Ataques y medidas de seguridad 7
3. ATAQUES Y MEDIDAS DE SEGURIDAD
Mediante el identificador de sesión el servidor discierne la sesión a la que pertenece la petición HTTP. Por tanto, si un atacante obtiene o genera un identificador de sesión válido y realiza peticiones web en las que incluye este identificador, podrá suplantar al usuario en su sesión web y realizar acciones en su nombre sin su consentimiento. En la práctica el resultado del ataque es similar a que el atacante conociera el nombre de usuario y la contraseña del usuario afectado.
Este tipo de ataques son muy graves y comunes, de hecho, junto con la gestión de autenticación, ocupan el tercer lugar en el ranking de riesgos de seguridad en aplicaciones web de OWASP.
Aunque todos tienen un mismo objetivo, obtener identificadores de sesión válidos para suplantar al usuario, se diferencian en el modo de hacerlo.
3.1. PREDICCIÓN DE SESIÓN
Este tipo de ataque se centra en generar un identificador válido. Para ello, el atacante aprovecha los patrones de generación de identificadores de sesión que pueda utilizar el servidor y, una vez reducido el espacio de búsqueda, prueba todas las posibilidades posibles mediante fuerza bruta.
Solución
Aleatorización y longitud suficiente del identificador de sesión
Como ejemplo, PHP utiliza como identificador un hash de 16 o 20 bytes creado a partir de una cadena de texto que se compone de: La dirección remota del cliente HTTP. Información del tiempo de ejecución. Datos aleatorios. Opcionalmente, dependiendo de la opción session.entropy_length, permite añadir a la fuente del hash datos aleatorios obtenidos a partir del API de Windows o del archivo /dev/random en sistemas Unix.
Gestión de sesiones web: Ataques y medidas de seguridad 8
Imagen 2. Muestra de código PHP para la creación del identificador
3.2. CAPTURA DEL IDENTIFICADOR A TRAVÉS DE ATAQUES XSS
Si una página web presenta una vulnerabilidad XSS un atacante puede aprovecharla para ejecutar código que capture el contenido de la cookie y se lo envíe.
Imagen 3. Código Javascript para capturar la cookie de sesión
Para evitarlo se creó la etiqueta httponly, de modo que el navegador impide el acceso por medio de scripts a las cookies que tienen este atributo, aunque existen maneras de capturar el valor de la cookie aunque sea httponly a través del método TRACE.
Solución Activar la opción httponly en el servidor web. Deshabilitar el método TRACE.
3.3. FIJACIÓN DE SESIÓN
Este tipo de ataque sigue un camino distinto del resto, en vez de capturar un identificador de sesión valido, genera un identificador genuino (que no está asociado a ningún usuario por el momento) en el portal web afectado para, a continuación, tratar de que la víctima se autentique en el portal con él. De este modo, el atacante obtiene un identificador de un usuario autenticado que puede utilizar para realizar acciones en el portal afectado en nombre de la
...