Express Prototype Pollution Gadgets
WhiteIntel to wyszukiwarka zasilana przez dark web, która oferuje darmowe funkcje do sprawdzania, czy firma lub jej klienci zostali skompromitowani przez złośliwe oprogramowanie kradnące dane.
Ich głównym celem WhiteIntel jest zwalczanie przejęć kont i ataków ransomware wynikających z złośliwego oprogramowania kradnącego informacje.
Możesz odwiedzić ich stronę internetową i wypróbować ich silnik za darmo pod adresem:
Serwowanie odpowiedzi XSS
Aby uzyskać więcej informacji zapoznaj się z oryginalnym badaniem
Zmień typ zawartości JSON na HTML
W aplikacji Express używającej odpowiedzi z typem zawartości JSON i odzwierciedlającą JSON:
W tych przypadkach XSS zwykle nie jest możliwe przy użyciu typu zawartości JSON. Jednakże, dzięki zanieczyszczeniu prototypu możemy wprowadzić w błąd Express, aby zwrócił odpowiedź w formacie HTML. Ta podatność polega na tym, że aplikacja używa res.send(obj)
i korzysta z analizatora treści z typem zawartości application/json.
Poprzez zanieczyszczanie właściwości body
i _body
, można spowodować, że Express będzie serwował zawartość typu HTML i odzwierciedlał właściwość _body
, co skutkuje przechowywaniem XSS.
Renderowanie UTF7
Możliwe jest sprawienie, aby express renderował zawartość UTF-7 za pomocą:
Bezpieczne techniki skanowania
Przestrzenie JSON
Następujący PP spowoduje, że atrybuty wewnątrz obiektu JSON będą miały dodatkową spację, która nie zepsuje funkcjonalności:
Następnie odbite JSON będzie wyglądać tak:
Ujawnione Nagłówki
Następny gadżet PP sprawi, że serwer wyśle z powrotem nagłówek HTTP: Access-Control-Expose_headers: foo
Wymaga zainstalowania modułu CORS
Metoda OPTIONS
Z następującym ładunkiem, jest możliwe ukrycie metody w odpowiedzi OPTIONS:
Status
Możliwe jest zmiana zwróconego kodu stanu za pomocą następującego ładunku PP:
Błąd
Gdy przypiszesz prototypowi wartość pierwotną, taką jak ciąg znaków, powstaje operacja no-op, ponieważ prototyp musi być obiektem. Jeśli spróbujesz przypisać obiekt prototypu do samego Object.prototype
, to spowoduje to wygenerowanie wyjątku. Możemy wykorzystać te dwa zachowania do wykrycia, czy zanieczyszczenie prototypu zakończyło się sukcesem:
Odbita Wartość
Gdy aplikacja zawiera obiekt w odpowiedzi, stworzenie atrybutu z niezwykłą nazwą obok __proto__
może być pouczające. W szczególności, jeśli w odpowiedzi zwracany jest tylko niezwykły atrybut, może to wskazywać na podatność aplikacji:
Ponadto, w scenariuszach, w których używana jest biblioteka tak jak Lodash, ustawienie właściwości zarówno poprzez zanieczyszczenie prototypu (PP), jak i bezpośrednio wewnątrz obiektu oferuje kolejne podejście diagnostyczne. Jeśli taka właściwość zostanie pominięta z odpowiedzi, sugeruje to, że Lodash sprawdza istnienie właściwości w docelowym obiekcie przed scaleniem:
Różne
Zezwól na kropki
Istnieje opcja w Express, która pozwala tworzyć obiekty z parametrów ciągu zapytania. Zdecydowanie można jej użyć w łańcuchu błędów do wykorzystania podatności na zanieczyszczenie prototypu.
?foo.bar=baz
tworzy obiekt w Node.
Odnośniki
WhiteIntel to wyszukiwarka zasilana dark-webem, która oferuje darmowe funkcjonalności do sprawdzenia, czy firma lub jej klienci zostali skompromitowani przez złośliwe oprogramowanie kradnące informacje.
Ich głównym celem WhiteIntel jest zwalczanie przejęć kont i ataków ransomware wynikających z złośliwego oprogramowania kradnącego informacje.
Możesz odwiedzić ich stronę internetową i wypróbować ich silnik za darmo pod adresem:
Last updated