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

93 lines
8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Cookie Tossing
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見る
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](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を提出する
</details>
### 説明
攻撃者が**企業のサブドメインまたはドメインを制御できるか、サブドメインでXSSを見つける**ことができれば、この攻撃を実行できます。
Cookieハッキングセクションで示されているように、**cookieがドメインに設定されるとそれを指定してそのドメインとサブドメインで使用されます。**
{% hint style="danger" %}
したがって、**攻撃者はドメインとサブドメインに特定のcookieを設定できるようになり、次のようなことを行うことができます** `document.cookie="session=1234; Path=/app/login; domain=.example.com"`
{% endhint %}
これは危険であり、攻撃者は次のようなことができるかもしれません:
* **被害者のcookieを攻撃者のアカウントに固定**することができるため、ユーザーが気づかない場合、**彼は攻撃者のアカウントでアクションを実行**し、攻撃者はいくつかの興味深い情報を入手するかもしれません(プラットフォームでのユーザーの検索履歴を確認したり、被害者がクレジットカードをアカウントに設定したり...
* **ログイン後にcookieが変更されない場合**、攻撃者は単に**cookieを固定化セッション固定化**し、被害者がログインするのを待ってから**そのcookieを使用して被害者としてログイン**できます。
* 時々、セッションcookieが変更されても、攻撃者は前のものを使用し、新しいものも受け取ります。
* **cookieが初期値を設定している場合**たとえば、flaskのように**cookie**がセッションのCSRFトークンを**設定**し、この値が被害者がログインした後も維持される場合)、**攻撃者はこの既知の値を設定して悪用**することができますこのシナリオでは、攻撃者はCSRFトークンを知っているので、ユーザーにCSRFリクエストを実行させることができます
* 値を設定するのと同様に、攻撃者はサーバーによって生成された認証されていないcookieを取得し、その中からCSRFトークンを取得して使用することができます。
### Cookieの順序
ブラウザが同じ名前の2つのcookieを受信し、**同じスコープ(ドメイン、サブドメイン、パス)に部分的に影響を与える場合**、**ブラウザはリクエストに対して両方のcookieの値を送信**します。
**最も具体的なパスを持っているか、どちらが最も古いか**に応じて、ブラウザは**最初にcookieの値を設定**し、その後もう一方の値を設定します。例:`Cookie: iduser=MoreSpecificAndOldestCookie; iduser=LessSpecific;`
ほとんどの**ウェブサイトは最初の値のみを使用**します。したがって、攻撃者がcookieを設定する場合は、他のcookieが設定される前に設定するか、より具体的なパスで設定することが良いでしょう。
{% hint style="warning" %}
さらに、**より具体的なパスにcookieを設定する能力**は非常に興味深いものであり、**悪意のあるcookieが送信される前に被害者にそのcookieを使用させることができます**。
{% endhint %}
### 保護の回避
この攻撃に対する可能な保護策は、**ウェブサーバーが同じ名前の2つの異なる値を持つcookieを受け入れないようにする**ことです。
攻撃者が被害者にすでにcookieが与えられた後にcookieを設定しているシナリオをバイパスするために、攻撃者は**cookieオーバーフロー**を引き起こし、その後、**正規のcookieが削除されたら悪意のあるcookieを設定**できます。
{% content-ref url="cookie-jar-overflow.md" %}
[cookie-jar-overflow.md](cookie-jar-overflow.md)
{% endcontent-ref %}
もう1つの便利な**バイパス**は、**cookieの名前をURLエンコード**することです。一部の保護はリクエスト内の同じ名前の2つのcookieをチェックし、その後サーバーがcookieの名前をデコードします。
### Cookie Bomb
Cookie Tossing攻撃は、**Cookie Bomb**攻撃を実行するためにも使用できます:
{% content-ref url="cookie-bomb.md" %}
[cookie-bomb.md](cookie-bomb.md)
{% endcontent-ref %}
### 防御
#### **Cookie名に接頭辞`__Host`を使用する**
* Cookie名にこの接頭辞がある場合、それは**セキュアにマークされ、セキュアなオリジンから送信され、Domain属性が含まれず、Path属性が/に設定されている場合**にのみ、Set-Cookieディレクティブで受け入れられます
* **これにより、サブドメインがcookieをapexドメインに強制することが防がれます。これらの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/)
* [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見る
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](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を提出する
</details>