Comments 25
Всегда надеялся, что в таких системах токен привязан к IP, например, чтобы в случае перехвата токена сложнее было им воспользоваться.
+7
Как оказалось, привязки не было ни какой. Единственное, что было, так это то, что токен одноразовый. Но это ни как не спасало.
+6
Весьма бесполезно, IP меняются — может и юзеру создать неудобства.
0
Вовсе нет. Как пишет автор, токен одноразовый, так что он будет использоваться единовременно при авторизации.
Авторизация, как опять же пишет автор, здесь двухфакторная. Для защиты по IP нам надо будет на первом этапе записать IP пользователя, а на втором проверять.
Всё это будет длиться секунд 20. Максимум 3-5 минут, если смс задержалась. Маловероятно, что ваш IP сменится за столь короткий промежуток времени.
Авторизация, как опять же пишет автор, здесь двухфакторная. Для защиты по IP нам надо будет на первом этапе записать IP пользователя, а на втором проверять.
Всё это будет длиться секунд 20. Максимум 3-5 минут, если смс задержалась. Маловероятно, что ваш IP сменится за столь короткий промежуток времени.
0
Ну хм может пригодиться но лучше кодить сразу с правильной валидацией редиректа, тогда вариантов потерять токен по пути значительно меньше.
0
Маловероятно, что ваш IP сменится за столь короткий промежуток времени.Юзер может быть за шлюзом с балансировкой нагрузки на разные каналы. И это необязательно что-то особенное, у меня одно время был домашний роутер с ADSL и ethernet линками одновременно.
Юзер можеть выходить в Сеть через мобильный и-нет и скакать между базовыми станциями, непредсказуемо меняя свой внешний IP.
Юзер может сидеть через Tor.
0
Даже, если токен будет привязан к IP, то получивший его сервер internet-bank.como.wtf может отдать пользователю javascript, который выполнит необходимые действия от токена и с IP пользователя. Такому сценарию может помешать CSRF-токен, но и его реализация не всегда идеальна.
0
Пять баллов!
+1
Кошмар! Разве можно токен отдавать?
+2
Очень круто!
+1
что ни кто так и не обратил на неё внимание.
Так и не обратил — в смысле баг не пофиксили до сих пор?
0
Как нам сформировать урл со сторонним доменом? Кто догадался, может поставить себе плюсик за сообразительность
Думаю, многие, как и я, подумали о собаке @
Но ваш вариант с поддоменом, особенно с вхождением в него зоны домена банка, действительно позволяет замаскировать урл под благонадежный.
+5
Еще вариант — если на сайте есть скрипт внешнего редиректа, то можно использовать его.
0
UFO just landed and posted this here
При относительном пути можно было бы воспользоваться ссылкой без указания uri-схемы ?go=//evil.host/
https://tools.ietf.org/html/rfc3986#section-4.2
https://tools.ietf.org/html/rfc3986#section-4.2
+1
А по какому RFC допускаются относительные пути в Location при 301/302?
+1
Да, можно передать все как есть в Location…
… и получить возможность указания злоумышленником произвольных заголовков ответа путем передачи символа перевода строки в url-параметре :)
… и получить возможность указания злоумышленником произвольных заголовков ответа путем передачи символа перевода строки в url-параметре :)
+1
Прикольно, ключевой баг в том что банк вообще не валидировал параметр «go». Там наверно и header injection можно было откопать.
С Гитхабом очень похожая история была, тоже угон токена и последующий вход (http://habrahabr.ru/post/211845/)
С Гитхабом очень похожая история была, тоже угон токена и последующий вход (http://habrahabr.ru/post/211845/)
+6
Раньше писать про то, как складывать пути на дисках.
Для .NET на все собеседования выносили вопросы ответом на которые должны были стать варианции по применению System.IO.Path.Combine(...)
Теперь, имеем полноценного приемника System.Uri
И на выходе будет то, что нужно:
P.S. Но Uri не самый простой инструмент, там есть свои особенности.
Для .NET на все собеседования выносили вопросы ответом на которые должны были стать варианции по применению System.IO.Path.Combine(...)
Теперь, имеем полноценного приемника System.Uri
class Program { static void Main(string[] args) { var domain = new Uri("https://internet-banking.com", UriKind.Absolute); var path = ".subdomain.tw"; var uri = new Uri(domain, path); Console.WriteLine(uri); } }
И на выходе будет то, что нужно:
https://internet-banking.com/.subdomain.tw
P.S. Но Uri не самый простой инструмент, там есть свои особенности.
+2
Хорошая статья)
0
Sign up to leave a comment.
Угнать за 9 символов