Question:
Pourquoi le vol de cookies n'est-il pas suffisant pour s'authentifier?
Kartikey singh
2018-01-29 23:19:41 UTC
view on stackexchange narkive permalink

J'ai essayé d'exporter tous mes cookies via l'extension "Modifier ce cookie" sur une page connectée qui utilise l'authentification par cookie. En étant déconnecté, j'ai essayé d'insérer ces cookies en espérant que je serais connecté, mais rien ne s'est passé.

Après la recherche, j'ai appris que les cookies envoyés étaient sous forme cryptée. Mais la page n'utilisait aucun cryptage TLS. Est-ce que je manque quelque chose?

MODIFIER: J'ai essayé d'utiliser les mêmes cookies en connecté , c'est-à-dire que j'ai exporté tous les cookies et importé dans une fenêtre de navigation privée, mais rien ne s'est passé.
De plus, ceci type d'attaque ne semble pas fonctionner sur les sites les plus populaires comme Google, Facebook, etc. Comment se protègent-ils contre de telles attaques?

La déconnexion ne doit pas seulement supprimer les cookies mais invalider la session en cours, c'est une bonne pratique.Vous ne devriez donc pas pouvoir réutiliser les cookies de session après vous être déconnecté.
Comment êtes-vous parvenu à devenir "déconnecté"?Avez-vous utilisé une session de navigateur privé, avez-vous simplement supprimé les cookies après les avoir exportés ou avez-vous utilisé un bouton de déconnexion sur la page Web?
Les réponses ci-dessous répondent également à votre nouvelle modification.
Sept réponses:
Wadih M.
2018-01-30 01:40:54 UTC
view on stackexchange narkive permalink

Techniquement, même si le contenu du cookie devait être chiffré, 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, référent est comme prévu, l'ordinateur a la même adresse IP adresse, et tous les autres en-têtes que le serveur aurait pu stocker auparavant et comparer), le serveur ne serait théoriquement pas capable de faire la différence entre le navigateur d'origine et le nouveau navigateur .

Je suppose que vous essayez de copier le ou 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 une 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 a un sens
  • Tout autre en-tête HTTP qui le navigateur envoie

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 envoyés par votre nouveau navigateur sont les mêmes, que l'adresse IP est la même, que le référent est celui attendu, le même agent utilisateur.

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

Très bonne réponse.La seule chose qui me manque est le délai d'expiration - même si la demande est exactement la même, la session pourrait avoir expiré entre les deux demandes.
Certains utilisent même un nonce supplémentaire pour vérifier que vous avez réellement utilisé le lien de la page précédemment chargée, mais cela peut également être volé et atténue principalement xss
C'est pourquoi la validation de session se fait côté serveur.Si votre jeton a expiré, il n'y a aucun moyen pour vous de simuler une session valide, à moins que vous n'ayez un accès direct au stockage de jetons (mais à ce stade, il y a BEAUCOUP plus de problèmes que le simple vol de cookies).
Vous pouvez commencer par envoyer exactement les mêmes en-têtes, puis effacer ceux dont vous n'avez pas besoin.J'ai récemment créé une application qui s'interface avec l'API d'un site Web que j'avais rétro-ingénierie.Il s'avère que je n'avais besoin que du cookie de session, du référent et du jeton CSFR (pour les messages).Je ne sais même pas quel user agent j'envoie, probablement "Java".
John Wu
2018-01-30 08:53:42 UTC
view on stackexchange narkive permalink

Le contenu d'un cookie est défini par l'application et il existe toutes sortes de façons de l'utiliser. Voici une courte liste de certaines 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-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 pivoter la valeur à chaque demande / réponse et invalide toute valeur de cookie qui a déjà été utilisé.
  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 masqué 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 un état de session dans proc et un mécanisme de persistance 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 de séquence ou à un moment inattendu.
  8. Les cookies étaient corrects, mais vous avez gâché un autre détail, comme l'en-tête du référent.
user169249
2018-01-29 23:26:44 UTC
view on stackexchange narkive permalink
  1. Les cookies eux-mêmes ont peut-être été signés ou cryptés, et non la connexion qui les a délivrés.
  2. Le serveur a peut-être supprimé la session de sa base de données lorsque vous vous êtes déconnecté.
