В течение нескольких лет вы могли сменить пароль любому другому пользователю Facebook, просто изменив элемент profile_id в форме fbMobileConfirmationForm при аутентификации с мобильного телефона. Сама форма находится здесь.

Специалист по безопасности Джек Уитттен (Jack Whitten) в своем блоге объясняет суть бага, который связан с неправильной обработкой параметров скриптом /ajax/settings/mobile/confirm_phone.php для подтверждения номера телефона, который привязывается к аккаунту.

Один из принимаемых скриптом параметров — profile_id с указанием аккаунта, для которого осуществляется процедура.

В общем, эксплойт простой. Привязываем телефон к своему аккаунту, получаем код подтверждения.

Вводим этот код в форму активации здесь и изменяем элемент profile_id внутри, указав профиль жертвы.

При отставке запроса можно заметить, что значение __user (наше) отличается от profile_id (жертва).

Тем не менее, бэкенд благополучно скушал этот запрос — и нам приходит SMS с подтверждением, хотя мы уже привязались к чужому аккаунту.

Теперь можно поменять ему пароль.

Подтверждение о смене пароля тоже приходит на телефон.

28 мая 2013 года уязвимость устранили. Хотя воспользоваться багом уже нет возможности, но интересен сам факт, что такое было возможно в течение длительного времени. Компания Facebook выплатила $20 тыс. за информацию об этой уязвимости, что говорит о ее чрезвычайной опасности.

А сколько таких багов еще осталось?



Оставить мнение