Rozbił w drobny pył kilkanaście serwerów VPN Twittera. Ominięte dwuczynnikowe uwierzytelnienie, hasła w plaintext i dostęp na root

10 sierpnia 2019, 20:57 | Aktualności | komentarzy 8
: zin o bezpieczeństwie - pobierz w pdf/epub/mobi.

A to wszystko za sprawą paru krytycznych podatności w rozwiązaniu Pulse Secure (SSL VPN). Historycznie wyglądało to tak: badacze zgłosili do producenta problemy. Poczekali na patcha, poczekali 30 dni i sprawdzili czy Twitter (i parę innych dużych firm) załatało się. W przypadku Twittera było to 13 serwerów. Uzbrojeni w jeszcze dymiące bugi:

  • CVE-2019-11510 – Pre-auth Arbitrary File Reading
  • CVE-2019-11542 – Post-auth Stack Buffer Overflow
  • CVE-2019-11539 – Post-auth Command Injection
  • CVE-2019-11538 – Post-auth Arbitrary File Reading
  • CVE-2019-11508 – Post-auth Arbitrary File Writing
  • CVE-2019-11540 – Post-auth Session Hijacking

zabrali się za przejmowanie urządzeń. Na pierwszy ogień poszło czytanie plików z urządzeń (bez uwierzytelnienia). Udało się odczytać m.in. taki zestaw:

/etc/passwd
/etc/hosts
/data/runtime/mtmp/system
/data/runtime/mtmp/lmdb/dataa/data.mdb
/data/runtime/mtmp/lmdb/dataa/lock.mdb
/data/runtime/mtmp/lmdb/randomVal/data.mdb
/data/runtime/mtmp/lmdb/randomVal/lock.mdb

Były tam hasła użytkowników? Były – w formie zahashowanej, chyba że ktoś zalogował się atakowanego do SSLVPN-a –  wtedy hasła były już w plaintext. Witamy w 2019 roku :P

The VPN user and hashed passwords are stored in the file mtmp/system. However, Pulse Secure caches the plain-text password in the dataa/data.mdb once the user log-in.

Ale jak na porządną firmę (Twitter) przystało, użytkownicy korzystają z dwuczynnikowego uwierzytelnienia. Co z tym? Można je obejść na dwa sposoby:

  1. Można było pewne poufne konfiguracyjne dane pobrać z plików na serwerach SSLVPN (patrz powyższe powyższe pliki):
    ” We observed Twitter using the 2FA solution from Duo.com. With the file mtmp/system, we could obtain the integration key, secret key, and API hostname, which should be protected carefully according to the Documentation.”
  2. Albo opcja chyba łatwiejsza. Poczekać na zalogowanie się użytkownika (podaje hasło i dodatkowy czynnik uwierzytelniający) a później pobrać jego ID sesji, który następnie mógł być ponownie użyty przez atakujących:
    The Pulse Secure stores the user session in the randomVal/data.mdb. Without Roaming Session option enabled, we can reuse the session and log into your SSL VPN!

Dobra nasza, jesteśmy już zalogowani do VPN-a, ale chcemy więcej! Najlepiej przejąć całe urządzenie (dostęp do dowolnego polecenia w OS). W tym celu należało wykorzystać jeszcze jedną podatność, jednak miejsce gdzie mogła być ona aktywowana wymagało dostępu do konta admina (a dokładniej do jego hasła). Coż, jeśli admin nie chce się zalogować (wtedy można przechwycić jego hasło w plaintext), może wystarczy zkrakować hash jego hasła (leży sobie cierpliwie na samych urządzeniach) ? No więc trochę później…

Hi, we have cracked the admin hash and got the root shell. This is definitely a Pre-auth RCE on your SSL VPN server!

Odpalenie dowolnego polecenia jako root wyglądało tak:

rce 1

RCE2

Badacz otrzymał za zgłoszenie znaleziska ~$20 000 nagrody – najwyższą wartość, którą przewiduje bug bounty Twittera.

–ms

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. hmm

    „zkrakować hash jego hasła..”
    aby na pewno zkrakowac ? moze skrakowac

    Odpowiedz
  2. eh

    „$20 000” > śmiech na sali

    Odpowiedz
    • zglupi

      Bo ty nie wstajesz z łóżka za mniej niż 25k.

      Odpowiedz
  3. szkielet

    Bardzo malo, 0range powinien dostac 100.000$

    Odpowiedz
  4. tmk

    Do czego te serwery VPN Twitera są używane?

    Odpowiedz
  5. John Sharkrat

    Rozbił w drobny pył kilkanaście serwerów VPN” – Użył plastyku, semtexu czy C4?

    Odpowiedz

Odpowiedz