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

# Liaison forcée de profil OAuth

### Liaison forcée du profil OAuth

**Description du laboratoire**

Ce laboratoire offre une fonctionnalité permettant de lier un profil de réseau social à un compte utilisateur pour se connecter via OAuth au lieu d'utiliser l'authentification traditionnelle. / En raison d'une implémentation non sécurisée du flux OAuth côté client, un attaquant peut détourner ce mécanisme pour associer son propre profil social au compte d'un autre utilisateur.

Objectif :/ Réalisez une attaque CSRF pour lier votre profil de réseau social au compte de l'administrateur du site, puis accédez au panneau d'administration et supprimez l'utilisateur **carlos**.

Contraintes :

* L'administrateur ouvre systématiquement tout contenu envoyé depuis le serveur d'exploitation.
* L'administrateur a toujours une session active sur le site du blog.

**Comptes disponibles**

* Compte du site : `wiener / peter`
* Profil du réseau social : `peter.wiener / hotdog`

<figure><img src="/files/32bfcf6e530c4902b7f93b955e39a1454b490422" alt=""><figcaption></figcaption></figure>

**Analyse du mécanisme OAuth**

* Le site permet une connexion classique via identifiant et mot de passe.

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

Une connexion via OAuth (réseau social) est également disponible.

<figure><img src="/files/92be606ad22432e86bcd4eefd4d016aaba0dd9d1" alt=""><figcaption></figcaption></figure>

* Un utilisateur existant peut lier un profil de réseau social à son compte.

Lors du lien, une requête OAuth est envoyée au point d'authentification :

{% 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 %}

Après authentification, l'utilisateur est redirigé vers une URL contenant un code OAuth :

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

Ce code :

* Est à usage unique
* Permet de lier le profil OAuth au compte actuellement authentifié

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

**Exploitation de la vulnérabilité**

1. Démarrez la procédure de liaison entre votre compte et votre profil de réseau social.
2. Interceptez et copiez le `/oauth-linking?code=...` URL.

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

Abandonnez la requête afin que le code ne soit pas consommé.

Depuis le serveur d'exploitation, envoyez cette URL à l'administrateur via une attaque CSRF, par exemple en utilisant une iframe

{% code overflow="wrap" %}

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

{% endcode %}

L'administrateur charge la page :

<figure><img src="/files/347475f28300433b96767ce286f68fe5c99c51e1" alt=""><figcaption></figcaption></figure>

Le code OAuth est consommé

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

Le profil OAuth de l'attaquant est lié au compte de l'administrateur

<figure><img src="/files/71f337e840b9e4bac1d378e23d52ed365f3612b2" 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/fr/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.
