Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Mógł przejąć dowolne konto na Instagramie. Wybrał jasną drogę i zgarnął ~100 000 PLN
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
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.
Tu bardziej chodzi o to że można walić nieograniczoną ilość kombinacji kodów odzyskiwania.
@Marek, a jednak zapłacili
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
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ń…