Pull to refresh

Open Redirect на Яндексе. Часть вторая

Reading time5 min
Views3.3K


А вы уверены, что вы не робот? Капча это проверит!


Здравствуйте, дорогие хабровчане. Это вторая часть статьи про уязвимость Open Redirect страницы аутентификации Яндекса. Первая часть здесь.


На этот раз я расскажу, как получилось сделать честный редирект на внешний ресурс.


Важное примечание: я спросил разрешения у службы информационной безопасности Яндекса на описание этой потенциальной уязвимости, и получил на это разрешение.


Яндекс всё таки признал, что этот метод можно использовать в зловредных целях. Однако решил, что с точки зрения безопасности подобный баг не представляет большой угрозы. Про аргументы и причины можно прочитать под катом, также как и про доводы автора. По этому поводу добавил опрос в конце поста, любопытно узнать мнение сообщества.


Вкратце напомню, что было в первой части. Я исследовал на уязвимости редирект страницы аутентификации https://passport.yandex.ru/auth/welcome?retpath=... и заметил, что переменную retpath можно использовать для редиректа на внешний ресурс, если проксировать запрос через яндекс-переводчик.


Суть в том, что retpath реагирует только на доменные имена Яндекса — yandex.ru, dzen.ru, kinopoisk.ru и т.д., однако это ограничение можно обойти, если использовать переход на страницу с капчей, которая как раз находится в нужном нам домене https://translate.yandex.ru/showcaptcha?mt=.... Таким образом, мне удалось добиться перехода на домен translated.turbopages.org, который и является прокси-сервером через переводчик, retpath его также отбраковывает как внешний ресурс.



Хорошо заметен баннер переводчика сверху и отличная от загруженной ссылки адресная строка в браузере.


После того, как я описал это службе безопасности Яндекса, получил ответ, что переход на translated.turbopages.org это не круто и Open Redirect не входит в скоуп программы bug bounty. Денег мы вам не заплатим, но если сможете сделать честный редирект на внешний ресурс, то так уж и быть, добавим вас в зал славы.


Тут нужно сделать небольшое отступление. Не так давно, буквально полмесяца назад от публикации этой статьи, злоумышленники взломали телеграм известного дизайнера и блогера Артемия Лебедева, о чём он сам и сообщил в своём видео (осторожно, ненормативная лексика!).



Самое примечательное, это как он описывает сам процесс, а именно:


  1. Сперва пришла ссылка в письме с просьбой выгрузить статистику канала;
  2. Он её проверил(!) и посмотрел, что ссылка с известного и правильного домена, который он хорошо знал;
  3. Далее, уже после перехода по этой ссылке, его попросили ввести логин/пароль, мобильный телефон, код из смс и т.д.

Не то, чтобы я точно знал, но можно предположить с большой долей уверенности, что это и был фишинг. А теперь представьте на секунду, что вам приходит ссылка с предложением чего-нибудь с домена passport.yandex.ru и просьбой аутентификации… дальше продолжать не буду, как видно, это вполне рабочий метод. Вот тут у меня и возникает вопрос, почему в Яндексе подобную уязвимость не считают существенной (текст ответного письма будет опубликован далее).


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



Оставалось ещё сделать второй и третий шаги, т.е. — выйти за пределы переводчика (прокси-сервера) и связать переход со страницы аутентификации с этим выходом.


Второй шаг решился довольно просто, как известно в интернете есть очень популярный сайт, который делает честный редирект, это google.com.


Обратите внимание, что в ссылке домен google.com, но ведёт она на ru.wikipedia.org



Шаг третий — оказался очень простым. В сущности, всё, что описывается в первой части статьи нужно проделать, только в качестве внешнего ресурса — использовать нашу google ссылку.


В итоге получаем чистый переход на внешний ресурс!




Итак, как это можно использовать? Будь я чёрной шляпой, скорее всего, создал бы клон страницы аутентификации. После того, как жертва ввела бы правильные логин/пароль, retpath перевёл бы пользователя на мою фейковую страницу, на которой красными буквами было бы написано — “пароль не правильный, пожалуйста, введите его снова”. Частенько такое бывает, что пароль или логин не вводят правильно, думаю, что это не вызовет сильного подозрения.


Первый бонус: через какое-то время, примерно сутки, вводить капчу не требуется, т.е. можно сразу перевести пользователя на сайт злоумышленника.


Второй бонус: есть случай, когда регистрация на самом деле не нужна, т.к. на нашей странице аутентификации появляется ссылка “стрелочка назад”, которая сразу делает редирект.



Причём, эта стрелка появляется только тогда, года в retpath подставлен домен Яндекса.


Третий бонус: как только пользователь прошёл по Open Redirect ссылке, как бы он не регистрировался, любым из множества способов, он будет перенаправлен на сайт злоумышленника.


Более подробное описание шагов можно посмотреть в этом видео:



Письмо с ответом из Яндекса:


Мы решили добавить Вас в Зал Славы за этот месяц. Нас вдохновил Ваш исследовательский дух, однако стоит уточнить, что полноценным Open Redirect мы данную уязвимость всё ещё не считаем, и добавляем в зал славы Вас в качестве исключения. На это есть несколько причин.

Во-первых, для реализации этого сценария требуется 3 клика от пользователя (1 по самой ссылке, 1 на экране регистрации и 1 на капче), в то время как Open Redirect — это почти всегда 1 клик (иногда бывает и 0). Чем больше требуется user-interaction с пользователем, тем меньше значимость это уязвимости. Возвращаясь к текущему функционалу злоумышленнику будет проще воспользоваться укротителем ссылок и убедить пользователя, что он сделал это для его удобства, чем объяснять как и зачем ему нужно тыкать в текущем сценарии.

Во-вторых, этот функционал мы не будем исправлять. По крайней мере пока не понятно, как это сделать. Наша команда смогла придумать ещё один способ выхода за пределы домена translated.turbopages.org. А именно, использовать простенький javascipt-код, который бы делал document.location = “https://attacker.com/“.

Тем не менее, благодарим Вас за проделанное исследование и ждём от Вас ещё репортов!

P.S. меня добавили в зал славы за июль 2023 года, и на том спасибо.

Only registered users can participate in poll. Log in, please.
Требует ли описанная в статье уязвимость внимания?
64.71% Да, эту уязвимость вполне можно использовать33
35.29% Нет, это не баг, а фича18
51 users voted. 10 users abstained.
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
Total votes 6: ↑3 and ↓30
Comments9

Articles