В какой раз убеждаюсь, что всё гениальное — просто.
Пару дней назад я поделился на сайте о новой проблеме в уязвимости CMS WordPress, и как потом оказалось та же самая беда касается и CMS Joomla.
Не буду ещё раз всё пересказывать, подробно проблема описана здесь.
А суть её во взломе сайтов построенных на вышеуказанных CMS и не заметном внедрении js-скрипта с внешней ссылкой в файл header.php в случае с WordPress и в файл index.php в случае c Joomla.
В комментарии к предыдущему посту по этой проблеме мне подкинули полезную ссылку, по которой оказалась интересная статья на английском языке по сути этой проблемы, из неё я почерпнул некоторую полезную информацию.
Вот какую:
Наводчиком или приманкой, если можно так сказать, для хакерских ботов внедряющих этот скрипт служит закрывающий тег < / h e a d > (я специально написал с пробелами, так как хакерский бот вставляет скрипт даже в комментарии, если обнаружит там упоминание этого тега).
Так вот, робот обнаружив это закрывающий тег, тупо вставляет перед ним свой вредоносный js-скрипт (JavaScript).
Можно просто найти этот скрипт вручную и удалить, как я первоначально и сделал. Но это помогает не надолго, скрипт появится снова и достаточно скоро, единственное чем он будет отличаться — в нём будет новая внешняя ссылка, уже на другой сайт.
Я, к сожалению, пока не знаю по какой именно схеме взламываются сайты и роботу удаётся вносить изменения в код.
В вышеупомянутой статье на английском, к сожалению, кроме общих стандартных советов по защите и безопасности сайта никаких конкретных советов по решению данной проблемы не даётся. А решать надо, и чем быстрее тем лучше.
У меня возникла идея, как предельно просто избавить себя от появления вредоносного js-скрипта. Решение оказалось на поверхности.
Раз уж хакерский бот ориентируется на закрывающий тег < / h e a d >, то я решил, что его просто надо лишить этой поисковой цели. В моей памяти, что-то такое хранились, что < h e a d > это один из тех html — тегов, к которым закрывающий тег не требуется. На всякий случай, я ещё раз прочитал справочную литературу по языку HTML — и да, закрывающий тег абсолютно не обязателен! Вот, собственно и ответ на решение проблемы.
Просто удаляем в файле header.php (WordPress) или в файле index.php (Joomla) закрывающий тег < / h e a d > и проблема появления левого скрипта с внешней ссылкой на посторонний ресурс исчезнет.
Я проделал эту процедуру с одним из своих сайтов, оставив закрывающий тег на других. Прошло два дня: на сайте без закрывающего < / h e a d > скрипт больше не появлялся, тогда как на остальных появился вновь.
Я конечно понимаю, что это не самое кардинальное решение проблемы, хакеры могут усовершенствовать бот, настроить его на другой тег, вообще изменить скрипт и тд. Основная проблема — это всё же определённая уязвимость сайтов на WordPress и Joomla, и именно в этом направлении нужно искать решение.
Но пока, на данном этапе и такой вариант решения не будет лишним.
Буду рад любым вашим мнениям и мыслям по решению этой проблемы. Давайте вместе с ней разберёмся, пишите о ваших вариантах и идеях в комментах, обсудим.
спасибо за совет, сам борюсь с этой заразой, грешил на хостинг, также любые манипуляции с .htaccess ни помогают, жду более глубокого решения…
Не за что) Другие решения скоро будут.
Такая же проблема, хочу понять как внедряется код
Тоже столкнулся с этой проблемой, Уже больше 3 недель воюю. Никакие защитные плагины к WP пока не помогают. Но есть один любопытный нюанс. Заражаются не только активные сайты, но и не работающие, даже те, для которых уже нет доменных имён. Т.е заражение идёт на уровне файловой системы. Очевидно скрипт получает доступ к файловой системе от имени скорее всего пользователя, под которым запущен веб-сервер, и шерстит всю доступную файловую систему. А дальше, как Вы написали, ищет закрывающий тег и делает своё чёрное дело. 🙁
Вот только как именно этот скрипт проникает в систему пока не известно. 🙁
Друзья, никто так и не нашел каким именно образом инфицируются сайты? У меня та же проблема, не первую неделю борюсь с этой заразой, а итог все равно один… заражены все сайты включая неактивные…:(
Пока не ясно как инфицируются, но как избавиться от повторного заражения описано в статье выше.