---
url: https://docs.ogmabox.com/pl/app/utilities/race-smuggling.md
description: >-
  Testuj warunki wyścigu i zachowanie przemytu żądań HTTP za pomocą narzędzi
  pomocniczych Ogma.
---

# Wyścigi i przemyt żądań {#race-and-smuggling}

Wyścigi / przemyt żądań udostępnia dwa wyspecjalizowane narzędzia do ataków HTTP zależnych od czasu i działających na poziomie protokołu.

## Warunki wyścigu {#race-conditions}

Karta Warunki wyścigu wysyła jednocześnie wiele kopii żądania do tego samego punktu końcowego i pozwala porównać odpowiedzi oraz czas równoległych wykonań.

### Kiedy używać {#when-to-use-it}

* **TOCTOU (time-of-check/time-of-use)** — sprawdź, czy współbieżne żądania mogą rozdzielić sprawdzenie warunku od operacji zmieniającej stan.
* **Manipulacja kontem** — wysyłaj równolegle żądania zmiany salda, realizacji kuponów lub operacji objętych limitami, aby sprawdzić możliwość podwójnego wydania środków lub realizacji kuponów ponad dozwolony limit.
* **Omijanie limitów głosowania lub częstotliwości** — potwierdź, czy limity dla użytkownika są egzekwowane atomowo.

### Uruchamianie testu wyścigu {#running-a-race-test}

1. Przygotuj docelowe żądanie lub wyślij je do karty Warunki wyścigu.
2. Ustaw **Współbieżność** — liczbę kopii wysyłanych równolegle.
3. Kliknij przycisk **Wyślij** z ustawioną liczbą żądań. Wszystkie kopie są wysyłane możliwie najbliżej tej samej chwili.
4. Przejrzyj tabelę odpowiedzi: kod statusu, treść i czas trwania dla każdej kopii.
5. Różnice między odpowiedziami (różne kody statusu, różne treści odpowiedzi, nieoczekiwany sukces dla kopii 2 i kolejnych) wskazują na okno wyścigu.

### Wyścig w pojedynczym pakiecie HTTP/2 {#http-2-single-packet-racing}

Gdy cel obsługuje HTTP/2, wybierz **H2 w jednym pakiecie** w polu **Tryb ataku**. HTTP/2 multipleksuje wszystkie równoległe żądania w jednym połączeniu, co eliminuje wahania opóźnienia sieci i zwiększa niezawodność jednoczesnego dotarcia żądań do serwera.

## Przemyt żądań HTTP {#http-request-smuggling}

Karta Przemyt żądań HTTP sprawdza, jak serwer obsługuje niejednoznaczne nagłówki `Content-Length` i `Transfer-Encoding`, aby wykryć desynchronizację między warstwą frontendową a backendem.

### Podstawy {#background}

Gdy odwrotne proxy i serwer backendu nie zgadzają się co do miejsca, w którym kończy się jedno żądanie, a zaczyna następne, przemycony prefiks żądania A może zostać dodany na początku żądania B. Skutki obejmują zatruwanie pamięci podręcznej, omijanie uwierzytelniania i wstrzykiwanie dowolnych żądań.

### Warianty desynchronizacji {#desync-variants}

| Wariant | Opis |
|---|---|
| CL.TE | Frontend używa Content-Length; backend używa Transfer-Encoding |
| TE.CL | Frontend używa Transfer-Encoding; backend używa Content-Length |
| TE.TE | Oba używają Transfer-Encoding, ale różnie reagują na zaciemniony nagłówek |

### Uruchamianie próby przemytu {#running-a-smuggling-probe}

1. Wybierz docelowy punkt końcowy na karcie Przemyt żądań HTTP.
2. Wybierz wariant desynchronizacji do przetestowania.
3. Kliknij **Uruchom test przemytu żądań**. Narzędzie wysyła specjalnie przygotowane żądanie i mierzy odpowiedź.
4. Przekroczenie limitu czasu lub nieoczekiwana odpowiedź na drugie żądanie w sekwencji wskazuje na potencjalną desynchronizację.
5. Potwierdź wynik ręcznie przed utworzeniem ustalenia — wyniki fałszywie dodatnie występują, gdy warunki sieciowe powodują przekroczenie czasu niezwiązane z próbą.

## Powiązane strony {#related-pages}

* [Ponowne wysyłanie](../replay.md)
* [Przechwytywanie](../intercept.md)
* [Ustalenia](../findings.md)
