> 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/host-header/bypassing-validation-by-connection-state.md).

# Contournement de la validation par l’état de connexion

Notes sur le contournement de la validation par l’état de connexion pour les laboratoires de la PortSwigger Web Security Academy, incluant le workflow d’exploitation, les tests de payloads, la validation dans Burp Suite et le contexte de remédiation.

### Contournement de la validation de l’hôte via une attaque sur l’état de la connexion

**Description de la vulnérabilité**

Ce labo comporte une **vulnérabilité de type SSRF basée sur le routage via l’en-tête Host** en-tête, liée à une mauvaise gestion de l’état de la connexion côté serveur.

Bien que le serveur frontal semble valider correctement le `Host` en-tête, il fait une \*\*hypothèse\*\* dangereuse :

> Toutes les requêtes envoyées sur la même connexion TCP sont considérées comme fiables si la **première requête** est valide.

Cela permet d’injecter une requête malveillante ultérieure sur la même connexion, en contournant la validation initiale.

**Objectif du labo**

* Accéder au panneau d’administration interne :/ `HTTP://192.168.0.1/admin`
* Supprimer l’utilisateur **carlos**

**Observation initiale**

Une requête directe vers l’IP interne est bloquée :

```http
GET / HTTP/1.1
Host: 192.168.0.1
```

Le serveur rejette cette requête, ce qui confirme qu’une `Host` validation est en place **dès la première requête**.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-716cd678495ba9f257aeef4663599d1781bb752d%2F%7B66EAD875-C290-48AB-86B2-6054CF9ECE86%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

**Opération : attaque sur l’état de la connexion**

L’idée est d’envoyer \*\*plusieurs requêtes sur la même connexion TCP\*\* :

1. Une première requête légitime vers l’hôte public (acceptée).
2. Une deuxième requête malveillante vers l’IP interne, envoyée **sur la même connexion**.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-c156f1764638d2ba4d002f1dd9ec42c8cc7b1aed%2F%7B7C1D0937-5E3E-4E83-8F29-42F59338EF12%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

Dans Burp Suite, cela se fait en :

* Regrouper les requêtes
* En utilisant **Envoyer le groupe dans une seule connexion**

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-00d3a64b47a7ce1463445cb3ee7908241bb2af19%2F%7BE961F29C-9FAA-4C08-A8CE-75A3D270193E%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

**Accès au panneau d’administration**

Une fois la connexion établie avec une requête valide, la requête suivante vers l’admin interne est acceptée :

```http
GET /admin HTTP/1.1
Host: 192.168.0.1
```

Le panneau d’administration interne devient alors accessible.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-62e690af215289aa04969d98c4420d8f1d2616fa%2F%7BC76FC4FB-52F9-4BFD-B3F9-CE9040DB5411%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

**Suppression de l’utilisateur**

La suppression de l’utilisateur nécessite une requête POST :

```http
POST /admin/delete HTTP/1.1
Host: 192.168.0.1

csrf=ppBVKn8wVrgZifEETHsn48Hykwiq8yFO&username=carlos
```

Réponse du serveur:

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-586b97aeff5349a4a728d8a02e94a919b03e31eb%2F%7B2A1D959A-10BF-4B0A-A3FF-6907C0A91CD6%7D.png?alt=media" alt="" width="446"><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 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/host-header/bypassing-validation-by-connection-state.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.
