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

96 lines
7.9 KiB
Markdown
Raw Normal View History

# Cookie Tossing
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
2022-04-28 16:01:33 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
### 説明
2021-10-20 23:25:53 +00:00
攻撃者が**サブドメインまたは企業のドメインを制御できる場合、またはサブドメインにXSSを見つけた場合**、この攻撃を実行できるようになります。
2021-10-19 00:01:07 +00:00
クッキーのハッキングセクションで示されたように、**クッキーがドメインに設定されると(指定されている場合)、そのドメインとサブドメインで使用されます。**
2021-10-19 00:01:07 +00:00
{% hint style="danger" %}
したがって、**攻撃者は特定のクッキーをドメインとサブドメインに設定できるようになり、次のようなことを行います** `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
* **被害者のクッキーを攻撃者のアカウントに固定する**ので、ユーザーが気づかない場合、**攻撃者のアカウントでアクションを実行します**。攻撃者は興味深い情報を取得できるかもしれません(プラットフォームでのユーザーの検索履歴を確認する、被害者がアカウントにクレジットカードを設定する...)。
* **クッキーがログイン後に変更されない場合**、攻撃者は単に**クッキーを固定(セッション固定)**し、被害者がログインするのを待ってから**そのクッキーを使用して被害者としてログインします**。
* 時には、セッションクッキーが変更されても、攻撃者は以前のものを使用し、新しいものも受け取ります。
* **クッキーが初期値を設定している場合**(フラスクのように、**クッキー**が**セッションのCSRFトークン**を**設定**し、この値が被害者がログインした後も維持される場合)、**攻撃者はこの既知の値を設定し、それを悪用することができます**そのシナリオでは、攻撃者はユーザーにCSRFリクエストを実行させることができます。なぜなら、CSRFトークンを知っているからです
* 値を設定するのと同様に、攻撃者はサーバーによって生成された認証されていないクッキーを取得し、そこからCSRFトークンを取得して使用することもできます。
2021-10-19 00:01:07 +00:00
### クッキーの順序
2021-10-19 00:01:07 +00:00
ブラウザが同じ名前の2つのクッキーを受け取ると、**同じスコープ(ドメイン、サブドメイン、パス)に部分的に影響を与える**場合、**ブラウザはリクエストに対して両方のクッキーの値を送信します**。
2021-10-19 00:01:07 +00:00
誰が**最も特定のパス**を持っているか、またはどちらが**古いもの**であるかに応じて、ブラウザは**最初にクッキーの値を設定し**、次に他の値を設定します。例:`Cookie: iduser=MoreSpecificAndOldestCookie; iduser=LessSpecific;`
2021-10-19 00:01:07 +00:00
ほとんどの**ウェブサイトは最初の値のみを使用します**。したがって、攻撃者がクッキーを設定したい場合は、他のクッキーが設定される前に設定するか、より特定のパスで設定する方が良いです。
2021-10-19 00:01:07 +00:00
{% hint style="warning" %}
さらに、**より特定のパスにクッキーを設定する能力**は非常に興味深いです。なぜなら、**被害者がそのクッキーで作業することができるのは、悪意のあるクッキーが設定された特定のパスを除いて、前に送信されるからです**。
2021-10-19 00:01:07 +00:00
{% endhint %}
### 保護バイパス
2021-10-19 00:01:07 +00:00
この攻撃に対する可能な保護は、**ウェブサーバーが同じ名前の2つのクッキーを異なる値で受け入れないこと**です。
2021-10-19 00:01:07 +00:00
攻撃者が被害者にクッキーがすでに与えられた後にクッキーを設定するシナリオを回避するために、攻撃者は**クッキーオーバーフロー**を引き起こし、その後、**正当なクッキーが削除されたら、悪意のあるクッキーを設定する**ことができます。
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 %}
別の有用な**バイパス**は、**クッキーの名前をURLエンコードすること**です。なぜなら、一部の保護はリクエスト内の同じ名前の2つのクッキーをチェックし、その後サーバーがクッキーの名前をデコードするからです。
2021-10-19 00:01:07 +00:00
### クッキーボム
2021-10-20 23:25:53 +00:00
クッキー投げ攻撃は、**クッキーボム**攻撃を実行するためにも使用される可能性があります:
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
#### **クッキー名にプレフィックス`__Host`を使用する**
* クッキー名にこのプレフィックスがある場合、**Secureとしてマークされ、セキュアなオリジンから送信され、Domain属性を含まず、Path属性が/に設定されている場合にのみ**Set-Cookieディレクティブで受け入れられます。
* **これにより、サブドメインがクッキーを頂点ドメインに強制することを防ぎます。これらのクッキーは「ドメインロック」と見なされる可能性があります。**
2021-10-19 00:01:07 +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/)
* [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
2022-04-28 16:01:33 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}