InPost XSS - błąd znaleziony na stronie wyszukiwania przesyłek

in #polish6 years ago (edited)

Szukam swojej paczki, znajduję XSS

W 2016 roku, pod koniec listopada zamawiałem z allegro prezenty na mikołajki.
Trochę się martwiłem, że nie dojdą na czas więc co kilka godzin sprawdzałem gdzie się znajdują i czy opuściły już magazyn.
Standardowo wszedłem na stronę wyszukiwania paczek InPosta, wpisałem numer paczki i sprawdziłem w jakim miejscu się znajduje.
Zamiast zainteresować się lokalizacją mojej paczki, moją uwagę przykuł adres url który wyglądał dość dziwnie (numer paczki zamieniłem na zera):

https://inpost.pl/pl/pomoc/znajdz-przesylke?package[0000000]

Adres zawierał tablicę jako parametr. Miało to sens w przypadku gdy podaliśmy kilka zamówień w wyszukiwarce. Wtedy adres wyglądał tak

https://inpost.pl/pl/pomoc/znajdz-przesylke?package[0000000,0000001]

Tylko tak się po prostu nie robi :)

Sprawdziłem w źródle strony gdzie dokładnie ląduje ten parametr. Okazało się, że ląduje jako parametr tablicy w jakimś budowanym zapytaniu w JavaScripcie. Niestety, minęło tyle czasu że nie jestem Wam go w stanie pokazać.
Postanowiłem podmienić adres na coś ciekawszego. Wrzuciłem stary dobry skrypt, który testuje proste wywołanie XSS'a

https://inpost.pl/pl/pomoc/znajdz-przesylke?package[<script>alert('xss')</script>]

który od razu zadziałał - czyli w Chromie wyświetlił białą stronę ponieważ Chrome zablokował skrypt :) Niestety w przypadku Firefoxa (najnowsza wersja na tamten czas) już tak miło nie było, bo jak widać na załączonym poniżej filmiku - skrypt się wykonał!


InPost XSS - błąd znaleziony na stronie wyszukiwania przesyłek

Problem polegał na tym, że dane z parametru url nie były escapowane, znaki nie były zamienione na encje HTMLowe i skrypt był możliwy do wykonania.

Co to oznacza dla zwykłego Kowalskiego?

Wielu z nas korzysta z InPosta do nadawania/odbierania paczek, więc podesłanie komuś linka do zaufanej strony nie wzbudziłoby podejrzeń. Szczególnie do tak popularnej jak wyszukiwarka paczek.
Problem w tym, że gdyby Kowalski otworzył link, mógłbym wykonać dowolny kod w jego przeglądarce bez jego wiedzy. Ot co :)

Zgłoszenie

28 listopada zgłosiłem InPostowi informację o odnalezieniu luki. Odpowiedź na moją wiadomość otrzymałem dopiero 8 grudnia i przekazałem dokładne informacje nt. wywołania XSS.
Błąd został naprawiony po kilku dniach, a z tego co zauważyłem to po prostu zablokowali możliwość wprowadzenia parametru zawierającego znaki "></

W nagrodę za przekazanie informacji o błędzie otrzymałem 9 kodów na nadanie paczek o różnych gabarytach o wartości 100zł.

Sort:  

W nagrodę za przekazanie informacji o błędzie otrzymałem 9 kodów na nadanie paczek o różnych gabarytach o wartości 100zł.

Fajnie, że się odwdzięczyli, ale szczerze mówiąc, nagroda ta ma się nijak w stosunku do tego, jaką dużą przysługę im zrobiłeś - nie popisali się.

Tak czy inaczej, dobra robota!

przydałby się dodatkowy opis. Ty coś wstrzyknąłeś, czy natknąłeś się na coś, co wstrzyknął ktoś inny?

Poza tym, samo pokazanie efektu jest nudne. Jako whitehat, powinieneś:

  1. Udekumentować przypadek
  2. Poinformować ich o dziurze
  3. Upewnić się, że go załatali
  4. Opublikować materiał tłumaczący, gdzie byłą dziura - by inni mogli się nauczyć czegoś :)

W sumie wrzucałem filmik na D.Tube, nie spodziewałem się że to jest tak ze sobą połączone że od razu poleci mi publikacja na blogu :D Już fixuję, za chwilę będzie bogatszy opis :)

Coin Marketplace

STEEM 0.32
TRX 0.11
JST 0.034
BTC 66269.58
ETH 3204.67
USDT 1.00
SBD 4.24