tushov.ru

блог php-программиста, преподавателя и конcультанта

PHP

Ручной антивирусник на PHP =)

Многие наверное слышали про повальное заражение сайтов своеобразным вирусом.  Смысл вируса простой — в каждый index.php (index.html) файл на сервер, где лежит сайт вставляется вредоносный JavaScript-код http://addonrock.ru/Raw_Data.js Код вставляется иногда очень тупо, вызывает error’ы или если у вас display_errors = off то превращает сайты в белые простынки :). Основная заявленная в Интернете причина уязвимости состоит не в уязвимости сервера и не в дырке в CMS, которую вы используете, а именно  в присутствии трояна на вашем компьютере с которого вы осуществляете доступ по FTP к серверу где лежит ваш сайт. Троян похищает пароли к FTP, ну а далее просто патчит JS-вставками все index.* файлы на сервере.

Лечится все это просто, удаляются эти самые JS-вставки кода и все дела. Вот только если файлов на сервере несколько тысяч как например в Joomla и вы вносили исправления и не имеете актуальной зеркальной копии сайта — проблема становится более ощутимой.

Предлагаю свое решение, которым я пользовался для устранение в отдельных случаях вредоносного кода из index.* файлов на сервере. Просто положите в корневую директорию сайта файл antivirus.php, запустите скрипт и увидите анализ всех файлов на предмет присутствия в них JS-вставок кода. Внимательно нажимая на ссылку Лечить напротив нужных файлов удалите все вставки вредоносного кода.  Вот собственно и все.

Самое главное — не забудьте сменить пароль к FTP после излечения всех файлов. И не храните пароли к FTP в программах (FTP-манагерах особенно аля TotalCommander).

Скачать antivirus.zip

