Однажды лазил по сервисам на которых не редко зависаю, и наткнулся на один из них, в котором используется авторизация через стим.
При обращении к данному способу происходил переход на страницу стим с ожиданием подтверждения
Но на мгновение промелькнула посредническая ссылка, она то меня и заинтересовала.
Она была вида:
https://api.***.com/oauth/out/steam?url=https://my.***.com/other-settings
Воодушевившись возможной уязвимостью, я вставил google.com в поле url, и, о чудо, оно перешло на google. Опробовав несколько других сайтов, стало понятно, что редирект происходит на любой из них, но только после авторизации в стиме.
Далее заметил, что к url стал приписываться токен. Залив на бесплатных хостинг страничку с обычным скриптом, что показывает значение uri, получилось отобразить данный токен явно
Токен был закодирован в base64, но его расшифровка ничего не дала, кроме того, что были использованы соли
Стало очевидно, что данный токен используется для авторизации пользователя.
Воспользовавшись xssHunter-ом и другом, удалось получить токен не от моего аккаунта а от другого, это нужно было для дальнейших тестов. Так же был перехвачен загловок referer в котором была вся информация о стим аккаунте, через который был выполнен вход
При помощи BurpSuit и токена от своего аккаунта, перехватил запросы при авторизации после страницы стима, и обнаружил интересный post запрос, он происходил на
https://api.***.com/acct/decryptToken
И возвращал расшифрованный токен
Следующие запросы происходили на
https://api.***.com/acct/info
https://api.***.com/acct/transactions
Которые просили для себя уже расшифрованный токен, и отображали данные аккаунта и произведенные транзакции
Все тоже самое я проделал с токеном от аккаунта моего друга, и получил всю необходимую информацию.
Так же смог войти под ним, просто подменив токен и расшифрованный токен при авторизации.
Через пару дней я решил узнать работает ли еще данная уязвимость, но забыл сменить старый токен в запросе. И не описать как я был удивлен, когда обнаружил, что данные до сих пор отдаются, то есть токен вечный, и, скорее всего, никогда не протухает. Что так же является серьезной уязвимостью.
P.S.: Я убрал все упоминания сервиса и сайта, потому что достучаться до данной компании у меня так и не вышло. Если они пофиксят данную уязвимость, то дополню статью или оставлю в комментах сайт и название компании.