-15% na nową książkę sekuraka: Wprowadzenie do bezpieczeństwa IT. Przy zamówieniu podaj kod: 10000

Mógł przejąć dowolne konto na Instagramie. Wybrał jasną drogę i zgarnął ~100 000 PLN

15 lipca 2019, 10:07 | W biegu | komentarzy 5

Laxman Muthiyah miał stanowczo dobry dzień – w ramach programu Bug Bounty Facebook’a otrzymał $30.000 za możliwość przejęcia dowolnego konta na Instagramie.

Gdy użytkownik zapomni swojego hasła, w ramach funkcjonalności odzyskania konta wysyłany jest 6-cyfrowy kod SMS. Potencjalny atakujący mógłby metodą siłową próbować wysłać milion zapytań HTTP – próbując wykorzystać każdą możliwą kombinację kodu:

POST /api/v1/accounts/account_recovery_code_verify/ HTTP/1.1
User-Agent: Instagram 92.0.0.11.114 Android (27/8.1.0; 440dpi; 1080×2150; Xiaomi/xiaomi; Redmi Note 6 Pro; tulip; qcom; en_IN; 152830654)
Accept-Language: en-IN, en-US
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept-Encoding: gzip, deflate
Host: i.instagram.com
Connection: keep-alive

recover_code=123456&device_id=android-device-id-here

Instagram broni się jednak przed takimi atakami, stosując Rate Limiting. Laxman jednak odkrył, że potrafi pominąć wspomniany mechanizm ograniczający wysyłanie dużej ilości żądań HTTP – wystarczy użyć trochę różnych adresów IP – blokada aktywowana była dopiero po wysłaniu 200 żądań. Nie było też problemu żeby się zmieścić z wszystkimi żądaniami HTTP w 10 minut (taka jest ważność kodu).

5000 adresów IP x 200 = 1 000 000 żądań – czyli maksymalna liczba kiedy trafimy dobry kod i resetujemy hasło.

–jz & ms

 

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



Komentarze

  1. Marek

    A czy to nie jest bardzo popularna metoda odzyskiwania hasła i można by zgłosić do bugbounty do wielu firm rozwiązując tylko równanie:

    ilość potrzebnych adresów IP = ilośc możliwych haseł jednorazowych / ilośc akceptowanych zapytań z jednego IP ?

    Przecież to żadne bug tylko zwykła matematyka.

    Za osiągnięcie uznał bym posiadanie bazy 5000 adresów IP i skoordynowanie zapytań ale to znowu nie ma nic do instagrama.

    Odpowiedz
    • Jedrek

      Tu bardziej chodzi o to że można walić nieograniczoną ilość kombinacji kodów odzyskiwania.

      Odpowiedz
  2. Emi

    @Marek, a jednak zapłacili

    Odpowiedz
  3. Rafał

    Marek, prawdziwym błędem było to, że możliwość wpisania kodu SMS nie została zablokowana po kilku próbach – niezależnie od adresu IP

    Odpowiedz
  4. Mateusz

    W normalnym przypadku miałbyś jakiś losowy i długi ciąg znaków, a tutaj był tylko 6-cyfrowy kod z tak dużymi limitami blokowania żądań…

    Odpowiedz

Odpowiedz na Emi