# Cookie Tossing
ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) HackTricksをサポートする他の方法: * **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)を発見し、独占的な[**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を提出する
### 説明 攻撃者が**企業のサブドメインまたはドメインを制御できるか、サブドメインで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 %} 別の有用な**バイパス**は、**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ディレクティブで受け入れられる**でしょう。 * **これにより、サブドメインがクッキーをエイペックスドメインに強制することが防がれます。これらのクッキーは「ドメインロックされた」と見なされる可能性があります** ### 参考文献 * [**@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)
ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) HackTricksをサポートする他の方法: * **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)を発見し、独占的な[**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を提出する