Přejít na obsah

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 ​

  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 ​

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 ​

VariantaPopis
CL.TEFrontend používá Content-Length; backend používá Transfer-Encoding
TE.CLFrontend používá Transfer-Encoding; backend používá Content-Length
TE.TEOba používají Transfer-Encoding, ale reagují odlišně na obfuskovanou hlavičku

Spuštění sondy request smugglingu ​

  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.

Proprietární software. Všechna práva vyhrazena.