Estoy solicitando un programa a través del sitio web de la organización X. Me conecté y me sorprendió encontrar una URL como esta:
https://www.whatever.org/application?session=80_CHARACTER_HASH
80 caracteres en [0-9a-f]
dan 16 combinaciones 80 = ~ 2.14 × 10 96 .
Así que eliminé el hash y recargué la página, he aquí que obtuve una respuesta 403 Unauthorized
. Cambiar el hash también causa un 403
. Por último, el hash cambia al volver a iniciar sesión, por lo que creo que es seguro asumir que se genera un hash, se almacena en la base de datos para el usuario y luego se agrega a la cadena de consulta y se verifica en la carga de la página para encontrar el registro de usuario correcto en la base de datos .
Todas las páginas dentro de las páginas específicas del usuario requieren que el parámetro session
sea correcto. No sé si / cuando caduque el inicio de sesión, no me he sentado inactivo para averiguarlo.
Para verificar que esto es un problema, abrí una nueva ventana de incógnito, copié / pegué la URL y tuve acceso a mi cuenta e información de la aplicación.
Algunos problemas que se me ocurren:
- Copia / pega tu sesión en vivo mediante el uso compartido de URL
- La URL podría ser forzada por la fuerza bruta (aunque sería bastante difícil encontrar un hash válido)
- La URL está en varios registros (firewall, servidor, servicios de agregación de terceros, etc.)
¿Cuáles son los riesgos de almacenar la sesión de un usuario en los parámetros de la cadena de consulta?