20 сентября 2011 г.

Почему ни в коем случае не стоит искать бесплатные шаблоны для Wordpress в Google, или где-либо ещё. Часть 1


Этот текст – первая часть моего перевода статьи «Why You Should Never Search For Free WordPress Themes in Google or Anywhere Else», написанной Siobhan McKeown. По мере перевода я позволил себе сделать несколько замечаний. Также, мне не не нравится манера автора выделять жирным начертанием текст, там где это абсолютно не требуется (а в обычном тексте это не требуется нигде), а также вставлять кучу ненужных картинок. Последняя добивающая штука - это вставка кода в виде картинок с добавлением красных стрелочек, восклицательных знаков и сердечек. Типа читатель дебил, и не поймёт, куда ему смотреть. Женская натура автора выдаёт себя повсеместно. Однако, затронутая ей тема показалась мне очень интересной.

Итак, начнём:



Пару месяцев назад я написала статью «Безопасность Wordpress». А сегодня, вооружившись поисковым запросом «бесплатные темы Wordpress», и двумя плагинами: Theme Authenticity Checker Plugin и Exploit Scanner, я собираюсь оценить, насколько безопасны бесплатные темы с первой страницы выдачи Google.



Замечание: Я не загружала ни одну из этих тем на реально работающий сервер. Вместо этого я воспользовалась xampp на своём компьютере, с локально установленным движком Wordpress. И я также категорически не советую вам бездумно загружать на сервера темы, скаченные из неизвестных источников. Никогда не знаешь, что можешь подхватить с этой новой темой. А подхватить действительно есть что…

Замечание переводчика: xampp – это локальный сервер для веб-разработчиков apache+mysql+php+perl, аналог нашего Денвера.

1. WordPressThemesBase
Видимо, сеошники хорошо потрудились, что бы этот сайт занял первое место по такому популярному запросу как «бесплатные темы Wordpress».
Я скачала тему Prinz Branford Magazine. И мне сразу же показалось, что что-то здесь не так. Branford Magazine это тема от сайта der Prinz. И это очень старая модификация данной темы, которая, насколько я могу судить, даже не оптимизирована под текущую версию движка Wordpress 3.0. В то время как полноценная Pro-версия вышла совсем недавно. Из всего этого мы можем сделать вывод, что представленная для скачивания версия либо не будет полноценно работать с третьим вордпрессом, либо является пробной версией полноценного движка.

Замечание переводчика: Действительно, автор темы подтверждает, что версия распространяемая через сайт WordPressThemesBase, является устаревшей, содержит вредоносный код и распространяется без согласия автора.


Но давайте по порядку. Установим данную тему и прогоним её через Theme Authenticity Checker.


Найден зашифрованный код! Первая же ссылка с гугла привела меня к шаблону с зашифрованным кодом в base64. Вот же я везучая… Обычно код шифруют для того что бы скрыть вредоносную составляющую. Из плагина TAC можно понять, что зашифрованный код используется в футере шаблона. Давайте посмотрим на футер:


Ага, это копирайт! Но что же спрятано за base64? Что бы узнать это, придётся декодировать его, а сделать это можно двумя способами:
1)  Можно попробовать Otto’s decoder
2) Либо можно сделать тоже самое вручную, по данной инструкции, и в результате всё тайное станет явным.
  
Я пошла по второму пути. Заменив eval() на echo() я увидела следующее:




Чего? Минуту назад там был копирайт, а теперь какая-то ссылка «Скачайте бесплатный антивирус»! Откуда она взялась? Вот что оказывается скрывалось за кодом в base64.

Вердикт:
Я скачала ещё две темы с этого же сайта и они обе содержали в себе зашифрованный код. А ведь там могли прятаться не только безобидные ссылки, но и вредоносный, вирусный код. Я связалась с Майклом Ойзером (Michael Oeser) с сайта der Prinz, дизайнером темы Branford Magazine, и он сообщил мне, что пытался связаться с представителями сайта WordPressThemesBase, что бы они удалили его тему, но всё тщетно. Он опубликовал сообщение в своём блоге, предупреждающее об опасности скачивания тем с пиратских сайтов. Совет Майкла: держаться подальше от таких сайтов, как WordPressThemesBase. И поверьте, это хороший совет.

Моё решение:
Остерегаться!



Перевод первой части закончен. Далее идёт замечание переводчика, т.е. моё :)
Я не смог отказать себе в удовольствии покопаться в коде, тем более, что, как мне показалось, автор оригинального текста не достаточно внимания уделила самому интересному: разбору работы вредоносного кода. Короче, я тоже скачал и установил данную тему.
Начнём:
Прогоняем через Theme Authenticity Checker, и убеждаемся, что зашифрованный код в теме действительно имеется, и находится в футере.
Открываем файл footer.php из папки с темой, и видим там следующий код:

