6.6 KiB
Zanieczyszczenie Parametrów
{% hint style="success" %}
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się sztuczkami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
![](https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif)
{% embed url="https://websec.nl/" %}
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://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654
- https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution
![](https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif)
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się sztuczkami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.