Exposition du jeton dans l'URL
Un jeton de session dans une URL est un identifiant dans un fichier journal.
Qu'est-ce que Exposition du jeton dans l'URL?
Placer un jeton de session dans une URL entraîne une fuite d'une valeur qui authentifie celui qui le détient. Les URL atterrissent dans les journaux d'accès au serveur et au CDN, dans l'historique du navigateur, dans les déployeurs d'aperçu des liens et dans l'en-tête Referer envoyé aux actifs tiers. Vous récolterez des jetons en direct à partir d’un vidage de référent analytique et lirez les documents privés d’une victime sans mot de passe impliqué. Ensuite, vous déplacez le jeton dans un en-tête Set-Cookie avec HttpOnly , Secure et SameSite=Strict , et invalidez chaque jeton qui a déjà fui, car la correction du code ne révoque pas ce que les attaquants ont collecté.
Ce que vous apprendrez dans Exposition du jeton dans l'URL
- Reconnaître que toute valeur qu'un attaquant pourrait rejouer pour s'authentifier en tant qu'utilisateur (jeton de session, clé API, jeton de réinitialisation, paramètre d'URL signée) appartient à un cookie ou à un en-tête, jamais à une URL.
- Comprendre la différence de surface de fuite entre les URL (consignées, transmises, enregistrées par de nombreuses parties) et les cookies (canal navigateur-serveur uniquement)
- Appliquer le modèle de cookie HttpOnly + Secure + SameSite=Strict pour les jetons de session et les authentifiants équivalents
- Invalidez chaque jeton de session qui a déjà été divulgué dans les journaux et les référents, car la correction du code ne révoque pas rétroactivement les jetons que les attaquants ont déjà récoltés.
- Auditez chaque générateur d'URL (connexion par lien magique, URL de partage signées, jetons de téléchargement, URL de réinitialisation de mot de passe, rappels OAuth) pour les authentifiants qui doivent être déplacés de l'URL.
Exposition du jeton dans l'URL — Étapes de la formation
-
Regarder une connexion
Bob s'est penché sur Corveil, une application d'espace de travail partagé sur laquelle les entreprises gèrent leurs documents. Avant de chercher un moyen d'entrer, il souhaite voir exactement ce que fait l'application lorsque quelqu'un se connecte. Il crée un compte jetable afin de pouvoir se connecter en tant que lui-même et surveiller chaque étape. Il commence sur la page de connexion.
-
Connectez-vous et suivez la redirection
Bob se connecte à son compte jetable, comme le ferait n'importe quel utilisateur. Son gestionnaire de mots de passe remplit les informations d'identification enregistrées. Corveil le connecte et le redirige vers le tableau de bord de son espace de travail. Le navigateur atterrit sur la page vers laquelle il l'a envoyé.
-
Le jeton est dans la barre d'adresse
Bob est maintenant sur son tableau de bord et quelque chose lui saute aux yeux : la connexion a déposé son jeton de session directement dans l'URL. Cette chaîne représente l’intégralité de sa session de connexion. Il n’a pas besoin de s’introduire dans quoi que ce soit. Il a juste besoin des endroits où ces URL s'accumulent.
-
Récoltez les journaux de référence
Bob n'envoie jamais à Corveil une seule requête malveillante. Au lieu de cela, il achète un mois de journaux de référence auprès d'un revendeur d'analyses, le genre de fournisseur dont la balise de suivi se trouve sur le tableau de bord de Corveil et enregistre discrètement l'URL de référence complète de tous ceux qui la chargent. Il ouvre un terminal à côté du navigateur et récupère ce flux pour les liens de connexion au tableau de bord.
-
Rejouer une session volée
Bob choisit une victime dans la décharge, Maya Okafor, et prend son jeton de session. Il pointe le testeur d'API vers l'API du document de Corveil et transporte son jeton volé dans un en-tête Cookie, exactement comme le ferait son navigateur. Si le serveur l'accepte, il lit l'espace de travail privé de Maya sans jamais connaître son mot de passe.
-
Sa séance est la sienne
Le serveur a pris le jeton volé comme une véritable connexion et a répondu. Bob lit désormais les documents privés de Maya à partir d'un simple appel API, sans compte propre ni mot de passe.
-
Contrôle des connaissances
Bob peut faire cela pour des milliers d'utilisateurs à la fois, à partir des journaux qu'il a achetés. Expliquez précisément pourquoi un jeton dans une URL est bien pire que des données ordinaires dans une URL.
-
L'alerte de sécurité
Vous possédez le service de connexion de Corveil. Du jour au lendemain, la détection a signalé une série de sessions en cours de relecture à partir d'emplacements inconnus et vous a envoyé le résultat par courrier électronique. Lisez ce qu'il a détecté, puis ouvrez le code.
-
Ouvrez le gestionnaire de connexion
Le gestionnaire qui termine la connexion et redirige l'utilisateur vers son tableau de bord est ce que vous devez modifier. Ouvrez-le et regardez comment il crée la redirection.
-
Repérez la fuite
Le gestionnaire crée une nouvelle session, puis colle son identifiant directement dans la chaîne de requête de la cible de redirection. Le navigateur suit cette URL et à partir de ce moment, le jeton est partout où va l'adresse.
Couverture des référentiels de sécurité
OWASP Top 10
- A07:2025 Authentication Failures
- A09:2025 Security Logging and Alerting Failures
- A07:2021 Identification and Authentication Failures
- A09:2021 Security Logging and Monitoring Failures
CWE
- CWE-598 Use of GET Request Method With Sensitive Query Strings
- CWE-532 Insertion of Sensitive Information into Log File
MITRE ATT&CK
- T1539 Steal Web Session Cookie
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security