17 Comments

  1. Виктор

    Привет,

    Большое спасибо за описание проблемы!

    Попал в такую же беду, только мой скрипт называется . Антивирус запускается, находит мне все скрипты, но при нажатии «Лечить?» ничего не происходит, не грузится, вообще ничего.

    Скажите, пожалуйста, нужно ли что-то поменять в скрипте антивируса под конкретно мой случай? Заранее спасибо за ответ.

  2. Тушов Леонид

    напишите через контактную форму на сайте: указав ссылку на файл antivirus.php на вашем сервере — я посмотрю что он у вас находит и почему не лечится!

  3. Игорь

    administrator/components/com_jsitemaper/assets/slider/index.html: — лечить?
    administrator/templates/khepri/index.php: <script type="text/javascript" src="templates/template ?>/js/menu.js»> — лечить?

    Вот такие сообщения.
    Первое — относительно купленного компонента,второе — штатный шаблон админки.
    Так лечить или это какой то глюк?
    Спасибо.

  4. Игорь

    administrator/components/com_jsitemaper/assets/slider/index.html: — лечить?

  5. Тушов Леонид

    в файлах index.html js-скриптов не должно быть, в принципе можно лечить, единственное для чего нужны эти файлы — как заглушка чтобы при определенных настройках Apache на сервере юзер не видел листинг директорий на сервере вашем. Так что в обычном использовании сайта юзер даже на index.html попадать не будет, поисковики тоже.
    что же касается:

    administrator/templates/khepri/index.php: templates/template/js/menu.js– лечить?

    то конечно же НЕТ! вы же видите относительный путь js/menu.js к файлу скрипта. Он используется для шаблона в админке.
    При лечении подозрительных подключений JavaScript-сценариев обращайте первым дело внимание на их пути подключение. Если путь внешний — не с вашего сервере — то это 99% вирусный код.
    Бывает однако подключают различные доп. библиотеки типа jQuery c code.google.com но это не опасно!

  6. Тушов Леонид

    administrator/components/com_jsitemaper/assets/slider/index.html: – лечить?

    смотря какой javascript-код там обнаружен! Не важно в каком файле, важно что обнаружено!
    что находится внутри тегов script.
    Мой скрипт ничего по сути не лечит, тем более автоматически. Он просто ищет во всех файлах на сервере включение тегов script и выводить их показывая список и давая возможность избирательно удалять эти конструкции из файлов. Вся отвественность за выявление вредоносна ли определенная конструкция script или нет ложится на пользователя использующего этот скрипт.

  7. Игорь

    Спасибо!

  8. евгений

    Добрый день!

    Файл скачал поставил на сервер.
    Запустил, скрипт выдал все заражённые файлы.

    /var/www/vhosts/domen/httpdocs/administrator/backups/index.html: — лечить?
    при нажатии лечить выдаёт:
    Ошибка!

    Подскажите как быть или что поправить в скрипте?
    Заранее спасибо.

  9. Тушов Леонид

    Запустил, скрипт выдал все заражённые файлы.

    скрипт не определяет зараженные файлы — он просто показывает те файлы где есть включения js-скриптов с внешних серверов. Потому конечный вывод делаете разумеется вы — определяя степень вирусности так сказать js-скрипта

    при нажатии лечить выдаёт:
    Ошибка!

    как правило такая ошибка возникает при не возможности внести изменения (изменить) в выбранный файл — а именно не достаточно прав на запись для этого файла. Варианты такие: 1) через FTP вручную почистить файлы от вредоносных включений 2) скопировать все с FTP к себе на локальный компьютер — запустить скрипт вылечить — закинуть по FTP обратно на сервер 3) выставить всем файлам CHMOD-права 0777 — что не совсем правильно и хорошо!

  10. Антон

    У меня вопросик…На ftp зпбрался троян и оказались заражены почтивсе файлы html, php, и js…сайт просто блокировался антивирусом и не открывался….после чистки( скачал весь сайт на компьютер и просканил) начал запускаться…но все равно выдает что некоторые файлы .js заражены, вместо лечения он просто их удаляет…Вопрос так и должно быть или их надо в ручную лечить?

  11. Тушов Леонид

    но все равно выдает что некоторые файлы .js заражены,

    кто выдает? ваш антивирусник?

    вместо лечения он просто их удаляет…Вопрос так и должно быть или их надо в ручную лечить?

    кто мой скрипт удаляет? если скрипт удаляет — то конечно же нет. не должно быть!
    Скрипт в нормальных условиях удаляет js-включения обнаруженные в файлах.
    Мой скрипт не показывает зараженные файлы! — это не антивирусник в прямом смысле слова. Он просто ищет во всех файлах на сервере включение тегов script и выводить их, отображая список и давая возможность пользователю избирательно удалять эти конструкции из файлов. Вся отвественность за выявление: вредоносна ли определенная конструкция script или нет ложится на пользователя использующего этот скрипт.

  12. Анна

    Если эта гадость больше не появится — я просто ОГРОМНО благодарна! ВОЮЮ С ЭТОЙ ГАДОСТЬЮ УЖЕ ВТОРОЙ МЕСЯЦ.

  13. Тушов Леонид

    Если эта гадость больше не появится – я просто ОГРОМНО благодарна! ВОЮЮ С ЭТОЙ ГАДОСТЬЮ УЖЕ ВТОРОЙ МЕСЯЦ.

    рецидив этой «гадости» зависит от исполнения выше описанного мною условия =):

    Самое главное – не забудьте сменить пароль к FTP после излечения всех файлов. И не храните пароли к FTP в программах (FTP-манагерах особенно аля TotalCommander).

  14. maks

    Спасибо , раньше руками с таким боролся , а тут у клиента 11 сайтов заразили
    только просканив один сайт скриптом с поиском заданого вредоносного кода
    = Проверено файлов: 1917
    = Заражены !!! Найдено в : 1155
    руками накладно по времени,
    чуть модернезировав ваш скрипт поборол болячку за минуты , спасибо еще раз
    сэкономили кучу времени на удаление или разработку подобного механизма.
    Чуть доработаю чтоб в клик лечило найденое , выкину в инет со ссылкой на источник.
    :)

  15. Тушов Леонид

    Чуть доработаю чтоб в клик лечило найденое ,

    главное чтобы «автолечение» всех найденных script-включений не удалило бы из файлов действительно используемые скрипты, подключаемых со сторонних серверов (к примеру jQuery и всякие другие библиотеки). Я потому и сделал ручной контролируемый режим — чтобы не удалить так вот помимо вирусных включений внешние подключения рабочих скриптов.

  16. maks

    :) однозначно
    оставил ваш метод (для ручного лечения и проверки регулярки на правильность что вырежет нужное)
    и если визуально все гут то можно одним проходом все почистить

    http://www.maxua.com.ua/blog/php-skript/php/virus-na-sajte.html

    еще раз спасибо

  17. миша

    antivirus.php в корневую директорию поместил, скрипт запустил, а в результате получаю это: Notice: Undefined index: бла-бла-бла. в чем может быть дело?

Leave a Reply

Theme by Anders Norén