Notez également que les sessions sont parfois liées à plus que le cookie, comme l'agent utilisateur ou l'adresse IP.Si ceux-ci changent, le cookie peut également ne pas fonctionner.
Un seul d'entre eux est vrai.
@micheal-johnson, pourquoi un seul?Un serveur peut maintenir des sessions et signer des cookies contenant des informations de session ...
@Naim Les cookies signés ou cryptés n'empêcheront pas une attaque impliquant la copie directe des cookies.
@Naim Le chiffrement des cookies empêche un attaquant de voler des informations sensibles qui pourraient être contenues dans les cookies, mais cela ne devrait pas être nécessaire aujourd'hui car les cookies doivent toujours être envoyés via HTTPS et ne doivent pas contenir d'informations sensibles.
@Naim La signature des cookies permet au serveur de vérifier qu'ils n'ont pas été modifiés (des sites mal conçus stockaient parfois l'ID utilisateur dans le cookie, et l'utilisateur pouvait accéder au compte de quelqu'un d'autre en changeant l'ID enregistré) mais si vos cookies ne stockent queun identifiant de session (qui est tout ce qu'ils doivent stocker), puis ce n'est pas nécessaire.Le fait que les cookies soient signés ou cryptés indique une mauvaise conception ailleurs.
Pourriez-vous s'il vous plaît développer sur # 1?Je ne vois pas comment crypter / signer le contenu du cookie peut empêcher le [détournement de session] (https://en.wikipedia.org/wiki/Session_hijacking) (ce qui est essentiellement ce que l'OP a essayé de faire sur lui-même).
@Bergi # 1 était une réponse sur la façon dont les cookies peuvent être sécurisés sans connexion tls / ssl.Certes, cela n'empêche pas le détournement de session
@micheal-johnson C'est vrai, cela ne protège pas le détournement.À propos de HTTPS, tous les sites ne peuvent pas se le permettre ... Je ne suis pas d'accord pour dire que signer des cookies est une mauvaise conception, cela dépend de l'application.
@Naim Vous pouvez obtenir des certificats HTTPS gratuitement.Mais même sans HTTPS, un cookie crypté n'empêchera pas ce type de piratage, et les informations sensibles ne devraient pas être stockées dans un cookie de toute façon (juste un identifiant d'utilisateur ou de session) donc le cryptage du cookie lui-même ne devrait toujours pas être nécessaire.
@micheal-johnson Je suis d'accord que cela n'empêche pas le piratage, # 1 était un commentaire sur la façon dont un cookie peut être livré dans un environnement sécurisé sans connexion SSL
@Naim Ce n'est pas particulièrement pertinent pour la question.
Kallmanation
2018-01-30 01:40:38 UTC
view on stackexchange narkive permalink

Comme mentionné, lorsque vous vous êtes déconnecté, le serveur a invalidé le cookie que vous venez de voler, le rendant inutile d'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 à ce service Web particulier, vous devrez exporter vos cookies et les importer dans un nouveau navigateur / mode de navigation privée sans vous déconnecter dans l'onglet de votre navigateur d'origine.

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

Nous pourrions également concevoir des stratégies encore plus intelligentes, comme un système d'actualisation continue 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.

Micheal Johnson
2018-01-30 14:48:41 UTC
view on stackexchange narkive permalink

La session a été invalidée sur le serveur. Les sites Web sécurisés le font 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 sont à nouveau utilisés, ils ne sont 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 afin que même une fois que vous vous êtes "déconnecté" (c'est-à-dire que vous avez supprimé les cookies de votre navigateur), les mêmes cookies de session peuvent encore être utilisés ultérieurement.

Essayez de répéter votre test, mais cette fois, ne vous déconnectez pas préalablement. 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 à nouveau de visiter le site Web, et vous devriez vous reconnecter.

Fritz
2018-01-31 04:05:18 UTC
view on stackexchange narkive permalink

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 est également possible qu'il y ait du code javascript qui vérifie d'autres valeurs persistantes comme le stockage local / de session, IndexDB, etc. sur. Essayez de les regarder. Il serait également possible qu'il s'agisse d'une application à site unique où toutes les données sont chargées via ajax et oAuth avec une forme de stockage persistant. Aucun cookie nécessaire car le secret est stocké ailleurs.

Matviy Kotoniy
2018-02-01 13:27:23 UTC
view on stackexchange narkive permalink

Dans de nombreux cas, voler des cookies EST suffisant pour vous authentifier, il y a de fortes chances 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échiffré. Tout ce que Chrome vous montre est 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 les voler suffira. 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 systèmes de cookies. Il n'y a pas de réponse simple pour tous.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...