---
url: https://docs.ogmabox.com/fr/app/utilities/race-smuggling.md
description: >-
  Tester les conditions de concurrence et la contrebande de requêtes HTTP avec
  les utilitaires d'Ogma.
---

# Conditions de concurrence et contrebande de requêtes {#race-and-smuggling}

Race / Smuggling propose deux outils spécialisés pour les attaques HTTP sensibles à la temporisation et celles visant le protocole.

## Conditions de concurrence {#race-conditions}

L'onglet Conditions de concurrence envoie simultanément plusieurs copies d'une requête au même point de terminaison et permet de comparer les réponses et les temps d'exécution entre les exécutions parallèles.

### Quand l'utiliser {#when-to-use-it}

* **TOCTOU (time-of-check/time-of-use)** : testez si des requêtes concurrentes permettent de séparer une vérification de l'opération de modification d'état qu'elle contrôle.
* **Manipulation de comptes** : envoyez des modifications de solde, des utilisations de coupons ou des opérations soumises à des limites en parallèle pour rechercher une double dépense ou une utilisation excessive.
* **Contournement des limites de vote ou de débit** : confirmez si les limites par utilisateur sont appliquées de manière atomique.

### Exécuter un test de concurrence {#running-a-race-test}

1. Construisez la requête cible dans l'onglet Conditions de concurrence ou envoyez-la à cet onglet.
2. Définissez la valeur **Requêtes simultanées**, c'est-à-dire le nombre de copies à envoyer en parallèle.
3. Cliquez sur **Envoyer {count} requêtes**. Toutes les copies sont envoyées aussi simultanément que possible.
4. Examinez le tableau des réponses : code de statut, corps et temps écoulé pour chaque copie.
5. Les différences entre les réponses (codes de statut différents, corps de réponse différents, succès inattendu à partir de la deuxième copie) indiquent une fenêtre de concurrence.

### Tests de concurrence HTTP/2 avec un seul paquet {#http-2-single-packet-racing}

Si la cible prend en charge HTTP/2, activez **H2 paquet unique**. HTTP/2 multiplexe toutes les requêtes parallèles sur une seule connexion, ce qui élimine la gigue réseau et rend leur arrivée simultanée au serveur plus fiable.

## Contrebande de requêtes HTTP {#http-request-smuggling}

L'onglet HTTP Smuggling teste la façon dont un serveur traite des en-têtes `Content-Length` et `Transfer-Encoding` ambigus afin de détecter une désynchronisation entre le frontal et le backend.

### Contexte {#background}

Lorsqu'un proxy inverse et un serveur backend ne s'accordent pas sur la fin d'une requête et le début de la suivante, un préfixe introduit clandestinement dans la requête A peut être ajouté au début de la requête B. Les conséquences vont de l'empoisonnement du cache au contournement de l'authentification et à l'injection de requêtes arbitraires.

### Variantes de désynchronisation {#desync-variants}

| Variante | Description |
|---|---|
| CL.TE | Le frontal utilise Content-Length ; le backend utilise Transfer-Encoding |
| TE.CL | Le frontal utilise Transfer-Encoding ; le backend utilise Content-Length |
| TE.TE | Les deux utilisent Transfer-Encoding, mais réagissent différemment à un en-tête obscurci |

### Exécuter une sonde de contrebande de requêtes {#running-a-smuggling-probe}

1. Sélectionnez le point de terminaison cible dans l'onglet HTTP Smuggling.
2. Choisissez la variante de désynchronisation à tester.
3. Cliquez sur **Tester le HTTP Smuggling**. L'outil envoie la requête spécialement construite et mesure la réponse.
4. Un dépassement de délai ou une réponse inattendue à la deuxième requête de la séquence indique une désynchronisation potentielle.
5. Confirmez manuellement avant de créer un constat : des faux positifs surviennent lorsque les conditions réseau provoquent un dépassement de délai sans rapport avec la sonde.

## Pages connexes {#related-pages}

* [Rejeu](../replay.md)
* [Interception](../intercept.md)
* [Constats](../findings.md)
