Как стать автором
Обновить

Хакер нашёл способ следить за посетителями сайтов конкурентов

Время на прочтение3 мин
Количество просмотров13K
Всего голосов 26: ↑24 и ↓2+22
Комментарии32

Комментарии 32

вот так и надо поступать, а то развели бекдоров — им еще шанс на новые рельсы подавай видите ли.
Гуглим по словам «history.pushstate vulnerability» и видим, что проблема была известна в 2010 и даже были попытки решения: stackoverflow.com/questions/4570093/how-to-get-notified-about-changes-of-the-history-via-history-pushstate
Там ещё было забавное в выдаче — например, в 2017 кто-то пытался эту уязвимость сдать в гугловскую bugs bounty, но не преуспел.

Во-первых, он не узнает поведение на чужом сайте. Он может отправить на фишинговую копию, это да. Во-вторых, тестил такой подход лет пять назад (слал не на фишинг, а просто на рекламу) — процент пользователей кнопки Back — небольшой. И работало на тот момент не в каждом браузере. Ерунда, короче.

О да, давайте запретим history.pushstate и сломаем все SPA сайты или же задолбаем пользователя вопросами, которые он вообще не понимает.
Насколько я понимаю, history API нужен для того, чтобы записывать историю spa. Почему бы не проверять вставляемые адреса в history и в location на идентичность домена?

+1, это позволит сохранить работоспособность SPA, и закроет вектор для фишинговой атаки.

Ниже уже вроде ответили, но и сейчас нельзя заменить домен, вот что мозилла пишет:
The new URL must be of the same origin as the current URL; otherwise, pushState() will throw an exception.
в примере google.mysite.tld вместо google.com не просто так…
Объясните, пожалуйста, простым языком о чем речь в статье. Речь о том что на сайте кнопка back вызывает pushstate и меняет адрес сайта в истории и узнает куда ведет ссылка из истории браузера, смотрит что за выдача была по ссылке и шлёт на копию поисковой выдачи на домене злоумышленник что по кнопке back должна была быть и затем следующие запросы проксирует через себя?
Юзер что-то гуглит, со страницы поиска заходит на страницу злоумышленника. Та подменяет URL для back на URL _фальшивой_ страницы поиска — с которой пользователя можно слать на фальшивые сайты конкурентов. Пользователь нажимает back и оказывается не на настоящем поисковике, а на фальшивом.
Для тех, у кого страницы из поисковика открываются в новой вкладке (потому что так в гугле сделано или просто человек привык открывать в новой вкладке) метод не сработает, но для них есть window.opener.location=«вредоносный_сайт».
потому что так в гугле сделано или просто человек привык открывать в новой вкладке

Зайдите в google.com и google.ru, затем введите один и тот же запрос. И покликайте по ссылкам, приятно удивитесь.
никакой разницы в хроме нет
Проверил у себя, Linux Mint, .com открывает в той же вкладке, .ru в новой. В макоси также себя ведет в разных браузерах. Может настройки какие у вас…
* Делаются копии конкурентов: примерно тех же что отдаёт гугл
* Делается «копия» гугла с выдачей «копий конкуррентов»
* history.pushState запихивает в историю «копию гугла с нужными результатами»
* В результате пользователь может попасть на поддельные сайты конкурентов, а раз копии во владении «хакера», то он может и клики трекать, и пароли собирать, и вообще делать что-угодно.

Естественно проблема обеспечения похожей работоспособности и видимой активности на созданных копиях никуда не девается.
Естественно проблема обеспечения похожей работоспособности и видимой активности на созданных копиях никуда не девается.

наименьшая из проблем.
нужно не копии делать, а проксировать обращения к реальным сайтам

Можно редиректить пользователя на google.mysite.tld а потом обратно и без манипуляции историей.
Можно вместо своего сайта показывать фишинговые результаты поиска, с точки зрения пользователя будет как "не кликнулось".
Можно просто вместо своего сайта показывать фишинговые копии конкурентов и изучать поведение пользователей. Хотя, в таком случае зачем что-то еще изучать.
Для всего этого надо сначала попасть в топ выдачи.

По-моему, я что-то не понимаю. Как он собирается подменять адреса на фейковые, если pushState во всех современных браузерах запрещает подмену домена/поддомена?
Может можно пушить поддомены с основного домена? Например на сайте foobar.com пушить google.foobar.com. Некоторые браузеры наверняка и такое запрещают, но видимо не все.
Подменить домен/поддомент нельзя. Но можно же пользователя никуда со своего сайта и не редиректить.

1) Пользователь в выдаче гугла перешел на сайт evilSite.com/
2) Этот сайт запушил в историю 2 стейта = «evilSite.com/googleClone» и «evilSite.com/main». URL в поисковой строке браузера в этот момент = «evilSite.com/main».
3) Пользователь жмет назад, попадает на клон гугла («evilSite.com/googleClone»).

В теории, если пользователь совсем не смотрим, что там в URL и копия сделана супер качественно, то может сработать.
В примере предлагается именно подмена домена, потому и спрашиваю. Замена просто адреса это совсем уже нагло, хотя с некоторыми может сработать. В общем, не понятно, о чём статья.
На другой домен со своей страницы заредиректить можно (история «вперёд» потеряется — но юзер это, скорее всего, не заметит). Но и без подмены домена юзер может не заметить.
А что, только меня history.pushState раздражает и дезориентирует даже на добросовестных сайтах? Например, когда перешёл с xxx.org на yyy.com, а тебе сразу в историю пушат ещё один yyy.com и если один раз нажать «назад», то «вернёшься» не на xxx.org, а на yyy.com, который снова пушнет тебе самого себя в историю. Получается этакая беговая дорожка, если инет быстрый, то сколько кнопку назад не долби — с yyy.com не убежишь.

ИМХО, history api — плохая технология и ещё и небезопасная, как видно из статьи. Да что уж там, об этом ещё Оруэлл писал!
Нормальная технология. Вообще нет понятия плохая технология. Есть понятие неправильное использование технологии.
Не знаю, как Chrome, а Firefox позволяет «зажать» кнопку «назад», примерно через секунду выпадает список предыдущих страниц. В итоге можно перескочить назад более чем на один пункт.

https://addons.mozilla.org/en-CA/android/addon/open-link-with-new-tab/?src=search


Открывает все ссылки в новой вкладке по правомо клику мыши. Значительно повышает производительность серфинга, и как я только что узнал, защищает от такого рода атак. Побочные явления-очень быстро входит в привычку, обычно у меня не менее 600 открытых вкладок, чищу их примерно раз в месяц. Очень удобно, наверное только из за этого дополнения я и сижу с мозиллой. Есть ли аналоги для хрома, не знаю.

Настоящие индейцы не пользуются кнопой Back, они пользуются зажатым CTRL при щелчке по ссылке.
Так в Хроме (вроде и в мозилле) по нажатию ссылки средней клавишей мыши открывает в новой вкладке, без всяких расширений.
И конечно в настройках Хрома устанавливается, как открывать вкладки при щелчке по ссылке. Как раз для поиска и устанавливаю «в новой вкладке». Ищешь, бывало, «как натянуть сову на глобус» и в первой строке-через анус, не, стрёмно-закрываешь, во второй-через клюв-а что, может быть, оставим пока открытой и посмотрим как там в третей строке предлагают через глаз.
Будет ли это работать, если сайт HTTPS. Иными словами, получит ли он данные с HTTPS сайта таким образом?

А почему нет?
Запрос делает его сервер.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий