Представь, что получится, если сайт apple.com станет разрешать редирект на apple.evil.com. Пользователь будет думать, что он находится на доверенном сайте, но при этом оставлять свои данные на сайте злоумышленника. Кстати, подобную уязвимость уже находили.
А что, если прямо сейчас в Google открыта такая уязвимость? Пользователь заходит на свою почту по ссылке google.com, вводит данные. Возможно, он проверяет адресную строку браузера и URL, но в ней все в порядке. Затем попадает на страницу с письмами и видит привычную ежедневную картину. Как часто в этот момент пользователи проверяют адресную строку? А ведь свирепые русские хакеры не дремлют!
Разбираемся глубже в Open Redirect
К примеру, у нас есть доверенный сайт http://site.com/. Но в нем есть уязвимость Open Redirect, которая будет выглядеть так: http://site.com/login?redirectUrl=http://site.com/auth. После авторизации на странице сайта пользователь перенаправляется на http://site.com/auth.
Попробуем заменить http://site.com/auth на http://evil.com/. Получится ссылка http://site.com/login?redirectUrl=http://evil.com/. Если мы перейдем по этой ссылке после авторизации, а нас направляет на evil.com, значит, сайт имеет уязвимость Open Redirect.
Откуда появляется уязвимость?
Администраторы сайтов обычно либо не знают о такой уязвимости, либо не сверяют URL перенаправления с разрешенным белым списком, составленным заранее. Уязвимый код на сервере будет выглядеть приблизительно так (пример на PHP):
Сервер получает запрос GET с параметром url и перенаправляет браузер на адрес, переданный в URL.
Что до перенаправления на стороне клиента, то оно может выглядеть как-то так:
Click here to log in [/code]
Пользователь думает, что ссылка безопасная, так как начинается с bank.site.com. Однако после перехода он будет перенаправлен на похожий фишинговый сайт.
Как самому найти уязвимость?
Внимательно пройтись по всем ссылкам сайта и найти в них параметры перенаправления. Как вариант, можно использовать перебор при помощи специальных программ. Ввести в поисковую строку Google site:target.com inurl:redirectUrl=http. Проанализировать, где может использоваться перенаправление. К примеру, редирект после авторизации. Попробовать найти уязвимость с помощью различных известных трюков: target.com/?redirect_url=https://evil.com, target.com//evil.com. Другие трюки ты можешь посмотреть по ссылкам.
WWW Random Robbie payloads EdOverflow CheatSheet Ak1t4 payloads Cujanovic payloads