02.10.2013 | 07:12

Adam Haertle

Resetowanie haseł użytkowników w serwisach ZTM i URBANCARD

Jest wiele sposobów przeprowadzania resetu hasła użytkownika i nie jest tak prosto wymyślić taki, dzięki któremu każdy będzie mógł zresetować hasło każdego użytkownika usługi. Programistom serwisu internetowego Mennicy jednak się to udało.

Idąc z duchem czasu operatorzy systemów kart miejskich postanowili jakiś czas temu udostępnić obywatelom możliwość doładowywania karty przez internet. Inicjatywa ze wszech miar chlubna, choć wdrożenie – jak to często bywa – niezbyt szczęśliwe. Należy jednak oddać honor firmie – na zgłoszenie o błędzie zareagowała szybko i profesjonalnie, a błędy zostały usunięte.

Dlaczego warto przyglądać się linkom

Firma Mennica Polska, dostawca systemów Warszawskiej Karty Miejskiej, wrocławskiej URBANCARD, Bydgoskiej Karty Miejskiej oraz lubelskiej Karty Biletu Elektronicznego, opracowała także serwis www.kartamiejska.pl. Możemy za jego pomocą (lub jego elementów osadzonych na stronach poszczególnych operatorów miejskich) zarejestrować swoje konto, przypisać do niego kartę oraz ją załadować. Jeden z naszych czytelników wskazał nam ciekawy błąd w serwisie (o którym wspomnimy na końcu wpisu), a przy okazji weryfikacji jego zgłoszenia zauważyliśmy, że programiści tworzący mechanizm przypominania hasła poszli bardzo nietypową drogą.

Przyglądając się serwisom internetowym mamy w zwyczaju sprawdzać proces odzyskiwania hasła (godne potępienia przypadki umieszczamy potem na naszej corocznej liście). Tak też zrobiliśmy i tym razem. Po założeniu konta na stronie kartamiejska.pl „zapomnieliśmy” hasła i poprosiliśmy o jego przypomnienie. Co prawda nie dostaliśmy pocztą naszego starego hasła, ale link do resetu wyglądał bardzo ciekawie.

Witaj [email protected],

Zarejestrowałeś w Serwisie kartamiejska.pl wniosek o przypomnienie Twojego hasła.

Prosimy o kliknięcie na poniższy odnośnik lub o skopiowanie odnośnika i wklejenie do adresu przeglądarki.
Zostaniesz przeniesiony do strony umożliwiającej zmianę hasła na nowe.
Prosimy pamiętać, że odnośnik jest aktywny przez 12 godzin.

https://kartamiejska.pl/Default.aspx?tabid=90&dt=9&language=pl-PL&t=MDkvMjUvMjAxMyAxMDo1NTo0MQ==&a=dGVzdG93ZUBrb3N6bWFpbC5wbA==

Pozostałe Twoje dane rejestracyjne to:
- adres e-mail: [email protected]

Dziękujemy za skorzystanie z usług Serwisu kartamiejska.pl.

Base64 jako jedyna linia obrony

Link, znajdujący się w wiadomości, wygląda na pierwszy rzut oka całkiem nieźle. Ale zaraz, czy to jest kodowanie base64? Ciekawe, co tam zamieszczono.

base64decode(MDkvMjUvMjAxMyAxMDo1NTo0MQ==) = 09/25/2013 10:55:41
base64decode(dGVzdG93ZUBrb3N6bWFpbC5wbA==) = [email protected]

Pierwsza myśl, jaka nam przyszła do głowy, brzmiała „nie, to niemożliwe, żeby wystarczyło podmienić adres email na cudzy, by zresetować hasło innego użytkownika”. Mimo to postanowiliśmy założyć drugie konto i przetestować ten pomysł. Jak się pewnie domyślacie, czytacie ten artykuł, ponieważ zadziałało. Wystarczyła zatem znajomość adresu email dowolnego użytkownika serwisu, by można było zmienić mu hasło.

Efekt działania zmodyfikowanego linku

Efekt działania zmodyfikowanego linku

