Joomla вирус iframe и как его удалить
Здравствуйте, уважаемые читатели моего скромного блога. Сегодня я попытаюсь как можно подробнее описать проблему с вирусом iframe и её решение.
Что собой представляет этот "подарок судьбы"? Это файл, в котором запрограммирована генерация определенного кода с iframe и добавление его в файлы по определенной маске. Если Вы обнаружили код с iframe у себя на сайте, значит нужно в первую очередь искать именно файл-генератор этой заразы, а не искоренять все зараженные файлы.
Как говорится, "на 100 бед - один Reset" и для зараженного web-сайта это тоже панацея. Речь идет о том, чтобы перезалить бекап сайта заново на хостинг. Кстати, вирус может быть занесен как через Вашу неосторожность хранить пароли доступа ftp в ftp-клиентах или установку уязвимых сторонних модулей и компонентов на сайте, так и от хостера. Но мы сейчас не будем раздувать статью о причинах инфицирования, а подробнее остановимся именно на решении этой проблемы.
Недавно ко мне обратился клиент, у которого был свой сайт, который был создан год или два назад на движке Joomla 1.5. Стояла задача привести сайт в нормальный вид и поставить его на продвижение. При этом все пароли к хостингу и админке были утеряны, но слава Богу вспомнили пароль почты, на которую регистрировался хостинг. Таким образом, подав заявку на изменения пароля с контактного ящика, получил пароли к хостингу, исходя из чего сделал доступ к ftp и т.д. Имея доступ к БД, решил вопрос по сбросу пароля к админке Joomla. Далее следовало сделать самое сложное - искоренить вирус iframe.
Как упоминалось выше - способ №1 - полностью перезалить файлы сайта с бекапа, сделанного в момент, когда сайт еще был "здоров". В моём случае, с момента заражения прошло уже более 8-ми месяцев и ни одного бекапа прежним так называемым вебмастером ни разу не делалось. Хостер как оказалось хранит резервные копии на протяжении последних 7-ми дней. С этой ситуации есть 2 выхода - создать сайт заново, либо лечить уже существующий. Решил сначала попробовать убрать вирус.
Поменял все пароли доступа к сайту, увидел и удалил в корне сайта подозрительный php-файл, не исключено, что это и был тот файл, который и генерировал iframe. Обнаружил несколько тысяч зараженных файлов, где в конце каждого была прописана строка со ссылкой на сторонний сайт, начинающаяся с <iframe>. Это были все файлы index.html, index.php и default.php, а также некоторые php-файлы (например, main.php). Найти и вылечить инфицированные файлы мне помог "Notepad++". Итак, предоставляю поэтапное решение проблемы:
- Меняем все пароли доступа к сайту.
- Отключаем антивирусник (если он "матерится" на <iframe>).
- Копируем все файлы корневой директории сайта к себе на ПК.
- Качаем и устанавливаем "Notepad++". Запускаем...
- Ищем инфицированные файлы и удаляем <iframe> (открываем один из зараженных файлов, копируем злоумышленный код с iframe и заменяем его в "Notepad++" на пустое место) - "Поиск" -> "Найти в файлах":
После того, как нажали "Найти" Вы увидите окно результатов поиска, в котором содержится информация в каких файлах содержится указанных код, пути к ним и т.д. Проделав то же самое и нажав "Заменить в файлах" мы тем самым заменим эту строку на ничего, чем и удалим ее.
Но такое прокатит только в том случае, если код во всех файлах одинаков. Я столкнулся с тем, что код отличался посредине строки цифрами (что наверняка обозначали генерацию какого-то счетчика). Так что пришлось все файлы "index.html" править в три этапа: заменять сначала первую часть строки до цифр на пусто, заменять вторую часть строки после цифр на пусто и заменять каждую цифру на пусто:
Здесь используется регулярное выражение "/d", которое обозначает цифру. Таким образом, мы заменяем все цифры в каждом файле index.html выбранной директории. При этом обратите внимание на то, что "режим поиска" нужно установить в "Регулярное выражение".
После этих действий все файлы "index.html" вылечены и когда мы откроем любой из них, он будет содержать вот такой код:
<html><body bgcolor="#FFFFFF"></body></html>. Как видим строка с iframe пропала.
Инфицированные php-файлы правим вручную, поскольку замена цифр приведет к тому что полностью их испортим, поскольку эти файлы до заражения содержат другие цифры, кроме того что во вредоносном коде. Но, знаете ли, это файлов 100, а не 1000, поэтому закатываем рукава, и шуршим пальцами по клаве и мышкой по столу.
- Находим вредоносную строку в других файлах (я искал все зараженные файлы по ссылке на сторонний сайт, которая была в iframe-строке):
- Открываем в "Notepad++" все найденные файлы (правая кнопка мыши в результатах поиска -> Open All):
- Закачиваем вылеченные файлы сайта обратно на сервер. Всё! Вируса нет и даже антивирусник не "матерится". Надеюсь и у Вас все получится.