• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Как я мог взломать любой аккаунт Instagram [Перевод]

NokZKH

Переводчик
Забанен
Регистрация
09.02.2019
Сообщения
99
Реакции
121
Пожалуйста, обратите внимание, что пользователь заблокирован
В этой статье я расскажу о том, как я нашел уязвимость в Instagram, которая позволила мне взламывать любую учетную запись в ней. Сотрудники службы безопасности Facebook и Instagram устранили проблему и наградили меня 30000 долларов США в рамках их программы вознаграждений.

Facebook постоянно работает над улучшением контроля безопасности на всех своих платформах. В рамках этого они недавно увеличили вознаграждение за все критические уязвимости, включая захват учетных записей. Поэтому я решил попытать счастье в Facebook и Instagram. К счастью, мне удалось найти одну уязвимость в Instagram.

Функция Instagram "забыл пароль" - это первое, что пришло мне в голову при поиске уязвимостей. Я попытался сбросить пароль в веб-интерфейсе Instagram. У них достаточно мощный механизм сброса пароля, основанный на ссылках, и я не смог найти никаких ошибок после нескольких минут тестирования.

Затем я восстанавливал пароль в мобильном приложении, где я смог найти восприимчивое поведение. Когда пользователь вводит свой номер мобильного телефона, ему отправляется шестизначный пароль. Он должны ввести его, чтобы изменить свой пароль. Поэтому, если мы сможем попробовать ввести все миллион кодов на конечной точке проверки кода, мы сможем изменить пароль любой учетной записи. Но я был совершенно уверен, что должны быть определенные ограничения от таких нападений. Я решил проверить это.

Мои тесты показали наличие ограничения скорости проверки. Я отправил около 1000 запросов, 250 из них приняли, а остальные 750 запросов были отменены. Пробовал еще 1000, и многие из них получили ограниченную. Таким образом, их системы проверяют и корректно ограничивают запросы.

Две вещи, которые меня поразили - это число запросов и отсутствие черного списка. Я мог отправлять запросы непрерывно, и меня не блокировали, хотя количество запросов, которые я мог отправить за короткий промежуток времени, ограничивались.

После нескольких дней непрерывного тестирования я обнаружил две вещи, которые позволили мне обойти их механизм ограничения скорости.
  1. Race Hazard
  2. IP rotation
Для тех, кто не знает о Race Hazard, пожалуйста, прочитайте о нём здесь. Отправка параллельных запросов с использованием нескольких IP-адресов позволила мне отправлять большое количество запросов без ограничений. Количество запросов, которые мы можем отправить, зависит от количества IP-адресов, которые мы используем. Кроме того, я понял, что срок действия кода истекает через 10 минут, это еще больше усложняет атаку, поэтому для выполнения атаки нам нужны тысячи IP-адресов.

Я сообщил об уязвимости в службу безопасности Facebook, но изначально они не смогли воспроизвести ее из-за недостатка информации в моем отчете. После нескольких электронных писем и убедительного доказательства концепции видео, я смог убедить их, что атака осуществима.

Подтверждение концепции:
Запрос пароля

POST /api/v1/users/lookup/ 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

q=mobile_number&device_id=android-device-id-here

Жертва получит пароль и срок его действия истечет через 10 минут.

Проверка пароля
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

Теперь нам нужно взломать эту конечную точку, используя несколько IP-адресов. Грубо говоря, я смог отправить 200 запросов с одного IP без ограничения скорости.

В своих тестах я использовал 1000 разных машин (для легкого достижения большого количества одновременных запросов) и IP-адреса для отправки 200 тыс. запросов (это 20 % от общей вероятности в миллион).

Отправка 200 тыс. Запросов
В реальном сценарии атаки злоумышленнику требуется 5000 IP-адресов для взлома учетной записи. Кажется много, но на самом деле это легко осуществимо, если вы используете провайдера облачных услуг, такого как Amazon или Google. Полный подбор одного миллиона кодов обойдется примерно в 150 долларов.

Команда безопасности Facebook убедилась в моей правоте, и предоставила вышеупомянутое видео об отправке 200 000 действительных запросов. Они быстро решили и устранили проблему.

После патча
Bounty

$ 30000 USD Reward

Я благодарю команду безопасности Facebook за то, что наградили меня через их программу вознаграждения за ошибки.

Переведено специально для https://xss.pro
Переводчик статьи - https://xss.pro/members/177895/
Оригинал - https://thezerohack.com/hack-any-instagram#articlescroll
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх