Случайным образом где-то в 2010-2013 году я поставил себе скрипт от сайта однакнопка.ру . Этот сервис позволяет поделиться записью в соцсетях. Ставим java script код на страницу и получаем одну кнопку для всех сервисов закладок. Все отлично работало. Я забыл о нем…
Давайте разберемся, что делает данная кнопка. Она генерирует html код, который внедряется в вашу страницу. В хтмл коде содержатся картинки и правильно-сгенерированные ссылки на необходимые вам сервисы соцсетей. Нужные сервисы можно выбрать при регистрации на сайте.
Ниже показан пример отображения социальных кнопок на произвольном сайте.
Как я нашел посторонний вредоносный код на своем сайте
Так я прожил до сентября 2015 года ни о чем не подозревая… В эту позднюю ночью я писал макрос для «iMacros for firefox». Почему-то не выходило через xPath добраться до класса для элемента div. Я решил потренироваться на своем сайте через firebug.
Открыл сайт. Запустил файрбаг, полез в html код искать произвольный класс, чтобы к нему прописать путь… И тут я увидел странный код на моем сайте. Это был iframe тег, ссылающийся на goo.gl сайт — сервис коротких ссылок.
Черный метод монетизации сайта
Данный iframe ссылался на страничку с партнерскими ссылками: алиэкспресс, литрес, напару.ком, мвидео и другие… Так же данные отсылались в TDS. Расчет, видимо, был такой: ставить партнерские куки на наиболее посещаемых сайтах. С некой вероятностью посетитель появится на этом сайте и что-нибудь купить. Партнерские отчисления получит владелец этого кода.
Поиск уязвимости на своем сайте
Решил выяснить: взломали один сайт или несколько… Начал расследование. Второй сайт на этом же движке — тот же iframe код. Остальные сайты чистые. В процессе экспериментов выяснил, что код появляется не всегда. Только при первом заходе на сайт. Чистка cookie возвращает показ iframe кода на странице.
Что делал для поиска уязвимости:
- Сменил пароль к ssh сайта
- Сменил пароль к фтп сайта
- Сменил пароль к хостингу
- Сменил пароли к админке сайта
- Проверил компьютер на вирусы
- Просмотрел свежие изменения файлов на сервере
- Искал подключения iframe и внешних сайтов в php, js и html скриптах
- Выкачал текущий сайт и сравнил содержимое каждого файла с сайтом трехлетней давности
В итоге код никуда не исчезал, а ифреймовские ссылки менялись. Оставался один вариант методично просмотреть все подключаемые java script’ы на странице. Js файлы, находящиеся на моем хостинге не содержали никакого внешнего кода.
Тогда я открыл firebug — закладка «Сеть» и начал смотреть после каких скриптов появляется нехороший iframe. Оказалось, что после запроса на загрузку страницы выполняется всего 3 js скрипта. Первый от odnaknopka.ru , второй — luxup.ru и третий — acint.net . Далее шла загрузка iframe с именем 3Zz9Rb.
Последовательно снизу вверх пошел по списку скриптов. Косячный скрипт оказался в однакнопка.ру. Скрипт ok2.js подгружает stat.js , в котором и находится код, отображающий iframe.
Прямое открытие файла stat.js не показывает код. Помогает только файрбаг с почищенными куками. Ниже привожу полный код файла stat.js. В нем сразу видно что как работает.
Решил написать статью в своем блоге и так же поделиться ей на хабре. Залез в поиск хабра посмотреть, что пишут про однакнопка.ру и увидел похожий пост на хабре от 6 июля 2013 года. Он гласил:
При обращении к odnaknopka.ru/ok2.js с User-Agent мобильного устройства, происходит автоматическое перенаправление посетителей на вредоносные цели.
В официальной группе сервиса Однакнопка первая информация о некорректной работе скрипта появилась 4 июля 2013 в 16:37. Проблема до сих пор не решена. Гневные (да, впрочем, и не гневные) сообщения от пострадавших пользователей игнорируются.
Заключение
Скрипт от однакнопка.ру убрал со всех своих сайтов. Очень хочется верить, что данный способ монетизации применил не автор скрипта, а какой-то злоумышленник. На момент написания статьи данный метод действует. Очень хочется верить, что владелец и автор данного скрипта пофиксит этот черный метод монетизации.
Грязный метод монетизации трафика или скрипт от odnaknopka.ru,
Пользуюсь сервисом Яндекса с кнопками «Share», таких проблем нет. Рекомендую!