Artykuły dotyczące tematu: URL

dodany: 21.02.2013 | tagi: , , ,

Poważna luka w module Facebooka

2

Facebook OAuth to moduł używany w komunikacji pomiędzy aplikacjami a użytkownikami Facebooka – zapewnia on dostęp do naszych aplikacji – w skrócie jest odpowiedzialny za to okno, w którym mamy wybór na zezwolenie bądź zablokowanie dostępu danej aplikacji:

OAuth Facebook

Sęk w tym, że posiada on dość poważną lukę, która pozwala na pełną kontrolę nad danym kontem, bez konieczności potwierdzenia dostępu dla danej aplikacji! Odkrył to haker z jasnej strony mocy – Nir Goldshlage.

 

Z czego wynika niebezpieczeństwo?

Aby zrozumieć problem tej luki należy poznać schemat tworzenia adresów URL dla OAuth. Dzięki odpowiedniej modyfikacji parametrów w adresie, możliwie jest ominięcie wymogu autoryzacji aplikacji przez użytkownika.

Przykładowy URL OAuth wygląda następująco:

Pierwszym elementem adresu jest app_id, który jak nie trudno się domyślić, jest ID konkretnej aplikacji.
Parametr next zawiera domenę z adresu URL danej aplikacji.
Jako przykład niech posłuży nam w ostatnim czasie głośna aplikacja Texas Holdem Poker:
jej app_id=2389801228, natomiast parametr  next  zawiera domenę zynga.com (next=http://zynga.com). Jeśli w linku pojawiłaby się inna domena, Facebook zablokowałby ją.

 

Magiczny parametr w adresie URL
Goldshlage odkrył fakt, że można użyć własnej domeny w parametrze next w adresie URL – pozwala to na dodanie wpisu ‚#xxx!‚ – przykład: https://beta.facebook.com/#xxx!/messages/.

 

Okazało się jednak, że parametr ten nie działał w każdej przeglądarce. Dlatego Goldshlage szukał dalej, aż odnalazł dwa inne, które działają w każdej przeglądarce – są to %23~! oraz %23%09!

Jednak to tylko część drogi do ominięcia mechanizmu zabezpieczającego Facebooka. Aby wykorzystać ten fakt, haker stworzył prostą aplikację, która służy do przekierowania użytkownika wraz z jego tokenem sesji do zdalnej strony, która rejestruje wszystkie tokeny w swoim logu.

Do dzieła!

Do wykonania ataku brakuje nam zgody użytkownika z podmienioną domeną aplikacji. W poniższym przykładzie haker posłużył się także aplikacją Texas Holdem Poker, tyle że jeśli ofiara zaakceptuje żądanie, to zostanie faktycznie przekierowana do dowolnej strony, która już z kontem użytkownika może zrobić co chce – jak np. ta, którą stworzył Goldshlage

Aby mieć najwięcej możliwości nad przejętym kontem, to najlepiej wybrać aplikację, która daje pełny dostęp  – taką jest choćby wbudowany Facebook Messenger  – w tym wypadku nie jest wymagane nawet potwierdzenie zgody na użycie aplikacji.

Przykładowy spreparowany złośliwy link: 

 

Link ten pozwala on na przejęcie tokena z największymi uprawnieniami do „fejsbukowego” konta – mało tego – token zdobyty w ten sposób praktycznie nigdy nie wygasa. Stanie się to dopiero wtedy, gdy użytkownik zmieni hasło. Oczywiście sam link nie jest groźny, gdyż nie mamy dostępu do wspomnianej aplikacji (haker stworzył go tylko w celach demonstracyjnych). Efekty działania możecie zobaczyć na poniższym wideo:

http://youtu.be/UlF7TeRKzt0