Уязвимость была обнаружена Josip Franjković и устранена около двух месяцев назад, а вчера автор рассказал про нее в блоге pyx.io. У бага есть схожесть с находкой Дэна Меламеда.
Для проведения эксплоита требовался аккаунт в Facebook, почта на Outlook.com и жертва. При этом email в Outlook не должен был быть привязан к вашему аккаунту Facebook.
В Facebook есть функция в "Поиск контактов на Facebook" (Find contacts on Facebook), которая приглашает контакты из списка ваших контактов и добавляет email к вашему аккаунт.
Когда вы разрешаете Facebook доступ к контактной книге Outlook, происходит запрос GET к
https://m.facebook.com/contact-importer/login/?api_instance=1&api_ver=wave5&auth_token=TOKEN
который добавляет email к вашему аккаунту.
Валидный токен, который получал автор:
{"code":"2c59ed24-8674-a76a-3232-6fse0d6d5cc7",
"redirect_uri":"https://www.facebook.com/accept_token.php?api_ver=wave5&csrf=AQDt6cT&
appdata={"use_case":1,"type":1,"flow":30,"domain_id":4,"tracked_params":"[]","enc_uid":"AdjjCVjSQ3I1RFRllRz81ohsy737W7oipkrAYKmCYISHLHcmzi55G4GaGckcSCP97t0",
"post_login_redirect":"https://m.facebook.com/contact-importer/login/?api_instance=1&api_ver=wave5"}"}
В этом запросе не было проверок, и поэтому его можно было повторять столько, сколько угодно. Вся беда в том, что этот же способ работал и для других пользователей.
Алгоритм действий потенциального злоумышленника был следующим: использовать «Поиск контактов на Facebook» со своего аккаунта, при этом логируя все запросы; найти запрос к /contact-importer/login
, отвязать добавленный email от своего аккаунта и каким-либо способом заставить жертву сделать запрос к /contact-importer/login
. Теперь email будет добавлен к аккаунту жертвы, и можно воспользоваться функцией «Забыл свой пароль» для получения доступа к нему.
Видео с демонстрацией эксплойта:
Автор: HotWaterMusic