Тот самый первый баг, он же и самый известный.
Здравствуйте, дорогие хабровчане. Хочу поделиться с вами маленьким кейсом по программе bug bounty Яндекса. Как это обычно бывает, нашёл уязвимость в сервисах компании, написал письмо, дождался ответа, в котором мне сказали спасибо и заявили, что этот баг вовсе и не баг.
Раз такое дело, решил поделиться с читателями. Под катом опишу суть уязвимости и как я к ней пришёл, а также небольшой опрос в конце, призванный ответить на вопрос заголовка: является это багом или нет.
Важное примечание: я спросил разрешения у службы информационной безопасности Яндекса на описание этой потенциальной уязвимости, текст письма размещён в конце статьи.
Open Redirect — это тип уязвимости, при котором происходит перенаправление запроса на другой сайт. Основная опасность здесь, что невнимательные пользователи могут оставить таким образом свои, например, логин и пароль от какого-нибудь денежного ресурса или другие какие-либо ценные данные, которые может с пользой для себя использовать злоумышленник.
Ни для кого ни секрет, что у Яндекса есть программа bug bounty, за которую можно ещё и получить деньжат, если найти что-нибудь стоящее. Также в рамках этой программы существует т.н. “Зал славы” — страничка, на которой публикуют аккаунты тех пользователей, кому посчастливилось найти уязвимость или баг в сервисах Яндекса.
Казалось бы, все какие можно уязвимости уже найдены, наверное остались одни только самые сложные, для которых требуется большое количество времени, компетенций и знаний. Однако, не смотря на все эти очевидные, как мы знаем из художественных фильмов, препятствия, в зале славы каждый месяц появляется десяток-полтора новых лиц. Что-то тут не сходится, подумал я, и решил попробовать сам.
Спойлер: все эти предрассудки не имеют никакого отношения к реальности.
Как выяснилось, не нужно быть кулхацкером, чтобы найти уязвимость, достаточно уметь пользоваться интернет браузером и чуть-чуть понимать, как формируется строка запроса — это всё.
Итак, начну описание того, как нашёл в итоге эту уязвимость.
Изначально, не зная к чему можно было бы привязаться, я просто лазил по ресурсам Яндекса. Добавлял разные символы в запросы, к примеру: https://yandex.ru/pogoda/moscow?lat=55.755863&lon=+37.6177. Как видно, к параметру lon
я добавил “+” и теперь эта ссылка ведёт на страницу “Bad Request”, хотя все другие символы игнорируются, а вот значок “+” имеет такой необычный эффект. Ясно, что с этим особо не разгуляешься, тут хвастать нечем. Ну не работает и не работает, никому же не мешает.
Так я ходил по разным ссылкам, пока не заметил одну примечательную на странице с регистрацией: https://passport.yandex.ru/auth?retpath=https%3A%2F%2Fya.ru. Заметив, что в этой ссылке есть параметр retpath
, я знатно обрадовался и уже начал было потирать потные руки, ан не тут-то было.
Какие только запросы я не подставлял в этот retpath
, ничего не проходило, кроме ссылок на сервисы Яндекса. Можно было бы подставить какую-нибудь статью в дзен и сказать, что, дескать так можно накручивать просмотры. Но, честно говоря, на какую-то серьёзную проблему это походило мало. Нужен был переход на какой-нибудь внешний ресурс.
Я знал одну фичу у Яндекс-переводчика — через него можно переводить сайты и он является по сути своей прокси-сервером.
Картинка с оригинальным ip адресом с whoer.net.
Картинка с ip адресом через переводчик.
Как видно, на них отличаются ip адреса.
Однако, переведённые сайты переходили на домен translated.turbopages.org, который retpath
отбраковывавал, как внешний. Ничего с этим я поделать не мог. Счастье было так близко, казалось достаточно было протянуть руку, но как я ни старался, ничего не работало.
Отчаявшись, я было решил плюнуть на это безнадёжное дело и просто щёлкал и щёлкал на различные ссылки в переводчике. И тут мне просто повезло, т.к. Яндекс решил проверить, не робот ли я. Видать, в наше время с ChatGpt много их развелось.
Так вот, вместо очередного переведённого сайта наткнулся на капчу и, так как я знал на что смотреть, то сразу увидел, что капча то на домене Яндекса: https://translate.yandex.ru/showcaptcha?cc=.... Я, конечно, сразу решил попробовать добавить её в repath
и… получилось! В сущности, получилось перейти из домена Яндекса во внешнюю сеть.
Та самая ссылка https://passport.yandex.ru/…,
Примечание: через какое-то время капча пропадает и можно сразу перейти на внешний сайт.
Видео, которое я отправил в Яндекс:
Благодарим за интерес, проявленный к безопасности сервисов Яндекса.
Проблема, о которой вы сообщили нам, не представляет опасности для пользователя.
Если вы считаете иначе, пожалуйста, опишите пример реальной атаки на важные пользовательские данные,
которую возможно совершить с использованием этой уязвимости.
Описанные вами шаги приводят только к редиректу на домен translated.turbopages.org.
А сама уязвимость Open Redirect не входит в скоуп программы.
Хотя должны признать, что описанный вами функционал довольно занимателен.
В связи с этим, к сожалению, мы не можем присудить за нее вознаграждение.
Спасибо за внимание!
Комментарии (3)
vdudouyt
21.07.2023 06:20+1Испытываю уважение перед Вашим упорством, однако не то, чтобы я не понимаю позицию Яндекса в данной ситуации. Наверняка репортов вроде "злоумышленник может опубликовать мошенническую статью на Zen и выманить финансовые данные пользователя" в день они получают достаточно много :)
ifap
21.07.2023 06:20+4Хм... это все про тот Яндекс, который светит в Интернет серверами с SSL 3 и незакрытой POODLE или про какой-то другой?
vtal007
Интересно. Вот до чего доводит упорство :)