[recovery mode] Небезопасная авторизация
Я пытался привлечь внимание к проблеме, но у меня не получилось. Как вы знаете на разных сайтах существует способ авторизации через аккаунты соц. сетей. Я считаю его не безопасным и хотел бы услышать мнение других людей. Поддержка наиболее крупных российских компаний игнорирует проблему и ссылается на вебмастеров, что имхо не верное решение. Освещение проблемы под катом.Когда я перехожу на сервис N, и мне лень вводить в поля свое мыло, потом его подтверждать, вводить пароли и все прочее, я регистрируюсь, к примеру через mail.ru, для этого мне достаточно иметь там свой аккаунт, их сервер сам придумает мне логин и пароль, отдаст это сервису N и я благополучно войду на сервис и в будущем если мне нужно будет снова на него войти, мне нужно будет залогинится на mail.ru, потом перейти на сервис N и снова войти, как мы видим алгоритм прост и даже с некоторой точки зрения более безопасен, так как пароль, который придумает мне сервер аунтификации mail.ru будет более безопасным, чем мой, он составляется по случайному алгоритму.
Вроде бы все хорошо. Но в очередной раз вечером мне было скучно, я писал модуль авторизации для своего сайта, параллельно читал про api сервисов, которые предоставляют автоматическую аутентификацию и мне лично не нравиться один момент. Он происходит тогда когда пользователь уже зарегистрировался на сервисе через, к примеру mail.ru, что-то там сделал и вышел с него, куки сервиса N удались автоматически, но не куки mail.ru, в момент повторного входа, нас в браузере есть куки к mail.ru, мы заходим на сервис N, они отправляются на сервер аутентификации mail.ru, а в ответ на сервер N приходит зарастание подготовленные данные для входа меня на сервис N, он их смотрит и если все прошло хорошо, отдает мне куку, по которой я уже вхожу на сервис N. Все было бы хорошо если бы не такая распространенная уязвимость или не уязвимость, как xss. Подвержены ей почти все сайты, статистика говорит, что более 90% сайтов подвержены xss.
Когда мы со всем разобрались давайте взламывать.
Нам нужен сервис N, xss на нем, и сервис N должен быть подключен к системе аутентификации к примеру mail.ru. Жертва в нашем случае становиться жертвой автоматически если у неё есть куки mail.ru.
Это работает довольно просто берем пустую страничку, вставляем на неё