Błędy na stronie Idea24On-Line

Idea24 on-line to system elektronicznej obsługi Klientów sieci IDEA. Dzięki niemu w prosty i szybki sposób można uzyskać informacje o swoim koncie abonenckim i telefonach, które na nim posiadamy. Niestety mamy również możliwość przeglądania cudzych danych bez potrzeby logowania się na konta tych osób.

Z Idea24 on-line mogą korzystać wszyscy Użytkownicy ofert abonamentowych w sieci Idea. Logowanie do systemu wygląda następująco: wpisujemy numer swojego telefonu, po czym otrzymujemy tymczasowe hasło za pomocą SMSa, które wpisujemy na stronie.

Po zalogowaniu się do systemy Idea24 on-line zostaje udostępniony szereg opcji, pozwalające uruchomić nowe usługi, zmienić plan taryfowy, zmienić adres do korespondencji czy też zmienić formę płatności a także przejrzeć biling z ostatniego miesiąca.

Z powodu błędu występującego na stronie Idea24 on-line możemy również przeglądnąć cudze biling nie tylko z aktualnego, ale również z wcześniejszych okresów. Poprzez zastosowanie techniki SQL injection mamy pełną kontrolę nad przesyłanymi danymi.

Wszystkie dane przesyłane są poprzez poniższy link:

order_billing.do?accountId=xxx&msisdn=xxx&customerId=xxx&date=xxx&smsMsisdn=xxx

Zmienna date określa nam datę wystawienia faktury, który przekazywany jest w formacie rrrr-mm-dd (rok-miesiąc-dzień), gdzie istotny jest tylko rok i miesiąc zaś dzień miesiąca nie jest brany pod uwagę. A zatem wprowadzając do niej konkretne zmiany możemy bez problemu uzyskać biling z wcześniejszych okresów rozliczeniowych.

Do zmiennej smsMsisdn przekazywany jest numer telefonu, pod który ma zostać wysłany SMS, jeśli dany biling będzie dostępny. Co ciekawsze może być to dowolny numer telefonu komórkowego, również z poza sieci Idea.

Zmienna msisdn zawiera informację o numerze telefonu, dla którego ma zostać pobrany biling (musi to być numer użytkownika oferty abonamentowej sieci Idea).

Zmienne accountId i customerId przechowują numery identyfikacyjne konta i klienta – wartości te można zmieniać dowolnie i jeżeli nie natrafimy na aktywny numer pojawi się błąd. Modyfikacja tych zmiennych umożliwia pobranie danych adresowych osoby, do której należy dane konto. Zostaje zamówiony niekompletny biling (z powodu błędnego numeru telefonu – msisdn), który zawiera informacje adresowe klienta – żeby uzyskać kompletny biling potrzebny jest nam poprawny numer telefonu, z którego korzysta dany klient.

Kolejny błąd dotyczy sposobu odbierania zamówionych bilingów. Każdy biling jest wywoływany poprzez poniższy link:

get_billing.do?id=xxx&nr=1

gdzie zmienna id przechowuje numer wygenerowanego bilingu na serwerze. Z powodu braku odpowiedniej kontroli, system nie sprawdza czy faktycznie wywołany biling należy do konkretnego użytkownika. Wstawiając odpowiednie wartości do zmiennej id można uzyskać kompletny biling przypadkowej osoby – biling taki zawiera dane teleadresowe i informacje o osobie oraz wykaz wszystkich połączeń, które zostały wykonane.

Po poinformowaniu zespołu Idea o wyżej wymienionych błędach, część z nich została poprawiona, niestety nadal istnieje możliwość wyświetlania niektórych z informacji. Poprawki, jakie zostały wprowadzone przez zespół Idea to przede wszystkim zmieniony sposób wysyłania danych podczas zamawiania rachunku szczegółowego. Przesyłane dane są już weryfikowane i wysyłane metodą POST (a nie jak to miało miejsce wcześniej metodą GET). Również zostało ograniczone wysyłanie danych do jednej – daty, która ma atrybut ukryty (hidden). A zatem po wprowadzonych zmianach odpadł problem wysyłania potwierdzenia SMSem na inny numer i z zaglądaniem w dane teleadresowe innym abonentom. Możliwe jest jednak nadal pobieranie rachunków szczegółowych z poprzednich okresów rozliczeniowych – wystarczy skonstruować odpowiedni formularz, który przekaże zmienną date (dokładnie ta sama sytuacja, jaka występowała na stronach Allegro).

A zatem jak widać coraz częściej programiści popełniają drobne błędy podczas końcowego programowania systemu, co w efekcie objawia się podobnymi sytuacjami choćby nawet taką jak ta powyższa. Przykładem również może być ostatnio opisywany błąd SQL injection występujący w serwisie Tlenofon.pl.

Oczywiście wiadomo, że nie można zabezpieczyć się w stu procentach przed podobnymi błędami, ale zawsze można zmniejszyć ich zagrożenie prawie do zera. Szkoda jednak, że programiści nie przykładają większej uwagi do bezpiecznego programowania. A może to nie ich wina? Być może problem leży w dodatkowych kosztach związanych z testowaniem produktów przed ich ostatecznym wydaniem, które okazują się tak wysokie, że zleceniodawca rezygnuje z tego typu usługi? Być może wina leży po stronie braku odpowiedniego zespołu testującego a nawet braku czasu na tego typu poprawki?

Zobacz również:
– Strony Tlenofon.pl podatne na atak SQL Injection
– Błędy w Onet.pl
– Błąd w internetowym serwisie aukcyjnym Allegro.pl nadal aktualny
– Błąd w internetowym serwisie aukcyjnym Allegro.pl

Źródło informacji: Hacking.pl wspólnie z Pawłem Hrycykiem