web-dev-qa-db-fra.com

Pourquoi le vol de cookies n'est-il pas suffisant pour s'authentifier?

J'ai essayé d'exporter tous mes cookies via l'extension `` Modifier ce cookie '' sur une page de connexion qui utilise l'authentification par cookie. Pendant la déconnexion, j'ai essayé d'insérer ces cookies en espérant que je serais connecté, mais rien ne s'est produit.

Après avoir cherché, j'ai appris que les cookies envoyés sont sous forme cryptée. Mais la page n'utilisait aucun cryptage TLS. Suis-je en train de manquer quelque chose?

EDIT: J'ai essayé d'utiliser les mêmes cookies tout en connecté c'est-à-dire exporté tous les cookies et importé sur une fenêtre de navigation privée, mais rien ne s'est produit.
De plus, ce type d'attaque ne semble pas fonctionner sur la plupart des sites populaires comme Google, Facebook, etc. Alors, comment protègent-ils contre de telles attaques?

45
Kartikey singh

Techniquement, même si le contenu du cookie devait être crypté, si les cookies sont correctement copiés dans le nouveau navigateur et que le nouveau navigateur envoie les mêmes en-têtes HTTP (même chaîne d'agent utilisateur, le référent est comme prévu, l'ordinateur a la même adresse IP, et tous les autres en-têtes que le serveur aurait pu précédemment stocker et comparer), le serveur théoriquement ne pourrait pas différencier entre le navigateur d'origine et le nouveau navigateur.

Je suppose que vous essayez de copier les cookies d'un site qui vous connecte automatiquement à chaque fois que vous ouvrez votre navigateur et que vous ne vous êtes pas déconnecté.

Certains sites pourraient utiliser d'autres moyens pour détecter s'il s'agit d'un cookie/session volé, mais c'est un bataille perdue car tous ceux-ci peuvent encore être usurpés Par exemple:

  • Vérifiez si l'adresse IP a changé
  • L'agent utilisateur est-il le même
  • Vérifiez si le référent est logique
  • Tout autre en-tête HTTP envoyé par le navigateur

Pour répondre à votre question, vous devriez pouvoir le faire fonctionner si vous avez affaire à un site de connexion automatique et que vous ne vous êtes pas déconnecté. Assurez-vous que tous les en-têtes HTTP que votre nouveau navigateur envoie sont les mêmes , que l'adresse IP est la même, le référent est celui attendu, le même agent utilisateur.

Notez que le service que vous utilisez utilise peut-être également un deuxième cookie que vous avez oublié de copier et crée ainsi une anomalie et vous expulse.

57
Wadih M.

Le contenu d'un cookie est défini par l'application et il existe toutes sortes de façons de les utiliser. Voici une courte liste de quelques-unes des raisons possibles pour lesquelles votre effort a échoué.

  1. Le cookie est lié à l'adresse IP, à l'empreinte digitale de l'appareil ou à d'autres données non liées aux cookies que vous n'avez pas capturées.
  2. Le cookie d'origine contient une expiration et il est passé.
  3. Le cookie est à usage unique, c'est-à-dire que le serveur fait tourner la valeur à chaque demande/réponse et invalide toute valeur de cookie qui a déjà été utilisée.
  4. Le cookie était lié à une session qui n'existe plus sur le serveur (potentiellement parce que vous vous êtes déconnecté).
  5. Le cookie est associé à un élément caché dans la page (par exemple un jeton CSRF) et vous n'avez pas capturé ou recréé cette valeur.
  6. Le serveur est équilibré en charge, avec l'état de session dans proc et un mécanisme d'adhérence de session temporaire appliqué par l'équilibreur de charge. Dans votre nouvelle session, votre client s'est vu attribuer un nœud différent dans la batterie de serveurs où la session n'existe pas.
  7. Le serveur Web utilise un moteur de règles pour détecter les activités suspectes et votre cookie usurpé a été présenté hors séquence ou à un moment inattendu.
  8. Les cookies étaient bien, mais vous avez gâché d'autres détails, tels que l'en-tête du référent.
