Эта статья посвящена простейшей уязвимости в Instagram, которая позволяет любому взламывать аккаунты Instagram без разрешений и прав. Программа баунти от Facebook и Instagram устранила проблему и заплатила мне 10.000$ в рамках их программы вознаграждений.
Device ID (идентификатор устройства) - это уникальный идентификатор, используемый сервером Instagram для проверки кодов сброса пароля. Когда пользователь запрашивает код доступа с помощью своего мобильного устройства, вместе с запросом отправляется идентификатор устройства ID. Тот же идентификатор устройства (ID) используется снова для проверки пароля.
Подтверждение при восстановлении пароли:
Код:
Скопировать в буфер обмена
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=device-id
Идентификатор устройства - это случайная строка, сгенерированная приложением Instagram. Так что, если один и тот же идентификатор устройства используется для запроса паролей нескольких учетных записей Instagram? Я проверил это и понял, что один и тот же идентификатор устройства можно использовать для запроса нескольких паролей разных пользователей.
В чем суть?
Существует один миллион вероятностей для 6-значного пароля (от 000001 до 999999). Когда мы запрашиваем пароли нескольких пользователей, мы увеличиваем вероятность взлома аккаунтов. Например, если вы запрашиваете код доступа 100 тысяч пользователей, использующих один и тот же идентификатор устройства, вы можете достичь 10-процентного успеха, поскольку для одного и того же идентификатора устройства выдается 100 тысяч кодов. Если мы запросим коды доступа для 1 миллиона пользователей, мы сможем легко взломать все один миллион учетных записей, увеличив пароль один за другим.
Таким образом, атакующий хакер, всего лишь, должен запросить запросы восстановления паролей для 1 миллиона пользователей, чтобы завершить атаку со 100% успехом. Также следует отметить 10-минутный срок действия кода, поэтому вся атака должна произойти за 10 минут.
Сейчас проблема пофикшена.
Автор бага - Laxman Muthiyah
Device ID (идентификатор устройства) - это уникальный идентификатор, используемый сервером Instagram для проверки кодов сброса пароля. Когда пользователь запрашивает код доступа с помощью своего мобильного устройства, вместе с запросом отправляется идентификатор устройства ID. Тот же идентификатор устройства (ID) используется снова для проверки пароля.
Подтверждение при восстановлении пароли:
Код:
Скопировать в буфер обмена
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=device-id
Идентификатор устройства - это случайная строка, сгенерированная приложением Instagram. Так что, если один и тот же идентификатор устройства используется для запроса паролей нескольких учетных записей Instagram? Я проверил это и понял, что один и тот же идентификатор устройства можно использовать для запроса нескольких паролей разных пользователей.
В чем суть?
Существует один миллион вероятностей для 6-значного пароля (от 000001 до 999999). Когда мы запрашиваем пароли нескольких пользователей, мы увеличиваем вероятность взлома аккаунтов. Например, если вы запрашиваете код доступа 100 тысяч пользователей, использующих один и тот же идентификатор устройства, вы можете достичь 10-процентного успеха, поскольку для одного и того же идентификатора устройства выдается 100 тысяч кодов. Если мы запросим коды доступа для 1 миллиона пользователей, мы сможем легко взломать все один миллион учетных записей, увеличив пароль один за другим.
Таким образом, атакующий хакер, всего лишь, должен запросить запросы восстановления паролей для 1 миллиона пользователей, чтобы завершить атаку со 100% успехом. Также следует отметить 10-минутный срок действия кода, поэтому вся атака должна произойти за 10 минут.
Сейчас проблема пофикшена.
Автор бага - Laxman Muthiyah