27 czerwca 2010

Przechwytywanie poświadczeń za pomocą ataku typu XSS

Wielokrotnie omawiałem już luki typu XSS (Cross-site scripting), czyli jedne z najczęściej spotykanych podatności pozwalających intruzom na osadzanie własnego kodu w treści atakowanego serwisu. Atak XSS może posłużyć intruzowi do skierowania użytkownika na dowolną (np. złośliwą) stronę internetową, może również jednak spowodować zmianę zawartości wyświetlonej przez użytkownika witryny. Tego typu ataki mogą jednak posłużyć również do wykonania wielu innych niebezpiecznych akcji, nawet takich jak przechwycenie poświadczeń użytkownika określonego serwisu.

Poniższy materiał video stanowi bardzo interesujący przykład na to, w jaki sposób atak typu XSS może posłużyć intruzom do przechwytywania poświadczeń:


Widzimy więc, że odpowiednie zmodyfikowanie działania funkcji wyszukiwania poprzez wstrzyknięcie własnego złośliwego skryptu, pozwoliło na przechwycenie danych logowania wprowadzonych przez użytkownika serwisu.

Jak dużym i nagminnym problemem są podatności na tego typu ataki, dobitnie pokazuje ostatni przykład luki typu persistent XSS w serwisie Twitter.com. Przypomnijmy pokrótce, że luka w popularnym Twitterze pozwalała na wstrzyknięcie własnego skryptu poprzez jedno z pól formularza rejestrowania zewnętrznych aplikacji. Jako że takie powiązanie z inną aplikacją jest trwałe, również osadzenie odnośnika do skrypty zostawało przez Twittera zapamiętane, co umożliwiało właśnie atak typu persistent. W takim przypadku intruz nie musi nawet zwabiać ofiary na specjalnie przygotowany odnośnik, do wykonania potencjalnie niebezpiecznego skryptu przez przeglądarkę ofiary, wystarczyło jedynie odwiedzenie adresu jednego z typowych twittnięć.

Biorąc pod uwagę wszystkie potencjalne zagrożenia, twórcy serwisów i aplikacji webowych muszą przywiązywać większą wagę do obrony swych rozwiązań przed atakami typu XSS. Kluczowe jest tutaj z pewnością dokładne zrozumienie zagrożenia, w czym może pomóc właśnie zapoznanie się z przykładami... praktycznych ataków.