hacktricks/src/pentesting-web/http-request-smuggling/browser-http-request-smuggling.md

2.5 KiB
Raw Blame History

Browser HTTP Request Smuggling

{{#include ../../banners/hacktricks-training.md}}

Browser-powered desync (aka client-side request smuggling) wykorzystuje przeglądarkę ofiary do dodania źle sformatowanego żądania do wspólnego połączenia, tak aby kolejne żądania były analizowane w sposób niesynchronizowany przez komponent downstream. W przeciwieństwie do klasycznego smugglingu FE↔BE, ładunki są ograniczone przez to, co przeglądarka może legalnie wysłać między różnymi źródłami.

Kluczowe ograniczenia i wskazówki

  • Używaj tylko nagłówków i składni, które przeglądarka może wysłać za pomocą nawigacji, fetch lub przesyłania formularzy. Obfuskacje nagłówków (triki LWS, duplikaty TE, nieprawidłowy CL) zazwyczaj nie będą wysyłane.
  • Celuj w punkty końcowe i pośredników, którzy odzwierciedlają dane wejściowe lub buforują odpowiedzi. Przydatne skutki obejmują zanieczyszczenie pamięci podręcznej, wyciek nagłówków wstrzykiwanych przez front-end lub obejście kontroli ścieżki/metody front-end.
  • Powtórne użycie ma znaczenie: dostosuj skonstruowane żądanie, aby dzieliło to samo połączenie HTTP/1.1 lub H2 z żądaniem ofiary o wysokiej wartości. Zachowania zablokowane na połączeniu/stanu wzmacniają wpływ.
  • Preferuj prymitywy, które nie wymagają niestandardowych nagłówków: mylenie ścieżek, wstrzykiwanie ciągu zapytania i kształtowanie ciała za pomocą POST-ów zakodowanych w formularzu.
  • Waliduj prawdziwe desynchronizacje po stronie serwera w porównaniu do jedynie artefaktów pipeliningu, ponownie testując bez ponownego użycia lub używając sprawdzenia zagnieżdżonej odpowiedzi HTTP/2.

Dla technik end-to-end i PoC zobacz:

References

{{#include ../../banners/hacktricks-training.md}}