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

91 lines
7.6 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>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
2022-04-28 16:01:33 +00:00
HackTricksをサポートする他の方法:
2022-04-28 16:01:33 +00:00
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。
* **HackTricks**のPRを[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリに提出して、あなたのハッキングのコツを共有してください。
2022-04-28 16:01:33 +00:00
</details>
2023-07-07 23:42:27 +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
2023-07-07 23:42:27 +00:00
## Cookieの順序
2021-10-19 00:01:07 +00:00
ブラウザが同じ名前の2つの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を設定したい場合は、他のものが設定される前に設定するか、より具体的なパスで設定する方が良いでしょう。
2021-10-19 00:01:07 +00:00
{% hint style="warning" %}
さらに、**より具体的なパスでcookieを設定する能力**は非常に興味深いです。これにより、**被害者は特定のパス以外で自分のcookieを使用することになりますが、その特定のパスでは悪意のあるcookieが先に送信されます**。
2021-10-19 00:01:07 +00:00
{% endhint %}
2023-07-07 23:42:27 +00:00
## 保護のバイパス
2021-10-19 00:01:07 +00:00
この攻撃に対する可能な保護は、**ウェブサーバーが同じ名前の2つの異なる値を持つcookieを含むリクエストを受け入れない**ことです。
2021-10-19 00:01:07 +00:00
攻撃者が被害者に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
2022-05-01 12:41:36 +00:00
## Cookie Bomb
2021-10-20 23:25:53 +00:00
Cookie Tossing攻撃は、**Cookie Bomb**攻撃を実行するためにも使用されるかもしれません:
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名にある場合、Set-Cookieディレクティブでのみ受け入れられ、Secureとマークされ、セキュアなオリジンから送信され、Domain属性が含まれず、Path属性が/に設定されている必要があります
* **これはサブドメインが頂点ドメインにcookieを強制するのを防ぐのに役立ちます。これらのcookieは「ドメインロック」と見なされるかもしれません**
2021-10-19 00:01:07 +00:00
2023-07-07 23:42:27 +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/)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
2022-04-28 16:01:33 +00:00
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。
* **HackTricks**のPRを[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリに提出して、あなたのハッキングのコツを共有してください。
</details>