> 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/authentication-bypass-via-encryption-oracle.md).

# Authentifizierungsumgehung über Encryption Oracle

### Authentifizierungsumgehung über einen Verschlüsselungs-Oracle

**Beschreibung des Labs**

Dieses Labor weist einen logischen Fehler auf, der ein \*\*serverseitiges Verschlüsselungs-\*\*Oracle offenlegt. Durch Ausnutzung dieser Schwachstelle ist es möglich, einen gültigen verschlüsselten Wert zu fälschen, um die Authentifizierung zu umgehen, auf das Admin-Panel zuzugreifen und Benutzer zu löschen **carlos**.

Bereitgestellter Bezeichner:

* Benutzer: `wiener`
* Passwort: `peter`

**Erste Beobachtung**

Auf der Login-Seite ist die **Angemeldet bleiben** Option verfügbar.

<figure><img src="/files/36c07a748a4274cde71b2fd1722c80c76f951b05" alt=""><figcaption></figcaption></figure>

Wenn sie verwendet wird, wird ein Cookie verschlüsselt in **Base64** erzeugt und auf der Client-Seite gespeichert.

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

```bash
echo '0HE6oMYJL//S1fLwttqR7WMF3EX4KJmvfFRI53qpVnk=' | base64 -d

# Der dekodierte Wert ist binärer Ciphertext, kein lesbarer Text.
```

### Identifizierung des Verschlüsselungs-Oracle

Wenn ein gültiger Kommentar übermittelt wird, ist keine spezielle Antwort zu beobachten.

<figure><img src="/files/303cdef840445ae142e81a1d6b4c0e7ef86f1c6f" alt=""><figcaption></figcaption></figure>

Wenn jedoch ein Kommentar einen Anwendungsfehler verursacht (z. B. eine ungültige E-Mail-Adresse), dann:

* gibt eine Fehlermeldung zurück, die auf dem Bildschirm angezeigt wird;

{% code overflow="wrap" %}

```bash
csrf=cFMQUjAyzETtEr8TLsoir7V5p4C3m4ZG&postId=4&comment=test&name=test&email=test&website=https://localhost
```

{% endcode %}

* generiert ein neues Cookie `Benachrichtigung`\*\*, verschlüsselt.

Der angezeigte Inhalt ist beispielsweise:

<figure><img src="/files/7dc51446e39772390634e90c489f902982e398fc" alt=""><figcaption></figcaption></figure>

Dies zeigt, dass:

* der Server \*\*entschlüsselt den Inhalt des `Benachrichtigung` Cookies;

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

Der Server fungiert somit als ein **Oracle für Verschlüsselung und Entschlüsselung**.

* der entschlüsselte Text wird **erneut in die HTML-Antwort eingefügt**.

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

### Zusammenhang mit dem Cookie

Indem der verschlüsselte Wert des Cookies \*\* eingefügt wird

Das beobachtete Format ist:

<figure><img src="/files/39f54eca514b6645ade44c56ab5b5ac49a07423a" alt=""><figcaption></figcaption></figure>

Dies entspricht eindeutig:

* einem Benutzernamen;
* einem Zeitstempel.

#### Fälschung einer Administrator-Identität

Ziel ist es, den Server die folgende Zeichenfolge verschlüsseln zu lassen:

```bash
administrator:1766913113564
```

<figure><img src="/files/2062b2f76542dda2f77b096a4e34061db4ef8c21" alt=""><figcaption></figcaption></figure>

Dazu wird dieser Wert in das verwundbare Feld (ungültiger Kommentar/E-Mail) injiziert, wodurch Folgendes ausgelöst wird:

* Anzeige der Fehlermeldung, die diese Zeichenfolge enthält;

<figure><img src="/files/17b21a607a345d6f5dbb27587927bebe4a2397c7" alt=""><figcaption></figcaption></figure>

die Generierung eines neuen `Benachrichtigung` Cookies, einschließlich des injizierten Textes.

{% code overflow="wrap" %}

```bash
Set-Cookie: notification=VQbs3ex4CbvKjTm0LM5wuZa79pnAzKI9MEsa1O0MbX%2fJpfl9baj6yL3ryxh4u6nyiWHVwxP7%2fVDPyft%2f1qAbbQ%3d%3d; HttpOnly
```

{% endcode %}

### Identifizierung des Verschlüsselungsalgorithmus

Durch willkürliches Abschneiden des verschlüsselten Werts gibt der Server den folgenden Fehler zurück

```bash
PTBLGtTtDG1/yaX5fW2o%2bsi968sYeLup8olh1cMT%2b/1Qz8n7f9agG20%3d
```

`Die Eingabelänge muss beim Entschlüsseln mit gepaddeter Chiffre ein Vielfaches von 16 sein`

<figure><img src="/files/2bae239c27dcd7e1367fdd620651136cdc09a859" alt=""><figcaption></figcaption></figure>

Dies weist eindeutig auf die Verwendung von **AES mit Padding**, arbeitet in Blöcken von **16 Bytes**.

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

#### Manipulation von Cipher-Blöcken

Das aufgetretene Problem ist das Vorhandensein ungültiger Padding-Zeichen am Ende der Nachricht. / Um dies zu beheben, wird der injizierten Zeichenkette eine Füllzeichenfolge vorangestellt, um die Blöcke korrekt auszurichten:

```
xxxxxxxxxadministrator:1766913113564
```

<figure><img src="/files/718e89dc6183184d272bca2243fb24c48dd65e17" alt=""><figcaption></figcaption></figure>

Danach wird ein neues verschlüsseltes Cookie erzeugt.

VQbs3ex4CbvKjTm0LM5wuZJqwlVboMZ2IzNuiTfVH6iHj9RZUT59d5kGoS64tVE5wWiEfmp6VbJG%2bb%2fNW5%2bblA%3d%3d

### Schneiden und Neu-Zusammensetzen des Cookies

Durch das Löschen der ersten **zwei verschlüsselten Blöcke** (entsprechend der Füllung) bleiben nur Blöcke übrig, die enthalten:

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

<figure><img src="/files/1362d97a3687d795f72e02e2779a1a46e195d587" alt=""><figcaption></figcaption></figure>

Dieser endgültige verschlüsselte Wert wird vom Server akzeptiert.

```
h4/UWVE%2bfXeZBqEuuLVROcFohH5qelWyRvm/zVufm5Q%3d
```

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

#### Umgehung der Authentifizierung

Abschließende Schritte:

1. Löschen Sie das vorhandene Sitzungscookie.
2. Ersetzen Sie den Wert des Cookies \*\*
3. Aktualisieren Sie die Seite.

<figure><img src="/files/4124531c720adddec92ce3da4921cc59adfa1e39" 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/authentication-bypass-via-encryption-oracle.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.
