Seguridad de sesiones PHP (Session fixation)

Session fixation (fijación de sesión) es un método de Session hijacking (robo de sesión) un poco especial, ya que, si normalmente en el robo de sesión se intenta conseguir el identificador de sesión de un usuario ya autenticado, la fijación de sesión se basa en asignar un identificador de sesión conocido a un usuario antes de que se autentique.


Por hacer una analogía: el robo de sesión es como intentar robar la clave de una tarjeta de crédito, mientras que la fijación de sesión es intentar que la víctima cambie su clave a un número dado (y por lo tanto conocido) por el atacante.

Lo malo de este ataque es que es muy fácil de realizar. Lo bueno, es que es muy fácil de prevenir.

Realización del ataque


Existen distintas formas de propagarlas entre páginas de un mismo sitio web. Una de ellas, la URL, es la más fácil de atacar, supongamos que la página web atacada utiliza el nombre de sesión por defecto en PHP: PHPSESSID. El atacante sólo tiene que crear un enlace a la página web objetivo de esta forma: Después, sólo tiene que hacer que el usuario al que quiere atacar utilice ese enlace para acceder a la página web. Esto se puede conseguir de varias formas: enviándole el enlace por email, a través de una red social o, incluso, sin que el usuario se dé cuenta, haciendo una redirección desde una página web del atacante.

Una vez que el usuario utiliza este enlace, le está diciendo a la página web que su identificador de sesión es 123456. PHP al comprobar que no existe una sesión con ese identificador, la crea y se la asigna al usuario. Si este se autentica en el sitio, el atacante, que conoce su identificador de sesión (123456), puede hacerse con su cuenta haciéndose pasar por él.
Nota: aunque la página web utilice cookies para la propagación del identificador de sesión, normalmente la configuración de PHP acepta el identificador en la URL (después lo propaga a través de cookies pero cuando ya ha creado la sesión con ese identificador). También hay que tener en cuenta que un atacante puede (con técnicas mucho más avanzadas y aprovechando errores en las directivas de seguridad de los navegadores) realizar este ataque insertando una cookie al usuario. Aunque es la forma más sencilla, este ataque no se limita sólo a la propagación por URL.

Métodos de Prevención


Si bien es un ataque que se puede realizar fácilmente, la prevención es igualmente fácil. Podemos tomar las siguientes medidas:
  • Utilizar únicamente cookies para la propagación del identificador de sesión. Esta medida no anula el peligro, pero hace más difícil el ataque (y muchos otros). En PHP se consigue así:
  • Regenerar los identificadores de sesión para sesiones nuevas. Esto se consigue poniendo una "marca" en las sesiones de la página web. Cada vez que se hace un session_start(), si la sesión no tiene la "marca", cambiamos su identificador por uno nuevo (session_regenerate_id(true);) y desconocido para el atacante. Ejemplo:
  • Cambiar el identificador de sesión siempre que un usuario cambie su estado (autenticado, registrado, ...). Con la anterior medida de protección puede parecer que ya estamos protegidos, pero un atacante puede entrar en la página web, generar una sesión con "marca" y después mandar el identificador de esa sesión al usuario atacado. Así el usuario atacado acabaría con una sesión con "marca" y conocida por el atacante. Por eso, se debe regenerar el identificar de sesión siempre que un usuario realice una acción que le obligue a autenticarse. Ejemplo:
Nota: es muy importante que sea session_regenerate_id(true); y no session_regenerate_id(); ya que si no eliminamos la sesión antigua, estamos haciendo más fácil los ataques contra la página web al dejar múltiples sesiones válidas abiertas en el servidor.
Nombre

