hacktricks/pentesting-web/parameter-pollution.md

6.7 KiB

Zanieczyszczenie parametru

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

{% embed url="https://websec.nl/" %}

Przegląd zanieczyszczenia parametru HTTP (HPP)

Zanieczyszczenie parametru HTTP (HPP) to technika, w której atakujący manipulują parametrami HTTP, zmieniając zachowanie aplikacji internetowej w niezamierzony sposób. Ta manipulacja polega na dodawaniu, modyfikowaniu lub duplikowaniu parametrów HTTP. Skutki tych manipulacji nie są bezpośrednio widoczne dla użytkownika, ale mogą znacząco zmienić funkcjonalność aplikacji po stronie serwera, z obserwowalnymi skutkami po stronie klienta.

Przykład zanieczyszczenia parametru HTTP (HPP)

URL transakcji aplikacji bankowej:

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

Poprzez dodanie dodatkowego parametru from:

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

Transakcja może zostać błędnie obciążona na rzecz accountC zamiast accountA, co pokazuje potencjał HPP do manipulowania transakcjami lub innymi funkcjonalnościami, takimi jak resetowanie hasła, ustawienia 2FA lub żądania klucza API.

Analiza parametrów specyficzna dla technologii

  • Sposób analizowania i priorytetyzowania parametrów zależy od zastosowanej technologii internetowej, wpływając na sposób eksploatacji HPP.
  • Narzędzia takie jak Wappalyzer pomagają zidentyfikować te technologie i ich zachowania analizy.

Wykorzystanie PHP i HPP

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 zduplikowali parametr email w żądaniu HTTP.
  • Wynik: OTP, przeznaczone dla początkowego adresu e-mail, zostało wysłane na drugi adres e-mail określony w zmanipulowanym żądaniu. Ta luka umożliwiła nieautoryzowany dostęp poprzez obejście zamierzonego środka bezpieczeństwa.

Ten scenariusz podkreśla istotny błąd w backendzie aplikacji, który przetwarzał pierwszy parametr email do generowania OTP, ale użył ostatniego do dostarczenia.

Przypadek manipulacji klucza API:

  • Scenariusz: Aplikacja umożliwia użytkownikom aktualizację swojego klucza API za pomocą strony 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: Korzystając z narzędzia takiego jak Burp Suite, atakujący tworzy żądanie, które zawiera dwa parametry api_key: jeden legalny i jeden złośliwy. Serwer, przetwarzając tylko ostatnie wystąpienie, aktualizuje klucz API do wartości podanej przez atakującego.
  • Wynik: Atakujący uzyskuje kontrolę nad funkcjonalnością API ofiary, potencjalnie uzyskując dostęp lub modyfikując prywatne dane nieautoryzowane.

Ten przykład dodatkowo podkreśla konieczność bezpiecznego przetwarzania parametrów, zwłaszcza w funkcjach tak krytycznych jak zarządzanie kluczem API.

Analiza parametrów: Flask vs. PHP

Sposób obsługi duplikowanych parametrów HTTP różni się w zależności od technologii internetowych, wpływając na podatność na ataki HPP:

  • Flask: Przyjmuje wartość pierwszego parametru napotkanego, takiego jak a=1 w ciągu zapytania a=1&a=2, priorytetyzując początkowe wystąpienie nad kolejnymi duplikatami.
  • PHP (na serwerze Apache HTTP): W przeciwieństwie do tego, priorytetyzuje ostatnią wartość parametru, wybierając a=2 w podanym przykładzie. To zachowanie może niechcący ułatwić eksploatację HPP, honorując zmanipulowany parametr atakującego ponad oryginalny.

Odnośniki

{% embed url="https://websec.nl/" %}

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: