Parameter Pollution

Zanieczyszczenie Parametrów

Wsparcie dla HackTricks

Przegląd HTTP Parameter Pollution (HPP)

HTTP Parameter Pollution (HPP) to technika, w której atakujący manipulują parametrami HTTP, aby zmienić zachowanie aplikacji webowej w niezamierzony sposób. Manipulacja ta polega na dodawaniu, modyfikowaniu lub duplikowaniu parametrów HTTP. Efekt tych manipulacji nie jest bezpośrednio widoczny dla użytkownika, ale może znacząco zmienić funkcjonalność aplikacji po stronie serwera, z zauważalnymi skutkami po stronie klienta.

Przykład Zanieczyszczenia Parametrów HTTP (HPP)

URL transakcji aplikacji bankowej:

  • Oryginalny URL: https://www.victim.com/send/?from=accountA&to=accountB&amount=10000

Wstawiając dodatkowy parametr from:

  • Manipulowany URL: https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC

Transakcja może być błędnie obciążona na accountC zamiast accountA, co pokazuje potencjał HPP do manipulacji transakcjami lub innymi funkcjonalnościami, takimi jak resetowanie haseł, ustawienia 2FA czy żądania kluczy API.

Specyficzne dla technologii parsowanie parametrów

  • Sposób, w jaki parametry są analizowane i priorytetyzowane, zależy od używanej technologii webowej, co wpływa na to, jak HPP może być wykorzystywane.

  • Narzędzia takie jak Wappalyzer pomagają zidentyfikować te technologie i ich zachowania w zakresie parsowania.

Wykorzystanie HPP w PHP

Przypadek manipulacji OTP:

  • Kontekst: Mechanizm logowania wymagający jednorazowego hasła (OTP) został wykorzystany.

  • Metoda: Poprzez przechwycenie żądania OTP za pomocą narzędzi takich jak Burp Suite, atakujący zduplikował parametr email w żądaniu HTTP.

  • Wynik: OTP, przeznaczone dla początkowego adresu e-mail, zostało zamiast tego wysłane na drugi adres e-mail podany w manipulowanym żądaniu. Ta luka umożliwiła nieautoryzowany dostęp, omijając zamierzony środek bezpieczeństwa.

Ten scenariusz podkreśla krytyczne niedopatrzenie w backendzie aplikacji, który przetwarzał pierwszy parametr email do generacji OTP, ale używał ostatniego do dostarczenia.

Przypadek manipulacji kluczem API:

  • Scenariusz: Aplikacja pozwala użytkownikom na aktualizację swojego klucza API poprzez stronę ustawień profilu.

  • Wektor ataku: Atakujący odkrywa, że dodając dodatkowy parametr api_key do żądania POST, może manipulować wynikiem funkcji aktualizacji klucza API.

  • Technika: Wykorzystując narzędzie takie jak Burp Suite, atakujący tworzy żądanie, które zawiera dwa parametry api_key: jeden prawidłowy i jeden złośliwy. Serwer, przetwarzając tylko ostatnie wystąpienie, aktualizuje klucz API na wartość podaną przez atakującego.

  • Wynik: Atakujący zyskuje kontrolę nad funkcjonalnością API ofiary, potencjalnie uzyskując dostęp do prywatnych danych lub je modyfikując bez upoważnienia.

Ten przykład dodatkowo podkreśla konieczność bezpiecznego zarządzania parametrami, szczególnie w funkcjach tak krytycznych jak zarządzanie kluczem API.

Parsowanie parametrów: Flask vs. PHP

Sposób, w jaki technologie webowe obsługują duplikaty parametrów HTTP, różni się, co wpływa na ich podatność na ataki HPP:

  • Flask: Przyjmuje pierwszą wartość parametru, na przykład a=1 w ciągu zapytania a=1&a=2, priorytetując początkowe wystąpienie nad kolejnymi duplikatami.

  • PHP (na serwerze Apache HTTP): Przeciwnie, priorytetowo traktuje ostatnią wartość parametru, wybierając a=2 w podanym przykładzie. To zachowanie może niezamierzenie ułatwić wykorzystanie HPP, honorując złośliwy parametr atakującego zamiast oryginalnego.

Odniesienia

Wsparcie dla HackTricks

Last updated