Souběh / 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
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
- 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
- Sestavte cílový požadavek na kartě Chyba souběhu nebo jej na ni odešlete.
- Nastavte Počet souběžných požadavků – počet paralelních kopií k odeslání.
- Klikněte na Odeslat s uvedeným počtem požadavků. Všechny kopie se odešlou co nejblíže stejnému okamžiku.
- Zkontrolujte tabulku odpovědí: stavový kód, tělo a uplynulý čas pro každou kopii.
- 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
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
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
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
| 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
- Na kartě Pašování požadavků HTTP vyberte cílový koncový bod.
- Zvolte variantu desynchronizace, kterou chcete testovat.
- Klikněte na Spustit test pašování požadavků. Nástroj odešle speciálně sestavený požadavek a změří odpověď.
- Vypršení časového limitu nebo neočekávaná odpověď na druhý požadavek v sekvenci naznačuje možnou desynchronizaci.
- 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.