☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une entreprise de **cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
- Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) **groupe Discord** ou le [**groupe telegram**](https://t.me/peass) ou **suivez-moi** sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
## Description
Si un attaquant peut **contrôler un sous-domaine ou le domaine d'une entreprise ou trouve un XSS dans un sous-domaine**, il pourra effectuer cette attaque.
Comme indiqué dans la section Cookies Hacking, lorsqu'un **cookie est défini pour un domaine (en le spécifiant), il sera utilisé dans le domaine et les sous-domaines.**
{% hint style="danger" %}
Par conséquent, **un attaquant sera en mesure de définir pour le domaine et les sous-domaines un cookie spécifique en faisant quelque chose comme** `document.cookie="session=1234; Path=/app/login; domain=.example.com"`
{% endhint %}
Cela peut être dangereux car l'attaquant peut être en mesure de :
* **Fixer le cookie de la victime sur le compte de l'attaquant** de sorte que si l'utilisateur ne remarque pas, **il effectuera les actions dans le compte de l'attaquant** et l'attaquant peut obtenir des informations intéressantes (vérifier l'historique des recherches de l'utilisateur sur la plateforme, la victime peut définir sa carte de crédit dans le compte...)
* Si le **cookie ne change pas après la connexion**, l'attaquant peut simplement **fixer un cookie**, attendre que la victime se connecte, puis **utiliser ce cookie pour se connecter en tant que victime**.
* Si le **cookie définit une valeur initiale** (comme dans Flask où le **cookie** peut **définir** le **jeton CSRF** de la session et cette valeur sera maintenue après la connexion de la victime), l'**attaquant peut définir cette valeur connue et ensuite l'exploiter** (dans ce scénario, l'attaquant peut ensuite faire effectuer une demande CSRF à l'utilisateur car il connaît le jeton CSRF).
## Ordre des cookies
Lorsqu'un navigateur reçoit deux cookies avec le même nom **affectant partiellement la même portée** (domaine, sous-domaines et chemin), le **navigateur enverra les deux valeurs du cookie** lorsque les deux sont valides pour la demande.
En fonction de celui qui a **le chemin le plus spécifique** ou de celui qui est **le plus ancien**, le navigateur **définira d'abord la valeur du cookie** puis la valeur de l'autre comme dans : `Cookie: iduser=MoreSpecificAndOldestCookie; iduser=LessSpecific;`
La plupart des **sites Web n'utiliseront que la première valeur**. Ainsi, si un attaquant veut définir un cookie, il est préférable de le définir avant qu'un autre ne soit défini ou de le définir avec un chemin plus spécifique.
{% hint style="warning" %}
De plus, la capacité à **définir un cookie dans un chemin plus spécifique** est très intéressante car vous pourrez faire travailler la **victime avec son cookie sauf dans le chemin spécifique où le cookie malveillant défini sera envoyé en premier**.
{% endhint %}
## Contournement de la protection
Une protection possible contre cette attaque serait que le **serveur Web n'accepte pas les demandes avec deux cookies avec le même nom mais deux valeurs différentes**.
Pour contourner le scénario où l'attaquant définit un cookie après que la victime ait déjà reçu le cookie, l'attaquant pourrait provoquer un **débordement de cookie** et ensuite, une fois que le **cookie légitime est supprimé, définir le malveillant**.
{% content-ref url="cookie-jar-overflow.md" %}
[cookie-jar-overflow.md](cookie-jar-overflow.md)
{% endcontent-ref %}
Un autre **contournement** utile pourrait être de **coder l'URL avec le nom du cookie** car certaines protections vérifient deux cookies avec le même nom dans une demande, puis le serveur décoder les noms des cookies.
## Bombe de cookies
Une attaque de Cookie Tossing peut également être utilisée pour effectuer une attaque de **Bombe de cookies** :
{% content-ref url="cookie-bomb.md" %}
[cookie-bomb.md](cookie-bomb.md)
{% endcontent-ref %}
## Défenses
### **Utilisez le préfixe `__Host` dans le nom du cookie**
* Si un nom de cookie a ce préfixe, il **ne sera accepté que** dans une directive Set-Cookie s'il est marqué Secure, a été envoyé depuis une origine sécurisée, ne comprend pas d'attribut Domain et a l'attribut Path défini sur /
* **Cela empêche les sous-domaines de forcer un cookie sur le domaine apex car ces cookies peuvent être considérés comme "verrouillés sur le domaine"**
## Références
* [**@blueminimal**](https://twitter.com/blueminimal)
* [**https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers**](https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers)
* [**https://github.blog/2013-04-09-yummy-cookies-across-domains/**](https://github.blog/2013-04-09-yummy-cookies-across-domains/)