[lp.ozon.ru] CSRF-уязвимость при регистрацию на трансляцию
Где обнаружено
На ресурсе lp.ozon.ru (находится в дополнительном скоупе) была обнаружена небольшая проблема в безопасности (CSRF), позволяющая пользователю проводить CSRF атаку на функционал Регистрации на вебинары.
Описание уязвимости
Из-за отсутствия CSRF маркера на методе https://lp.ozon.ru/api/webinar-api/client/v1/stream/subscribe?streamId={ID} и взаимодействие с запросом методом GET, позволяет воспроизводить проблему и регистрировать пользователей на вебинары, попутно отправляя сообщение на их электронную почту и регистрируя пользователя на вебинар (не смотря на уведомление на сайте, дополнительное подтверждение не требуется).
Шаги воспроизведения
- Перейти на https://lp.ozon.ru/, узнать ID вебинара, который вы хотите встроить в CSRF.
- Заменить ID в запросе в html файле POC или в ссылке https://lp.ozon.ru/api/webinar-api/client/v1/stream/subscribe?streamId='{%mask_value%}
(на данном примере осуществляется подписка на вебинар с ID'{%mask_value%}) - Авторизоваться в аттакуемом аккаунте
- Перейти по ссылке https://lp.ozon.ru/api/webinar-api/client/v1/stream/subscribe?streamId='{%mask_value%}
или же открыть POC.html и нажать на кнопку. - Регистрация на вебинар будет успешно пройдена и соответствующее письмо будет отправлено на email (не смотря на уведомление о некоем подтверждении. Это можно подтвердить, так как в письме есть функция 'Отписаться', которая в свою очередь содержит уникальный токен, который не позволяет воспроизвести CSRF атаку.
Более простая инструкция по воспроизведению:
- Перейти на https://lp.ozon.ru/stream/view/'{%mask_value%}, убедиться что регистрация на вебинар не пройдена.
- Перейти на https://lp.ozon.ru/api/webinar-api/client/v1/stream/subscribe?streamId='{%mask_value%}или нажать на кнопку в POC.html
- Вернуться на https://lp.ozon.ru/stream/view/'{%mask_value%}и увидеть что регистрация пройдена без каких-либо подтверждений, а также на почту отправлено соответствующее письмо.
Влияние на безопасность
Возможно осуществить CSRF атаку, проведя регистрацию на вебинар. CSRF (cross-site request forgery, подделка межсайтовых запросов) — вид атак на сайт, при которой злоумышленник с помощью мошеннического сайта или скрипта заставляет браузер пользователя выполнять на доверенном сайте действия от его имени.
Дополнительные ссылки
Запрос:
GET https://lp.ozon.ru/api/webinar-api/client/v1/stream/subscribe?streamId=#####
Ниже прикрепляю видео воспроизведения, а также скриншот с электронной почты который подтверждает успешную регистрацию.
Рекомендации по исправлению:
Внедрить CSRF токены на действие, изменить метод запроса на POST, изменить механику записи на вебинары.
Reward
₽3,000
Ozon
Ozon
Report No.: 8364
Created: November 30, 2024, 22:42
Disclosed: July 7, 13:28
Status: Accepted
Type: Vulnerability
Severity:
Low
Author:pozeslamix