Categories: All - sesión - seguridad - soluciones - ataques

by Raúl Méndez Jiménez 3 years ago

567

Gestión de Sesiones

La gestión de sesiones en aplicaciones web es crucial para la seguridad, ya que diversos ataques pueden comprometer la integridad de las mismas. Entre los ataques más comunes se encuentran la captura del identificador de sesión mediante XSS, la predicción de sesiones a través de fuerza bruta, y la interceptación de tráfico mediante herramientas como Wireshark.

Gestión de Sesiones

Gestión de Sesiones

The main purpose of timelines is to display a series of actions within a particular time interval. Timelines can cover a bigger time period, they should not be very detailed. Howbeit, it is possible to add images, data, or figures.

Ataques

Errores en cierre de sesión

No reutilizar los identificadores de sesión

Invalidar los identificadores de sesión

Acceso a sesiones no cerradas via histórico de webs
Soluciones

Subtopic

Activar la opción secure en cookies

Interceptar tráfico de conexiones

Wireshark

Asociar identificador con información de usuario única

Permitir únicamente identificador de cookies

Renovar el identificador

Generación de identificador genuino

El atacante dispone de un identificador de sesión asociado a la víctima

La víctima realiza la petición HTTP que le indicó el atacante e inicia sesión en el portal con el identificador de sesión

El atacante elabora una petición HTTP que incluye el identificador de sesión y se lo hace llegar a la víctima

El atacante realiza una petición HTTP para obtener identificador

Captura del identificador por XSS
Soluciones:

Activar httponly

Ejecutar código via XSS y obtener el contenido de la cookie
Solución: aleatorización y longitud del identificador de sesión (PHP)

Hash 16/20 bytes creado a partir de cadena de texto compuesta por:

session.entropy_length

Datos aleatorios

Información del tiempo de ejecución

Dirección remota de cliente HTTP

Generación de identificador váliudo por medio de fuerza bruta

Configuración segura de Frameworks web

JAVA

ejemplo de código en la web de OWASP

método setMaxAge.

JSESSIONID, es no persistente

función getCreationTime

session-timeout del fichero web.xm

método RemoteAddr

tracking-mode de web.xml

session.invalidate(); session=request.getSession(true);

configurable en el servidor HTTP

http-only de web.xml

secure del apartado cookie-config de web.xml

security-constraint del archivo web.xml

HttpSession

Almacenar y recuperar la información de la sesión

ASP.NET

SessionIDManager

Request.UserHostAddress

opción cookieless de sessionState

ASP.NET_SessionId

httpOnlyCookies

requireSSL

método Session.Abandon

cookie de sesión ASP.NET_SessionId es no persistente

función DateTime

timeout de sessionState.

Session state

Se puede establecer y leer la información de sesión

PHP
Configuración segura

Aspectos propios

Restringir el acceso al directorio session.save_path

Errores de cierre de sesión

Invalidar y no reutilizar los identificadores de sesión

session.destroy

Utilizar cookies no persistentes

Establecer un tiempo máximo de validez de sesión

session.cookie_lifetime

Establecer un timeout de sesión

session.gc_maxlifetime,

Eavesdropping

Utilizar la opción secure en las cookies

session.cookie_secure

Utilizar el protocolo HTTPS

Fijación de sesión

Asociar el identificador a información del usuario única

$_SERVER['REMOTE_ADDR']

Permitir únicamente identificador en cookies

session.use_only_cookies

Renovar el identificador al autenticarse o asignarlo despúes de la autenticación

session_regenerate_id

Captura de identificador via XSS

Deshabilitar TRACE

Cookies solo accesibles desde HTTP

Activar session.cookie_httponly

Predicción de sesión

Aleatorización y longitud suficiente del identificador de sesión

session.entropy_file y session.entropy_length

Array $_SESSION

«Serializa» el contenido de $_SESSION y lo almacena

Procesa el resto de la página PHP

Añade la cookie de sesión

Procesa este archivo y guarda en el array $_SESSION las variables

Busca un archivo en el directorio session.save_path cuyo nombre contiene el identificador

Lee el identificador de sesión

Almacena los datos de cada sesión en un fichero definido por la variable session.save_path

Identificador de Sesiones

Add date here.

HTTP

Add the event here.

Identificador único en cada petición, mediante cookies
No está orientado a conexiones

You can add a few highlights here or if you want to add detailed description you can use the Notes feature.