☁️ HackTricks 云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在一个**网络安全公司**工作吗?想要在 HackTricks 中看到你的**公司广告**吗?或者想要**获取最新版本的 PEASS 或下载 HackTricks 的 PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
- 发现我们的独家 NFT 收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
- 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
- **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向 [hacktricks 仓库](https://github.com/carlospolop/hacktricks) 和 [hacktricks-cloud 仓库](https://github.com/carlospolop/hacktricks-cloud) 提交 PR 来分享你的黑客技巧**。
## 描述
如果攻击者能够**控制公司的子域或域名,或者在子域中找到 XSS 漏洞**,他将能够执行此攻击。
正如在 Cookie Hacking 部分中所指出的,当**将 cookie 设置为一个域(指定域)时,它将在该域和子域中使用**。
{% hint style="danger" %}
因此,**攻击者将能够在域和子域中设置特定的 cookie,类似于** `document.cookie="session=1234; Path=/app/login; domain=.example.com"`
{% endhint %}
这可能是危险的,因为攻击者可能能够:
* **将受害者的 cookie 固定到攻击者的帐户**,因此如果用户没有注意到,**他将在攻击者的帐户中执行操作**,攻击者可能会获取一些有趣的信息(检查用户在平台上的搜索历史记录,受害者可能在帐户中设置他的信用卡...)
* 如果**登录后 cookie 没有更改**,攻击者可以只是**固定一个 cookie**,等待受害者登录,然后**使用该 cookie 作为受害者登录**
* 如果**cookie 设置了一些初始值**(例如在 flask 中,**cookie** 可能会**设置**会话的 **CSRF 令牌**,并且该值在受害者登录后将保持不变),攻击者可以设置这个已知值,然后滥用它(在这种情况下,攻击者可以让用户执行 CSRF 请求,因为他知道 CSRF 令牌)。
## Cookie 顺序
当浏览器接收到两个具有相同名称的 cookie,**部分影响相同范围**(域、子域和路径)时,**浏览器将在两个 cookie 的值都有效的情况下发送两个值的 cookie**。
根据谁拥有**最具体的路径**或哪个是**最旧的**,浏览器将**首先设置 cookie 的值**,然后设置另一个值,如下所示:`Cookie: iduser=MoreSpecificAndOldestCookie; iduser=LessSpecific;`
大多数**网站只会使用第一个值**。因此,如果攻击者想要设置一个 cookie,最好在另一个 cookie 被设置之前设置它,或者使用更具体的路径设置它。
{% hint style="warning" %}
此外,能够在更具体的路径中**设置 cookie**非常有趣,因为你将能够让**受害者使用他的 cookie,除了在发送恶意 cookie 的特定路径之外**。
{% endhint %}
## 绕过保护
对此攻击的可能保护措施是,**Web 服务器不接受具有相同名称但具有不同值的两个 cookie 的请求**。
为了绕过攻击者在受害者已经获得 cookie 后设置 cookie 的情况,攻击者可以引起**cookie 溢出**,然后一旦**合法 cookie 被删除,设置恶意 cookie**。
{% content-ref url="cookie-jar-overflow.md" %}
[cookie-jar-overflow.md](cookie-jar-overflow.md)
{% endcontent-ref %}
另一个有用的**绕过**方法是对 cookie 的名称进行**URL 编码**,因为某些保护会检查请求中是否存在两个具有相同名称的 cookie,然后服务器将解码 cookie 的名称。
## Cookie 炸弹
Cookie Tossing 攻击也可以用于执行**Cookie 炸弹**攻击:
{% content-ref url="cookie-bomb.md" %}
[cookie-bomb.md](cookie-bomb.md)
{% endcontent-ref %}
## 防御措施
### 在 cookie 名称中使用前缀 `__Host`
* 如果 cookie 名称具有此前缀,它**只会在 Set-Cookie 指令中被接受**,如果它标记为 Secure,从安全来源发送,不包括 Domain 属性,并且具有设置为 / 的 Path 属性
* **这样可以防止子域强制将 cookie 强制到顶级域,因为这些 cookie 可以被视为“域锁定”**
## 参考资料
* [**@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/)
☁️ HackTricks 云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在一个**网络安全公司**工作吗?想要在 HackTricks 中看到你的**公司广告**吗?或者想要**获取最新版本的 PEASS 或下载 HackTricks 的 PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
- 发现我们的独家 NFT 收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
- 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
- **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass),或在 **Twitter** 上 **关注我** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向 [hacktricks 仓库](https://github.com/carlospolop/hacktricks) 和 [hacktricks-cloud 仓库](https://github.com/carlospolop/hacktricks-cloud) 提交 PR 来分享你的黑客技巧**。