hacktricks/pentesting-web/hacking-with-cookies/cookie-tossing.md

91 lines
5.8 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary>
2022-04-28 16:01:33 +00:00
支持HackTricks的其他方式
2022-04-28 16:01:33 +00:00
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **在Twitter上** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** 上关注我们**。
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
2022-04-28 16:01:33 +00:00
</details>
2023-08-03 19:12:22 +00:00
## 描述
2021-10-20 23:25:53 +00:00
如果攻击者能够**控制公司的子域或域**或者在子域中发现XSS漏洞他将能够执行此攻击。
2021-10-19 00:01:07 +00:00
正如在Cookies Hacking部分中指出的那样当**将cookie设置为一个域指定它它将在该域和子域中使用**。
2021-10-19 00:01:07 +00:00
{% hint style="danger" %}
因此,**攻击者将能够设置一个特定的cookie到域和子域中类似于** `document.cookie="session=1234; Path=/app/login; domain=.example.com"`
2021-10-19 00:01:07 +00:00
{% endhint %}
这可能很危险,因为攻击者可能会:
2021-10-19 00:01:07 +00:00
* **将受害者的cookie固定到攻击者的帐户**,因此如果用户没有注意到,**他将在攻击者的帐户中执行操作**,攻击者可能会获取一些有趣的信息(检查用户在平台上的搜索历史,受害者可能在帐户中设置他的信用卡...
* 如果**登录后cookie不会更改**,攻击者可能只需**固定一个cookie**,等待受害者登录,然后**使用该cookie以受害者身份登录**。
* 如果**cookie设置了一些初始值**例如在flask中**cookie**可能会**设置**会话的**CSRF令牌**,并且此值在受害者登录后将保持不变),**攻击者可以设置这个已知值,然后滥用它**在这种情况下攻击者可以让用户执行CSRF请求因为他知道CSRF令牌
2021-10-19 00:01:07 +00:00
## Cookie顺序
2021-10-19 00:01:07 +00:00
当浏览器接收到两个具有相同名称的cookie **部分影响相同范围**(域、子域和路径)时,**浏览器将在请求中发送两个cookie的值**。
2021-10-19 00:01:07 +00:00
取决于谁具有**最具体的路径**或哪个是**最旧的**,浏览器将**首先设置cookie的值**,然后设置另一个值,如:`Cookie: iduser=MoreSpecificAndOldestCookie; iduser=LessSpecific;`
2021-10-19 00:01:07 +00:00
大多数**网站只会使用第一个值**。因此如果攻击者想设置一个cookie最好在另一个cookie设置之前设置它或者使用更具体的路径设置它。
2021-10-19 00:01:07 +00:00
{% hint style="warning" %}
此外,**在更具体的路径中设置cookie的能力**非常有趣,因为您将能够使**受害者使用他的cookie除了在恶意cookie设置将在之前发送的特定路径中**。
2021-10-19 00:01:07 +00:00
{% endhint %}
2023-08-03 19:12:22 +00:00
## 绕过保护
2021-10-19 00:01:07 +00:00
对抗这种攻击的可能保护措施是,**Web服务器不会接受具有相同名称但两个不同值的两个cookie的请求**。
2021-10-19 00:01:07 +00:00
为了绕过攻击者在受害者已经获得cookie之后设置cookie的情况攻击者可以引起**cookie溢出**,然后,一旦**合法cookie被删除设置恶意cookie**。
2021-10-19 00:01:07 +00:00
{% content-ref url="cookie-jar-overflow.md" %}
[cookie-jar-overflow.md](cookie-jar-overflow.md)
{% endcontent-ref %}
另一个有用的**绕过**方法可能是**对cookie名称进行URL编码**因为一些保护措施会检查请求中具有相同名称的2个cookie然后服务器将解码cookie的名称。
2021-10-19 00:01:07 +00:00
## Cookie炸弹
2021-10-20 23:25:53 +00:00
Cookie Tossing攻击也可以用于执行**Cookie炸弹**攻击:
2021-10-20 23:25:53 +00:00
{% content-ref url="cookie-bomb.md" %}
[cookie-bomb.md](cookie-bomb.md)
{% endcontent-ref %}
## 防御措施
2021-10-19 00:01:07 +00:00
### **在cookie名称中使用前缀`__Host`**
2021-10-19 00:01:07 +00:00
* 如果cookie名称具有此前缀**只有在标记为安全从安全来源发送不包括Domain属性并且Path属性设置为/**的情况下,它**才会被接受**在Set-Cookie指令中
* **这可以防止子域强制将cookie强制到顶级域因为这些cookie可以被视为“域锁定”**
2021-10-19 00:01:07 +00:00
2023-08-03 19:12:22 +00:00
## 参考资料
2021-10-19 00:01:07 +00:00
2022-04-05 22:24:52 +00:00
* [**@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/)
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary>
2022-04-28 16:01:33 +00:00
支持HackTricks的其他方式
2022-04-28 16:01:33 +00:00
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **在Twitter上** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** 上关注我们**。
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
2022-04-28 16:01:33 +00:00
</details>