<?php eval(base64_decode('Pz4gPC9kaXY+IA0KPGRpdiBpZD0iZm9vdGVyIj4gDQogIDw/cGhwIHdwX2Zvb3RlcigpOyA/Pg0KICA8ZGl2PiAmIzE2OTsgPD9waHAgZWNobyBkYXRlKCdZJyk7ID8+IA0KICAgIDw/cGhwIGJsb2dpbmZvKCduYW1lJyk7ID8+DQogICAgICA8P3BocCBpZihpc19mcm9udF9wYWdlKCkpIHsgJGNwID0gd3BfY291bnRfcG9zdHMoJ3Bvc3QnKTsgJGNwcCA9ICRjcC0+cHVibGlzaDsgaWYgKCRjcHA9PTApIHskY3AgPSB3cF9jb3VudF9wb3N0cygncGFnZScpOyAkY3BwID0gJGNwLT5wdWJsaXNoO30gIGlmKCAkY3BwID4gMjApIDogPz48YSBocmVmPSJodHRwOi8vb25saW5lcmFkaW8ubWQvcnUvIiB0aXRsZT0i0KDQsNC00LjQviDQvtC90LvQsNC50L0iPtCg0LDQtNC40L4g0L7QvdC70LDQudC9PC9hPjw/cGhwIGVuZGlmOyB9ID8+DQoNCiAgICA8ZGl2PjwvZGl2PiANCiAgICA8P3BocCB3cF9sb2dpbm91dCgpOyA/PiAuIA0KICAgIDw/cGhwIHdwX3JlZ2lzdGVyKCcnLCAnIC4nKTsgPz4NCgk8P3BocCBlY2hvIGdldF9udW1fcXVlcmllcygpOyA/PiBxdWVyaWVzLiA8P3BocCB0aW1lcl9zdG9wKDEpOyA/PiBzZWNvbmRzLg0KICA8L2Rpdj4NCjwvZGl2Pg0KPC9ib2R5Pg0KPC9odG1sPg0KIDw/'));?>

Здесь содержится некий исполняемый php код, но он зашифрован. Собственно говоря, командой base64_decode этот код дешифруется, а командой eval дешифрованный код передаётся php на исполнение.
Автор оригинального текста предлагает два варианта дешифрации. Первый - это сайт Otto’s decoder, но он оказывается бесполезен чуть более чем полностью, ибо не может справиться с такой элементарной задачей, как декодирование base64. Второй вариант - это какой-то невероятно геморный ручной способ, состоящий из восьми пунктов. Честно говоря, после такого странного туториала я усомнился в адекватности автора. Есть гораздо более простые способы ручного декодирования base64.

В общем, вместо двух вариантов автора, могу предложить два своих варианта:
1) Прогнать код через нормальный декодер, например base64decode.
2) Либо вручную: обернуть весь код в <textarea> и сделать echo() вместо eval(). В textarea надо оборачивать для того, что бы браузер не сожрал html-теги. Тут есть нюансы, но в данном случае хватит и такого простого способа.

В любом случае мы увидим следующую картину:

?> </div>
<div id="footer">
  <?php wp_footer(); ?>
  <div> &#169; <?php echo date('Y'); ?>
    <?php bloginfo('name'); ?>
      <?php if(is_front_page()) { $cp = wp_count_posts('post'); $cpp = $cp->publish; if ($cpp==0) {$cp = wp_count_posts('page'); $cpp = $cp->publish;}  if( $cpp > 20) : ?><a href="http://onlineradio.md/ru/" title="Радио онлайн">Радио онлайн</a><?php endif; } ?>
    <div></div>
    <?php wp_loginout(); ?> .
    <?php wp_register('', ' .'); ?>
<?php echo get_num_queries(); ?> queries. <?php timer_stop(1); ?> seconds.
  </div>
</div>
</body>
</html>
 <?

Сразу бросается в глаза "Радио онлайн". По-русски? Офигеть! А где же "Free Anti-Virus Download", который был у автора оригинальной статьи? Похоже, что создатели сайта WordPressThemesBase достаточно умны, что бы смотреть, из какой страны пришёл пользователь и отдавать ему сборку шаблона с региональными ссылками. Давайте рассмотрим код. Он выводит стандартный футер вордпресса, и вполне нормален за исключением вот этой строчки:

<?php if(is_front_page()) { $cp = wp_count_posts('post'); $cpp = $cp->publish; if ($cpp==0) {$cp = wp_count_posts('page'); $cpp = $cp->publish;}  if( $cpp > 20) : ?><a href="http://onlineradio.md/ru/" title="Радио онлайн">Радио онлайн</a><?php endif; } ?>
Ага! Ссылка на какое-то онлайн радио появляется при выполнении двух условий: только на главной странице, и только если кол-во опубликованных записей на этой странице больше 20. Это, очевидно, нужно для того, что бы в потоке общей информации левая ссылка просто затерялась. Ну а главная страница имеет больший вес для поисковых движков.

Так зачем же вообще нужна эта несчастная ссылка? Стоило ли из-за неё так гемороиться создателям сайта WordPressThemesBase? Да, стоило. И вот почему. Именно так выполняется "профессиональное" продвижение сайтов, таких как "Радио онлайн" в моём случае, или сайта "бесплатного антивируса" в случае автора оригинальной статьи. Точнее, это всего лишь один из способов. Чем больше ссылок на их нелепые сайты будет содержаться на просторах интернета, тем выше они будут в поисковой выдаче. Гугл, Яндекс и другие поисковые движки сканируют сайты в интернете, и индексируют встречающиеся на них ссылки. А вы, скачивая такую вот "бесплатную" тему, во-первых нарушаете закон, т.к. используете краденую тему (вы можете даже не подозревать об этом), а во-вторых помогаете этим горе-оптимизаторам поднимать нужные им сайты в выдаче гугла. Вот оно - "честное" продвижение.

В следующей части мы посмотрим, что ещё может скрываться в "бесплатных" шаблонах для wordpress.

2 комментария:

  1. Спасибо за познавательный перевод и ваши действия по проверке всего этого! Очень интересно было прочитать!

    ОтветитьУдалить
  2. Спасибо Алексей, все правильно!

    ОтветитьУдалить