Jak ZnanyLekarz mógł przekierować użytkownika na dowolną, potencjalnie niebezpieczną stronę www?
#fajne-logowanie
Kilka dni temu na ZnanyLekarz.pl zauważyłem, że logując się w serwisie trafiam na tę samą stronę, z której wszedłem w panel logowania. Z czystej ciekawości chciałem sprawdzić jak to robią, więc wylogowałem się i najechałem ponownie na przycisk zaloguj. Po najechaniu zauważyłem, że w URLu przekazują adres strony, na której aktualnie jestem, jako parametr _redirect
Rozwiązanie w porządku, nie mam nic do zarzucenia, ba, nawet je lubię bo sporo serwisów olewa tę funkcjonalność ale niestety okazało się że jest mały myczek...
#a-jednak-niefajne-logowanie
Takie rozwiązanie pozwala przekierować użytkownika na stronę, którą poprzednio czytał. Dla bezpieczeństwa aplikacja powinna to zrobić tylko w obrębie wybranych domen jak na przykład znanylekarz.pl, tylko najpierw aplikacja musi sprawdzić czy podana domena znajduje się na liście dozwolonych przekierowań, a tego niestety zabrakło…
Okazało się, że możliwe jest podanie własnego adresu URL w parametrze _redirect
, tym samym umożliwiając przekierowanie użytkownika na dowolną stronę poza domeną znanylekarz.pl
https://www.znanylekarz.pl/social-connect/pl_sso?_redirect=https%3A//steemit.com/@kamilzielinski
Jeśli użytkownik był już zalogowany to przekierowanie następowało natychmiast po kliknięciu w link.
#czy-to-w-ogole-jest-niebezpieczne
Używając tego błędu atakujący mógłby przekierować użytkownika na własną stronę serwującą np. exploity lub podrobić stronę logowania ZnanyLekarz i mógłby wyciągnąć od użytkowników dane logowania (a na podstawie historii odwiedzanych lekarzy można wiele się o człowieku dowiedzieć). No bo kto by nie kliknął w link do serwisu któremu ufa?
Pewnie część z Was w głowie sobie myśli “pff, przecież rozpoznałbym po przekierowaniu, że to nie jest ich prawdziwa strona znanyIekarz.pl i nie podałbym tam swoich danych logowania” - ok, więc ilu z Was zauważyło że w tym cytacie to nie jest adres prowadzący do znanylekarz.pl ale do znanyiekarz.pl (w adresie jest wielka litera I zamiast L) ;) ?
Ten sam sposób mogłaby wykorzystać osoba, próbująca uzyskać wasze dane. Stworzyłaby kopię serwisu pod podobną domeną, a tam czekałby na was formularz wyłudzający dane.
BTW. domena nadal jest do wzięcia
#latwo-przyszlo-latwo-poszlo
Błąd zgłosiłem kilka dni temu - 8 października 2018 a dziś - czyli 10 października 2018 - została wgrana poprawka na produkcję, więc użytkownicy mogą się czuć bezpieczni (ale zachowajcie zdrowy rozsądek).
Dzięki ZnanyLekarz za szybką reakcję i fix! :)
Congratulations @kamilzielinski! You received a personal award!
Click here to view your Board
Do not miss the last post from @steemitboard:
Vote for @Steemitboard as a witness and get one more award and increased upvotes!