32
John Wu
  1. Les cookies eux-mêmes peuvent avoir été signés ou cryptés, pas la connexion qui les a fournis.
  2. Le serveur peut avoir supprimé la session de sa base de données lorsque vous vous êtes déconnecté.
30
user169249

Comme mentionné, lorsque vous vous êtes déconnecté, le serveur a invalidé le cookie que vous venez de voler, ce qui le rend inutile pour essayer de faire semblant d'être vous-même.

Donc, si vous voulez vraiment tester en essayant de voler vos cookies pour tester ce qui est nécessaire pour voler votre session de ce service Web particulier, vous devrez exporter vos cookies et les importer dans un nouveau navigateur/mode navigation privée sans vous déconnecter de votre onglet du navigateur d'origine.

Mais, juste pour noter, les cookies sont également souvent comparés à une foule d'autres critères. Nous pouvons vérifier l'IP, l'agent utilisateur, etc. https://wingsdream.wordpress.com/tag/mitigating-http-session-hijacking/

Nous pourrions également concevoir des stratégies encore plus intelligentes, comme un système de rafraîchissement continu des jetons ou des empreintes digitales du navigateur, pour vérifier que la personne en possession de ce cookie est la personne à qui nous avons donné ce cookie et qu'il n'a pas été volé. Ainsi, même si vous "volez" les cookies d'authentification, vous ne pourrez toujours pas vous authentifier avec eux.

8
Kallmanation

La session a été invalidée sur le serveur. Les sites Web sécurisés font cela pour empêcher exactement le type d'attaque que vous décrivez. Lorsque vous vous déconnectez, le serveur supprime la session de sa propre base de données de sorte que même si les mêmes cookies de session ont été utilisés à nouveau, ils ne seront pas acceptés par le serveur. C'est pourquoi il est important de se déconnecter correctement du site Web au lieu de simplement fermer votre navigateur, même si votre navigateur ne conserve pas les cookies.

Les sites Web non sécurisés peuvent laisser la session traîner sur le serveur de sorte que même une fois que vous vous êtes "déconnecté" (c'est-à-dire supprimé les cookies de votre navigateur), les mêmes cookies de session peuvent toujours être réutilisés plus tard.

Essayez de répéter votre expérience, mais cette fois, ne vous déconnectez pas au préalable. Connectez-vous au site Web, puis supprimez manuellement les cookies de votre navigateur. Si vous visitez à nouveau le site Web sans les cookies, vous ne serez pas connecté. Maintenant, restaurez les cookies et essayez de visiter à nouveau le site Web, et vous devriez être connecté à nouveau.

4
Micheal Johnson

Pour les sites simples, la copie des cookies devrait suffire. Un site plus "sécurisé" épingle votre session comme d'autres l'ont mentionné à d'autres facteurs tels que l'IP.

Il y a aussi la possibilité qu'il existe du code javascript qui vérifie d'autres valeurs persistantes comme le stockage local/de session, IndexDB et ainsi de suite. Essayez de les regarder. Il serait également possible qu'il s'agisse d'une application de site unique où toutes les données sont chargées via ajax et oAuth avec une forme de stockage persistant utilisé. Aucun cookie n'est nécessaire car le secret est stocké ailleurs.

1
Fritz

Dans de nombreux cas, voler des cookies EST suffisant pour s'authentifier, il est probable que vous ayez fait quelque chose de mal.

Remarque, TLS/cryptage ne sont pas pertinents ici. Au moment où vous lisez le cookie de l'en-tête, le trafic a déjà été décrypté. Tout chrome montre que vous êtes déjà déchiffré, le chiffrement est entièrement transparent.

Pour répondre à la question. Les schémas d'authentification varient. Parfois, ils n'utilisent que des cookies, auquel cas leur vol sera suffisant. Parfois, ils n'utilisent pas du tout de cookies. Parfois, ils utilisent un mélange de cookies et d'autres données.

Il existe une infinité de schémas de cookies. Il n'y a pas de réponse simple pour chacun d'eux.

0
Matviy Kotoniy