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

# Vinculação Forçada de Perfil OAuth

### JVinculação forçada de perfil OAuth

**Descrição do laboratório**

Este laboratório oferece uma funcionalidade para vincular um perfil de rede social a uma conta de usuário para se conectar via OAuth em vez de usar a autenticação tradicional. / Devido a uma implementação insegura do fluxo OAuth no lado do cliente, um invasor pode desviar esse mecanismo para associar seu próprio perfil social à conta de outro usuário.

Objetivo:/ Realize um ataque CSRF para vincular seu perfil de rede social à conta do administrador do site, depois acesse o painel de administração e exclua o usuário **carlos**.

Restrições :

* O administrador abre sistematicamente qualquer conteúdo enviado pelo servidor em operação.
* O administrador sempre tem uma sessão ativa no site do blog.

**Contas disponíveis**

* Conta do site: `wiener / peter`
* Perfil de rede social: `peter.wiener / hotdog`

<figure><img src="/files/1cd8a8f08ed2674dd6788295a2fd004d8307b834" alt=""><figcaption></figcaption></figure>

**Análise do mecanismo OAuth**

* O site permite uma conexão clássica via login e senha.

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

Também está disponível uma conexão via OAuth (rede social).

<figure><img src="/files/73ff03c255bd60e1f6e0d222ee3439434f6833db" alt=""><figcaption></figcaption></figure>

* Um usuário existente pode vincular um perfil de rede social à sua conta.

Durante a vinculação, uma solicitação OAuth é enviada ao ponto de autenticação:

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

Após a autenticação, o usuário é redirecionado para uma URL contendo um código OAuth:

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

Este código:

* É de uso único
* Para vincular o perfil OAuth à conta atualmente autenticada

<figure><img src="/files/2444d21acfdbf6f2122e70136a717c909dbcacb4" alt=""><figcaption></figcaption></figure>

**Exploração da vulnerabilidade**

1. Inicie o procedimento de vinculação entre sua conta e seu perfil de rede social.
2. Intercepte e copie a `/OAuth-linking?code=...` URL.

<figure><img src="/files/16d74424df98e27ea0e442cf8b93a85e9cbe2de0" alt=""><figcaption></figcaption></figure>

Descarte a solicitação para que o código não seja consumido.

A partir do servidor em operação, envie esta URL ao administrador por meio de um ataque CSRF, por exemplo usando um iframe

{% code overflow="wrap" %}

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

{% endcode %}

O administrador carrega a página:

<figure><img src="/files/53e3e2c9de3fa9d23127b37f801809a0da1ddf34" alt=""><figcaption></figcaption></figure>

O código OAuth é consumido

<figure><img src="/files/984b06325be524e6e655ca6479375fb9f0a16f38" alt=""><figcaption></figcaption></figure>

O perfil OAuth do invasor é vinculado à conta do administrador

<figure><img src="/files/6c22c4139edf9fa7c18bd8d7d4ce88784a531f13" 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/pt-br/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.
