Una sesión es el período de tiempo durante el cual es válida la autenticación de un usuario en un sitio. Las sesiones se crean porque solicitar las credenciales de usuario en cada solicitud será muy improductivo (ya que una sola página puede realizar decenas de requests de recursos específicos del usuario). Las sesiones se implementan a través de cookies u otros parámetros de solicitud, estos deben enviarse cada vez que el navegador solicita un contenido específico del usuario. El método utilizado actualmente es dar una string de identificación a un usuario. Este identificador se denomina token de sesión. La gestión de sesiones es muy sensible, ya que también es un mecanismo de autenticación.
El uso de tokens de sesión de un usuario para obtener acceso no autorizado a su cuenta se denomina «secuestro de sesión». Dado que los servidores web generalmente no tienen forma de saber qué solicitud que contiene un token válido es genuina y cuál no está autorizada, es difícil detectar un ataque de este tipo. El secuestro de sesiones puede provocar fugas o pérdidas de datos personales/confidenciales. Esta es la razón por la que comprender los métodos generales utilizados por los piratas informáticos para secuestrar sesiones es esencial tanto para los usuarios finales como para los desarrolladores.
Secuestro de sesión a través de transferencia insegura:
Al igual que las contraseñas, la transmisión de datos de identificación de sesión a través de HTTP no es segura. Un atacante puede llevar a cabo un ataque de hombre en el medio (MITM) para ver las cookies y otros datos confidenciales que se utilizan para mantener la sesión del usuario. El atacante puede utilizar inmediatamente estos datos para crear una sesión duplicada. El atacante permanecerá conectado hasta que el usuario cierre la sesión. Si el atacante continuará o no teniendo acceso a la cuenta de la víctima después de que la víctima haya cerrado la sesión, depende de la implementación de la gestión de la sesión. Por ejemplo, si el sitio es vulnerable con fijación de sesión (las mismas cookies para varias sesiones), el atacante tendrá acceso persistente a la cuenta del usuario.
Secuestro de sesión a través de XSS:
Una aplicación web que es vulnerable a secuencias de comandos de sitios cruzados y utiliza cookies para la gestión de sesiones también es vulnerable a ser utilizada como un medio para dirigirse a sus usuarios. Las cookies son accesibles de forma predeterminada a través de JavaScript en la página. El atacante puede explotar el XSS para ejecutar JavaScript que enviará las cookies al servidor del atacante.
Algunos sitios web otorgan una cookie de sesión a cada usuario, incluidos los usuarios invitados. La sesión del usuario se rastrea a través del estado de esa cookie. Una vez que un usuario inicia sesión desde un navegador, la cookie emitida a ese navegador se asocia con la sesión de ese usuario. En este caso, si existe una vulnerabilidad XSS, el atacante puede insertar su cookie de invitado en la sesión del usuario. Una vez que el usuario inicia sesión, el atacante también inicia sesión.
Secuestro de sesión a través de la fijación de sesión:
La fijación de sesión es una vulnerabilidad en la que se usa un solo conjunto de cookies en muchas sesiones para un solo usuario. Un atacante que tenga acceso físico al dispositivo del usuario puede copiar las cookies cuando el usuario cierra la sesión. Luego, el atacante puede editar las cookies en su navegador mediante el uso de un proxy de interceptación como BurpSuite . Cuando el usuario inicie sesión nuevamente, las cookies le darán al atacante acceso completo a la cuenta del usuario.
Secuestro de sesión a través de CSRF/XSRF:
La falsificación de requests entre sitios es un ataque que aprovecha la característica nativa de HTTP de enviar cookies de un sitio web a todas las requests a ese sitio web, independientemente de su origen. CSRF se puede explotar para restablecer la contraseña de un usuario a una contraseña especificada por el atacante. Esto lleva a que el usuario pierda el acceso a su cuenta. Si el sitio web no implementa las medidas de recuperación adecuadas, dicho ataque podría hacer que el usuario pierda el acceso a su cuenta de forma permanente.
Secuestro de sesión a través de WiFi AP no autorizado:
Un atacante puede crear un punto de acceso WiFi falso que coincida con el SSID de un punto de acceso WiFi genuino para engañar a los usuarios para que se conecten al AP y lo utilicen para iniciar sesión en sitios web. El atacante controla el servidor DNS del AP. Luego, el atacante puede modificar fácilmente las entradas de DNS para un sitio web que el usuario visita, lo que lleva al usuario a una página de inicio de sesión falsa. Este ataque también se puede realizar atrayendo a los usuarios a través de «WiFi de alta velocidad gratuito».
Consejos para los usuarios:
No hay mucho que un usuario pueda hacer para evitar que sus sesiones se vean comprometidas, aparte de las precauciones de seguridad habituales. Estas precauciones son: no usar WiFi público para trabajos confidenciales, cerrar sesión en sitios confidenciales inmediatamente después de su uso, evitar la reutilización de contraseñas, etc.
Sugerencias para desarrolladores: dado que el secuestro de sesiones se realiza principalmente mediante la explotación de una vulnerabilidad en el sitio, los desarrolladores pueden hacer mucho para prevenir tales ataques. Los desarrolladores deben:
- Use encabezados de protección CSP (política de seguridad de contenido) y XSS.
- Use la directiva «httponly» para las cookies de sesión para que JavaScript en el sitio no pueda acceder a ella. Entonces, incluso si el sitio es vulnerable a XSS, el token de sesión será seguro.
- Uso de la invalidación de cookies del lado del servidor al cerrar la sesión.
- Evitar la reutilización de cookies.
- Usando HTTPS y HSTS en su sitio.
- Uso de tokens anti-CSRF fuertes en acciones confidenciales como el cambio de contraseña.
Publicación traducida automáticamente
Artículo escrito por awasthi7xenextt y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA