[Информационная безопасность, Разработка веб-сайтов] Понимаем и ищем уязвимости типа Open Redirect (перевод)

Автор Сообщение
news_bot ®

Стаж: 6 лет 7 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
17-Июл-2020 16:32

Перевод статьи подготовлен в преддверии старта курса «Безопасность веб-приложений».
Одной из наиболее распространенных и тем не менее игнорируемых веб-разработчиками уязвимостей является Open Redirect (также известная как «Непроверенные переадресации и пересылки»). Веб-сайт считается уязвимым для Open Redirect, если значения параметра (часть URL-адреса после «?») в HTTP GET-запросе позволяет перенаправить пользователя на новый сайт без проверки целевого сайта. В зависимости от архитектуры уязвимого сайта, перенаправление может произойти после определённых действий, таких как вход в систему, а иногда это может произойти мгновенно при загрузке страницы.
Пример уязвимой ссылки выглядит примерно так: www.example.com/login.html?RelayState=http%3A%2F%2Fexample.com%2Fnext
В этом примере параметр «RelayState» указывает куда нужно перенаправить пользователя после успешного входа в систему (в нашем примере это example.com/next). Если сайт не проверяет значение параметра «RelayState» на предмет легитимности и безопасности, то злоумышленник может воспользоваться этим параметром, чтобы перенаправить жертву на фейковую страницу, созданную самим злоумышленником: www.example.com/login.html?RelayState=http%3A%2F%2FEvilWebsite.com
Уязвимости типа Open Redirect обделены вниманием со стороны разработчиков, поскольку они не наносят прямого ущерба сайту и не дают злоумышленнику возможности напрямую украсть данные компании. Однако, это не означает, что Open Redirect – не угроза. Одно из основных применений атак такого типа – это проведение эффективных и надежных фишинговых атак.
Когда при фишинговой атаке используется Open Redirect, жертва может получить электронное письмо, которое выглядит вполне правдоподобно, со ссылкой, которая указывает на корректный и знакомой жертве домен. Чего жертва может не заметить, так это того, что в середине URL-адреса есть параметры, которые изменяют конечную точку перенаправления. Дабы усложнить выявление Open Redirect, перенаправление может произойти после того, как жертва введет логин и пароль на неподдельном сайте. Злоумышленники обнаружили, что эффективный способ обмануть жертву – это перенаправить ее на фейковый сайт после ввода логина и пароля на настоящем сайте. Фейковый сайт будет выглядеть аналогично настоящему сайту, и он попросит жертву повторно ввести пароль. После того, как жертва сделает это, пароль будет записан злоумышленником, а жертва будет перенаправлена обратно на настоящий сайт. Если все сделано правильно, то жертва решит, что ошиблась с паролем в первый раз и не заметит, что ее имя пользователя и пароль были украдены.
Фишинг используется в большинстве успешных таргетированных взломов, а также регулярно в оппортунистических атаках. Учитывая, насколько часто фишинг встречается в повседневной жизни, уязвимости типа Open Redirect также не стоит сбрасывать со счетов.
Было бы несправедливо выделить какой-то конкретный сайт или компанию, как уязвимую для Open Redirect, потому что эта уязвимость встречается часто. Вместо этого было бы полезно показать, насколько таких сайтов много и насколько легко их найти.
Выполнение поиска по сети – это один из лучших способов найти Open Redirect на вашем собственном сайте и в других источниках в интернете в целом.
Поисковик от Google дает гибкость в написании поисковых запросов, в том числе и запросов, которые специально ищут по URL-адресам страниц.
Следующие операторы и специальные символы позволят любому пользователю создавать тагретированные запросы, которые могут помочь обнаружить Open Redirect:
  • allinurl – оператор, который скажет Google искать в URL-адресе все указанные ключевые слова. Например: allinurl:ReturnUrl будет искать все веб-страницы, у которых в адресе будет присутствовать часть ReturnUrl.
  • site – оператор, который говорит возвращать только те результаты, которые находятся на определенном домене или веб-сайте. Пример: site:example.com который ищет веб-страницы по example.com.
  • "" – двойные кавычки – это специальные символы, который используются для указания на поиск точного сочетания слов и символов внутри кавычек.
  • * — звездочка – знак подстановки, который олицетворяет одно или несколько слов.

Их использование позволяет найти признаки потенциального Open Redirect:
Мы можем искать одновременно присутствие лексем «http» и «https» в параметрах GET-запроса. Например:
allinurl:%3Dhttps*
allinurl:%253Dhttps*
allinurl:%3Dhttp*
allinurl:%253Dhttp*

Также мы можем искать специфичные общие слова, связанные с перенаправлением в области параметров GET-запроса. Например:
allinurl:"<keyword>=https"
allinurl:"<keyword>=http"
allinurl:<keyword>=https
allinurl:<keyword>=http
allinurl:<keyword>%3Dhttps
allinurl:<keyword>%3Dhttps*
allinurl:<keyword>%253Dhttps
allinurl:<keyword>%253Dhttps*
allinurl:<keyword>%3Dhttp
allinurl:<keyword>%3Dhttp*
allinurl:<keyword>%253Dhttp
allinurl:<keyword>%253Dhttp*
allinurl:<keyword>

Вместо <keyword>, мы будем использовать одно из следующих слов, характерных для перенаправления: RelayState, ReturnUrl, RedirectUri, Return, Return_url, Redirect, Redirect_uri, Redirect_url, RedirectUrl, Forward, Forward_url, SuccessUrl, Redir, Exit_url, Destination. Здесь приведен далеко не полный перечень ключевых слов. Больше вы сможете найти, проанализировав результаты более общих запросов поиска URL-адреса в разделе параметров GET-запроса.
Для целевого поиска, вы можете добавить «site:<domain_name>» в конец ваших поисковых запросов в Google. Этот способ может помочь вам найти уязвимости типа Open Redirect на вашем собственном сайте.
С помощью такого простого поиска, вы сможете найти десятки уязвимостей типа Open Redirect в течение нескольких минут. В список уязвимых сайтов входят сайты банков, международных корпораций, доверенных компаний, любимых проектов и многочисленные сайты небольших организаций. В качестве дополнительного бонуса, каждый раз, когда поисковый робот Google будет натыкаться на сайты с Open Redirect, мы с помощью запросов будем получать обновленные результаты.
Лучший способ избежать уязвимости Open Redirect – это избегать перенаправления по параметру, зависящему от пользователя или приходящего через GET-запрос. Если перенаправление неизбежно, с ним можно совладать, проверив конечный сайт и очистив его репутацию с помощью белого списка подтвержденных URL-адресов.
Я бы посоветовал вам рассказать своим друзьям веб-разработчикам об Open Redirect. Вы можете переслать им эту статью или даже обнаружить уязвимости с помощью метода, упомянутого выше, и сообщить об этом компании с подробным описанием проблемы. Давайте вместе усложним проведение фишинговых атак!
Если вы хотите поделиться своими запросами в Google, которые работают для обнаружения Open Redirect, вы можете сделать это в комментариях.
Узнать подробнее о курсе
===========
Источник:
habr.com
===========

===========
Автор оригинала: SpiderLabs Blog
===========
Похожие новости: Теги для поиска: #_informatsionnaja_bezopasnost (Информационная безопасность), #_razrabotka_vebsajtov (Разработка веб-сайтов), #_open_redirect, #_ujazvimosti (уязвимости), #_blog_kompanii_otus._onlajnobrazovanie (
Блог компании OTUS. Онлайн-образование
)
, #_informatsionnaja_bezopasnost (
Информационная безопасность
)
, #_razrabotka_vebsajtov (
Разработка веб-сайтов
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 28-Сен 15:25
Часовой пояс: UTC + 5