---
url: https://docs.ogmabox.com/cs/app/utilities/race-smuggling.md
description: >-
  Testujte pomocí nástrojů Ogma chyby souběhu a chování při HTTP request
  smugglingu.
---

# Souběh / smuggling {#race-and-smuggling}

Nástroj Souběh / smuggling (Race / Smuggling) nabízí dva specializované nástroje pro útoky HTTP citlivé na časování a útoky na úrovni protokolu.

## Chyby souběhu {#race-conditions}

Karta Chyba souběhu odesílá současně více kopií požadavku na stejný koncový bod a umožňuje porovnat odpovědi a časování jednotlivých paralelních provedení.

### Kdy nástroj použít {#when-to-use-it}

* **TOCTOU (time-of-check/time-of-use)** – otestujte, zda souběžné požadavky mohou oddělit kontrolu od operace měnící stav.
* **Manipulace s účtem** – odešlete souběžné změny zůstatku, uplatnění kupónů nebo operace omezené limitem a otestujte dvojí utracení či nadměrné uplatnění.
* **Obcházení limitů hlasování nebo rychlosti** – ověřte, zda jsou limity pro jednotlivé uživatele vynucovány atomicky.

### Spuštění testu souběhu {#running-a-race-test}

1. Sestavte cílový požadavek na kartě **Chyba souběhu** nebo jej na ni odešlete.
2. Nastavte **Počet souběžných požadavků** – počet paralelních kopií k odeslání.
3. Klikněte na **Odeslat** s uvedeným počtem požadavků. Všechny kopie se odešlou co nejblíže stejnému okamžiku.
4. Zkontrolujte tabulku odpovědí: stavový kód, tělo a uplynulý čas pro každou kopii.
5. Rozdíly mezi odpověďmi (různé stavové kódy, různá těla odpovědí, neočekávaný úspěch u kopií 2+) naznačují časové okno pro chybu souběhu.

### Souběžné požadavky HTTP/2 v jediném paketu {#http-2-single-packet-racing}

Pokud cíl podporuje HTTP/2, v poli **Režim útoku** vyberte **H2 v jediném paketu**. HTTP/2 multiplexuje všechny paralelní požadavky přes jedno spojení, což eliminuje kolísání síťového zpoždění a zvyšuje spolehlivost současného doručení na server.

## HTTP request smuggling {#http-request-smuggling}

Karta Pašování požadavků HTTP testuje, jak server zpracovává nejednoznačné hlavičky `Content-Length` a `Transfer-Encoding`, aby odhalila desynchronizaci mezi frontendem a backendem.

### Princip {#background}

Pokud se reverzní proxy a backendový server neshodnou na tom, kde jeden požadavek končí a další začíná, lze propašovanou předponu z požadavku A připojit před požadavek B. Dopad sahá od otrávení cache po obejití autentizace a vložení libovolného požadavku.

### Varianty desynchronizace {#desync-variants}

| Varianta | Popis |
|---|---|
| CL.TE | Frontend používá Content-Length; backend používá Transfer-Encoding |
| TE.CL | Frontend používá Transfer-Encoding; backend používá Content-Length |
| TE.TE | Oba používají Transfer-Encoding, ale reagují odlišně na obfuskovanou hlavičku |

### Spuštění sondy request smugglingu {#running-a-smuggling-probe}

1. Na kartě **Pašování požadavků HTTP** vyberte cílový koncový bod.
2. Zvolte variantu desynchronizace, kterou chcete testovat.
3. Klikněte na **Spustit test pašování požadavků**. Nástroj odešle speciálně sestavený požadavek a změří odpověď.
4. Vypršení časového limitu nebo neočekávaná odpověď na druhý požadavek v sekvenci naznačuje možnou desynchronizaci.
5. Před vytvořením nálezu výsledek ručně potvrďte – falešně pozitivní výsledky vznikají, pokud síťové podmínky způsobí vypršení časového limitu nesouvisející se sondou.

## Související stránky {#related-pages}

* [Opakované odesílání](../replay.md)
* [Zachytávání](../intercept.md)
* [Nálezy](../findings.md)
