9:49
8/1/2013

Jest taka usługa dla pracowników Facebooka, która pozwala im “bezpiecznie” wymieniać się plikami. Usługa ta wystawiona jest publicznie pod adresem http://files.fb.com. Poniżej przedstawiamy jak jeden z internautów przełamał jej zabezpieczenia i był w stanie przejąć konto dowolnego pracownika Facebooka.

Niebezpieczna wymiana plików

Usługa “bezpiecznej wymiana plików” realizowana jest przez oprogramowanie Accellionu. Nir Goldshlager wpadł na pomysł przetestowania funkcji resetu hasła do konta, ale aby to zrobić, warto byłoby posiadać dostęp do jakiegoś konta testowego. Niestety, okazało się, że Facebook usunął z kodu HTML strony głównej link do założenia konta (ma to sens, skoro konta zakładają tylko swoim pracownikom).

Czy jednak usunięcie linku (a więc modyfikacja GUI webaplikacji) to wystarczający sposób na uniemożliwienie dostępu do faktycznego formularza rejestracji? Nie. Znając bezpośredni URL służący do zakładania kont w oprogramowaniu Accellionu (/courier/web/1000@/wmReg.html) ciągle można było dotrzeć do formularza rejestracji:

Zakładanie konta w Accellionie

Głęboko ukryty ;) formularz zakładania konta w usłudze bezpiecznej wymiany plików.

Sukces. Konto założone. Co dalej? Można testować aplikację w dwóch podejściach: dynamicznym (wysyłanie danch do aplikacji i badanie odpowiedzi oraz wnioskowanie na temat logiki działania aplikacji) lub statycznym — czyli przeprowadzając analizę kodu źródłowego. O ile mam kod źródłowy…

Analiza kodu źródłowego webaplikacji

Dostęp do kodu źródłowego webaplikacji z reguły nie jest możliwy (chyba, że na skutek błędu parsera) — ale skoro “bezpieczna wymiana plików” Facebooka bazuje na oprogramowaniu firmy trzeciej, to być może firma ta udostępnia to oprogramowanie do instalacji na własnych serwerach (czyli daje kod źródłowy)? Bingo.

Kod ze strony Accellona można pobrać pod postacią wirtualnej maszyny (Free Trial na 45 dni). Maszyna wirtualna ma niestety systemowe zabezpieczenie i nie jest możliwe podejrzenie kodu źródłowego webaplikacji z jej poziomu. Ale przecież dysk VM można podmontować bezpośrednio. Bingo.

Ale to nie koniec przeszkód. Znamy już strukturę katalogów i nazwy plików, ale kiedy chcemy podejrzeć kod (PHP), okazuje się, że producent zakodował go przy pomocy ionnCube PHP Encodera.

ionCube PHP encoder

ionnCube PHP encoder

I tego Nir nie był już w stanie obejść, musiał więc zadowolić się tylko znajomością nazw plików, często dość opisową, np. wmPassupdate.html

Aktualizacja hasła

Okazało się, że programiści Accellionu popełnili jeden z popularnych błędów — sami bardzo często odnajdujemy go w trakcie wykonywanych przez nas testów bezpieczeństwa webaplikacji. Otóż w procedurze aktualizacji hasła, skrypt za to odpowiedzialny identyfikuje użytkownika po …ID w pliku cookie. I zakodowanie tego ID przez symetryczne base64 nie podnosi tu poprzeczki ;)

passwordreset via referer base64, email

Żądanie resetu hasła (ciasteczko referer identyfikuje użytkownika)

Mając więc uprzednio założone konto, wystarczyło wywołać aktualizację hasła i zmodyfikować zawartość ciasteczka, aby podszyć się pod dowolnego użytkownika systemu i to jemu, a nie sobie, zaktualizować hasło na wybrany ciąg znaków. Game Over.

Podsumowanie

Nir znalazł przeszło 20 błędów w oprogramowaniu Accellionu. Wszystkie zostały już poprawione. Facebook też już lepiej zabezpieczył swoją implementację “bezpiecznego transferu plików” dla pracowników. Ale to nie koniec błędów w Facebooku — Nir zapowiada, że niebawem opisze jak obejść OAuth Facebooka…

P.S. Jeśli interesuje cię wyszukiwanie błędów w webaplikacjach — zapraszamy na nasze szkolenie z Atakowania i Ochrony Webaplikacji, które odbędzie się w Krakowie 7-8 lutego 2013r.

Przeczytaj także:

11 komentarzy

Dodaj komentarz
  1. Brawo!
    Dociekliwość godna uznania (:

  2. Z plików zakodowanych IonCube też można wyciągnąć źródła, w starszych wersjach nawet były one nie obfuscowane i z komentarzami.

  3. bardzo fajne podejście – od A do Z
    plus dla niebezpiecznika za ładny opis

  4. Szkoda, że błąd już nieaktualny :P
    Ale gość ma u mnie pełen podziw :D

  5. Chyba mała literówka, zamiast: ionnCube powinno chyba być ionCube ;)
    Pozdrawiam

  6. Miło jest czytać takie relacje z przełamywania zabezpieczeń. :)

  7. […] co opisaliśmy, jak można było przejąć konto dowolnego pracownika Facebooka przy pomocy podstawowego błędu w tzw. usłudze &#82…, a tu okazuje się, że bardzo podobny błąd pozwalał zresetować hasło dowolnemu użytkownikowi […]

  8. srsly… rok 2013, facebook (czy też aplikacja zakupiona przez facebook) i takie akcje? :O

  9. Gdzieś na sieci istnieje, lecz w jakimś tajemnym miejscu,
    decoder do najnowszego ioncube.

  10. A nie lepiej było umieścić owe narzędzie dla pracowników pod jakimś fajnym adresem IP typu 192.168.xxx.xxx?

  11. A handful of media outlets have reported that Accellion’s implementation at Facebook was exposed by a security researcher, who reported a “serious password reset” vulnerability.

    This is old news.
    The incident actually happened last year on March 19, 2012, and was resolved and patched by Accellion within one day of it being reported.
    A patch for this vulnerability was issued with the 9_1_166 release on Mar 20, 2012. Any customers on release version 9_1_166 or later are safe from this reported issue.
    If you are not on 9_1_166 or later, Accellion recommends updating immediately.
    As a security company, Accellion takes any vulnerability very seriously. We undergo regular audits from external sources to ensure our product’s security.

Twój komentarz

Zamieszczając komentarz akceptujesz regulamin dodawania komentarzy. Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy.