Przejdź do treści

Wyścigi i przemyt żądań ​

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 ​

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ć ​

  • 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 ​

  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 ​

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 ​

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 ​

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 ​

WariantOpis
CL.TEFrontend używa Content-Length; backend używa Transfer-Encoding
TE.CLFrontend używa Transfer-Encoding; backend używa Content-Length
TE.TEOba używają Transfer-Encoding, ale różnie reagują na zaciemniony nagłówek

Uruchamianie próby przemytu ​

  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ą.

Oprogramowanie własnościowe. Wszelkie prawa zastrzeżone.