Parameter Pollution
Zanieczyszczenie Parametrów
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Fpentest.eu%2FRENDER_WebSec_10fps_21sec_9MB_29042024.gif&width=768&dpr=4&quality=100&sign=bc0743d1&sv=1)
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 zapytaniaa=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
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Fpentest.eu%2FRENDER_WebSec_10fps_21sec_9MB_29042024.gif&width=768&dpr=4&quality=100&sign=bc0743d1&sv=1)
Last updated