Jedyne weryfikacje, jakie odbywały się po stronie serwera, to czy adres email istnieje w bazie oraz czy data i godzina z linku nie są starsze o więcej niż 12h od obecnego czasu. Czemu programiści nie postanowili skorzystać z lepszych zabezpieczeń?  To pewnie pozostanie ich słodką tajemnicą.

Szczęście w nieszczęściu

Błąd występował w serwisie kart warszawskich, wrocławskich oraz bydgoskich. Kart lubelskich nie mogliśmy zweryfikować, ponieważ nie udało się nam przejść procesu rejestracji konta bez działającego numeru karty. Dla kart bydgoskich i wrocławskich występowała jedynie drobna różnica – godzina zapisana była w formacie AM/PM.

Na szczęście w nieszczęściu nic nie wskazuje na to, by na serwerze kartamiejska.pl przechowywane były dane osobowe użytkowników systemu. Po przejęciu cudzego konta można jedynie:

  • poznać powiązane z kontem numery kart miejskich
  • poznać historię doładowań internetowych (kwoty, rodzaje kupionych biletów, nazwa banku z którego dokonano płatności)
  • konto zlikwidować
  • zmienić adres email konta i zablokować tym samym użytkownikowi możliwość doładowywania karty miejskiej on-line (jeden numer biletu może być przypisany do jednego konta w systemie).

Nie są to jak widać poważne konsekwencje, jednak biorąc pod uwagę ambitne plany rozbudowy funkcjonalności karty miejskiej, warto zabezpieczyć system, zanim znajdą się w nim bardziej wrażliwe dane.

Inne błędy w systemie

Na problem resetowania haseł trafiliśmy przy okazji analizy zgłoszenia innego błędu. Nasz Czytelnik LukOne poinformował, że po otwarciu publicznie dostępnego linku

https://kartamiejska.pl/Ztm/%28S%28yrs2umpqznd2yzkceawyi5a0%29%29/IframeTransactionHistory.aspx

wykorzystywanego do osadzenia fragmentów strony kartamiejska.pl w witrynie ztm.waw.pl, można było podejrzeć historię wszystkich zakupów doładowań kart miejskich przez internet. Według naszej wstępnej oceny dostępne w sieci były dane ponad 30 tysięcy transakcji takie jak:

  • numer karty miejskiej
  • rodzaj kupowanego biletu
  • nazwa banku, za pomocą którego transakcja została opłacona.

Ponownie nie były to dane szczególnie wrażliwe, jednak brak jakiejkolwiek walidacji zapytań po stronie serwera (wystarczyło zmieniać numer transakcji jako parametru zapytania na przykładzie poniżej)

https://kartamiejska.pl/Ztm/%28S%28yrs2umpqznd2yzkceawyi5a0%29%29/IframeTransactionHistory.aspx?ptgid=62485

wskazywał na poważne zaniedbania programistów.

Bardzo pozytywna reakcja Mennicy

Opisane powyżej błędy przekazaliśmy w czwartek na adres kontaktowy podany na stronie. Wczoraj otrzymaliśmy informację zwrotną. Pracownicy Mennicy nie tylko poinformowali, że błędy zostały poprawione, ale także podziękowali za przesłane zgłoszenie i zapowiedzieli, że poddadzą całą witrynę dokładnemu audytowi. Chyba jedyne, co mogli zrobić lepiej, to przeprowadzić audyt bezpieczeństwa przed wdrożeniem kodu w środowisku produkcyjnym :)

Powrót

Komentarze

  • 2013.10.02 13:58 Kamil

    Jest takie stare przysłowie:

    „You pay peanuts, you get monkeys”

    Tak się kończy oszczędzanie na pensjach…

    Odpowiedz
  • 2023.08.19 14:05 Ewelina Bździel

    Witam nie pamiętam ani maila ani hasła swojego od Urbancard

    Odpowiedz

Zostaw odpowiedź do Kamil

Jeśli chcesz zwrócić uwagę na literówkę lub inny błąd techniczny, zapraszamy do formularza kontaktowego. Reagujemy równie szybko.

Resetowanie haseł użytkowników w serwisach ZTM i URBANCARD

Komentarze