Accesibilidad Actualidad Adobe Flash AirPods Amazon Amazon Music Unlimited Amazon Protect AMD Android Android 6.0 Marshmallow Android Auto Android Nougat Android Things Android Wear Animación Anti-Virus Aplicaciones Aplicaciones Web App Store Apple apple ipad 3 Audio AVG Base64 Bases de datos Black Friday BlackBerry BlackBerry 10 Blizzard Blogger Bromas Ciencia Clonaciones CMS Codificación Código Fuente Códigos Compras por Internet Consolas Contraseñas Cookies Cross site scripting Darknet Dart DDoS Deface Defacing Desarrolladores Diseño Web DOS Drivers Drones Experiencia Exploit Extensiones Exynos 9 Facebook Facebook Events Facebook Messenger fingerprinting Firefox 12 Fraudes Gadgets Gaming General GitHub Gmail Google Google Allo Google Analytics Google App Maker Google Chrome Google Drive Google Flights Google Imágenes Google Maps Google Pixel Google Play Google+ Gráficas Hacker Hackers Hacking Hacks Hardware HD Herramientas HI5 Hijacking htaccess HTML humans.txt Humor Gráfico Infección Informática Ingeniería Social Instagram Intel Internet Inyeccion iOS iOS 10 ip iPad 3 Iphone iPhone 7 iPhone 8 Javascript Juegos Kurt Cobain Land LinkedIn Linux Live HTTP headers Malware Mantenimiento Memorias Memorias USB MicroSD Microsoft Móviles Mozilla Firefox Música MySQL Navegadores Nexus Nintendo Nintendo NX Nintendo Switch Notebooks Noticias NVIDIA Ocio Opera Ordenador Overclocking Passwords PayPal Personal Phishing PHP Phreaking Plugins Portatiles Privacidad Procesadores Programación Programas Qualcomm Ransomware Realidad Virtual Redes Inalambricas Redes Sociales Redes y Conexiones Routers Samsung Samsung Galaxy Note 8 Samsung Galaxy S8 SD Seguridad Seguridad Informática SEO Servicios Web Sesiones Web Sistemas Operativos Skype Smartphones SMTP Flood Snap Inc Snapchat Snapdragon Snooping Software Sonico Sony Sony Xperia Source routing Spectacles Spotify Steam Steve Jobs TeamViewer Teclado Tecnología Telefonía Telegram Tips Tp-Link Tráfico Web Trailers Trasteando Troyanos Trucos Tutoriales Twitter Uber Ultrabooks USB Utilidades VBScript vBulletin Video Streaming VideoJuegos Videos Vídeos Virus Vulnerabilidades Vulnerabilidades Web Web WhatsApp Wifi Windows Windows 10 Windows 7 Windows 8 Windows 8.1 Windows Live Windows XP WordPress XBOX 360 XSS Yahoo! Youtube
false
ltr
item
Carluys Blog: Seguridad de sesiones PHP (Session fixation)
Seguridad de sesiones PHP (Session fixation)
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6Uqnl-Cuf3HrW-tnvYgCUhyphenhyphend1COZqwXIvnYNbQnUNIABF2PsG92TKJpimp-l5gZZDlEV2Z8TtTQmVVhBWpKssxDoGQiyEI3mq90oxuRxM4ePN8xohd3uT1UHJ9hI2niR3xWVbsA6gfZCp/s400/sesion-fixation-carluys.png
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6Uqnl-Cuf3HrW-tnvYgCUhyphenhyphend1COZqwXIvnYNbQnUNIABF2PsG92TKJpimp-l5gZZDlEV2Z8TtTQmVVhBWpKssxDoGQiyEI3mq90oxuRxM4ePN8xohd3uT1UHJ9hI2niR3xWVbsA6gfZCp/s72-c/sesion-fixation-carluys.png
Carluys Blog
https://carluys.blogspot.com/2014/05/seguridad-de-sesiones-php-session.html
https://carluys.blogspot.com/
https://carluys.blogspot.com/
https://carluys.blogspot.com/2014/05/seguridad-de-sesiones-php-session.html
true
5177014300366239033
UTF-8
Not found any posts Not found any related posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU Tag ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Contents Ver también relacionados Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS CONTENT IS PREMIUM Please share to unlock Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy