В статье приведено исследование безопасности бесплатных шаблонов для системы управления сайтом WordPress, доступных для скачивания на популярных ресурсах для веб-мастеров. Рассматриваются проблемы использования подобных тем и шаблонов. Также приводятся рекомендации и ссылка на небольшую утилиту для проверки скачанных тем на наличие вредоносного кода.
4. Revisium WordPress Theme Checker
Введение
WordPress является наиболее популярной бесплатной системой управления сайтами. По состоянию на август 2013 года число сайтов, работающих под управлением CMS WordPress, составляло более 22%, что в числовом эквиваленте - более 10 миллионов сайтов по всему миру. Этой значительной цифрой обусловлена также популярность тем и шаблонов для данного “движка”, которые можно найти как бесплатные на форумах, порталах и блогах для веб-мастеров, так и платные в магазинах шаблонов.
В рунете особое место занимают специализированные сайты-каталоги бесплатных шаблонов, где веб-мастерам предлагают скачать абсолютно бесплатно тысячи премиальных тем. Мы решили проверить, можно ли доверять таким премиум-темам и чем расплачивается веб-мастер, установив такой шаблон на свой блог.
Методология исследования
На основе поисковой выдачи Яндекса и Google был составлен список из 6 наиболее популярных каталогов бесплатных шаблонов, содержащих тысячи архивов с темами для WordPress. С каждого сайта было скачано 500 последних загруженных архивов с шаблонами. Одинаковые архивы были объединены. В результате сформировался список из 2350 уникальных тем, среди которых достаточно много встречалось коммерческих “премиум-шаблонов” и переведенных западных.
Все шаблоны были просканированы инструментами для поиска вредоносного кода AI-Bolit, Maldet и ClamAv. Из найденных шаблонов были выделены общие вредоносные фрагменты, которые вручную были деобфусцированы и проанализированы.
Результаты проверки
Более половины, а точнее 54%, оказались зараженными хакерскими веб-шеллами, бэкдорами, black hat SEO (“спам”) ссылками, а также содержали скрипты с критическими уязвимостями.
Темы и шаблоны для WordPress мы скачивали с популярных сайтов-каталогов, предлагающих русскоязычные премиум и тематические шаблоны:
- best-WordPress-templates.ru (99% зараженных или уязвимых тем)
- WordPress-ru.ru (99% зараженных или уязвимых тем)
- wpfree.ru (97% зараженных или уязвимых тем)
- wpfreethemes.ru (16% уязвимых тем)
- bestwordpress.ru (7% уязвимых тем)
- wordpreso.ru (3% зараженных тем)
Данные сайты были выбраны как наиболее популярные, поскольку находятся по запросу “бесплатные темы для WordPress” в первой десятке в результатах поисковой выдачи.
Обращаем внимание на то, что они не единственные. Существует огромное число сайтов-клонов, которые предлагают пользователям те же архивы с зараженными и уязвимыми темами.
Рисунок 1. Пример инфицированной темы WordPress
С помощью данного бэкдора можно выполнять произвольный код на сайте (загрузить веб-шелл, удалить содержимое каталогов, вставить вирусный код в шаблоны и скрипты, получить доступ к базе данных и многое другое), в результате чего получить полный контроль над всеми сайтами аккаунта хостинга.
Только с сайта wp-templates.ru тему blogdog скачали 309 раз, а в результатах поиска по запросу “ тема WordPress blogdog ” находится несколько десятков сайтов-каталогов с шаблонами. По грубым оценкам, суммарное число скачанных зараженных тем – более 500 000. Какой вред таят в себе зараженные шаблоны?
Спам-ссылки
Подавляющее большинство (около 97%) проверенных тем содержат код, размещающий чужой контент и спам-ссылки на страницах блога. Это так называемое “черное SEO” – недобросовестный метод продвижения сайтов в поисковых системах и накручивания поисковых параметров ТИЦ и PR. Как он работает? В момент открытия страницы код в файлах header.php, footer.php или functions.php выполняет загрузку списка спам-ссылок с внешнего сайта и размещает их на страницах блога в невидимом для посетителей блоке.
Рисунок 2. Пример вредоносного PHP-скрипта для спам-рассылки
Более продвинутый вариант кода может выполнять кэширование загруженных ссылок в файле (обычно такой файл имеет расширение .png или .gif и размещается в каталоге images темы, чтобы не вызвать подозрение вебмастера). Кроме размещения спам-ссылок в невидимом блоке, код может вставлять чужой контент (текст и ссылки) на страницах блога, а также заменять отдельные слова в тексте на ссылку, ведущую на чужой сайт.
Рисунок 3. Пример вредоносного PHP-скрипта для спам-рассылки
В шаблонах часто можно встретить и статические ссылки на чужие сайты. Но они будут также изначально закодированы с помощью base64 или функции str_rot13.
Рисунок 4. Пример вредоносного PHP-скрипта для спам-рассылки
С учетом большой популярности бесплатных тем, данный метод “черного” продвижения достаточно эффективен, так как позволяет сформировать большую ссылочную массу, поэтому активно используется недобросовеcтными SEO-оптимизаторами и хакерами для продвижения сайтов клиентов или собственных проектов.
В результате работы вредоносного кода сайт превращается в линкферму, заспамленную “пластиковыми окнами”, “виагрой” и ссылками на сайты для взрослых, теряет лояльность со стороны поисковой системы и посетителей, а иногда попадает в бан или блокируется антивирусным программным обеспечением. Еще одним негативным моментом для сайта является также увеличение нагрузки на процессор и замедление открытия страниц блога, так как при открытии каждой страницы выполняется подключение к внешнему ресурсу.
Пример заражения шаблона:
Рисунок 5. Пример заражения шаблона WordPress
После декодирования:
Рисунок 6. Пример заражения шаблона WordPress (декодированный скрипт)
Критические уязвимости в timthumb.php
Следующая по популярности проблема в шаблонах WordPress – это уязвимости в скрипте timthumb.php. Данный скрипт очень популярен среди разработчиков шаблонов и активно используется в темах для автоматического масштабирования изображений. В версии 2.8.13 и более ранних обнаружено несколько критических уязвимостей, позволяющих исполнять произвольный код на сайте и загружать произвольные файлы на хостинг (в том числе хакерские веб-шеллы). Если на вашем сайте установлена одна из старых версий, необходимо как можно быстрее обновить ее до актуальной из репозитория timthumb.googlecode.com/svn/trunk/timthumb.php. В противном случае все сайты на вашем аккаунте хостинга под угрозой.
Бэкдоры и веб-шеллы
И, наконец, переходим к самым опасным и явным признакам зараженной темы – это наличие бэкдоров и веб-шеллов.
Рисунок 7. Пример внедрённого в веб-страницу PHP-шеллкода
Эти скрипты предоставляют хакеру полный контроль над файловой системой и базой данных аккаунта: можно управлять файлами и каталогами, размещать дорвеи, мобильные и поисковые редиректы, вирусный код в шаблонах и многое другое. Поскольку на большинстве виртуальных хостингов скрипты сайта могут получить доступ к файлам соседнего сайта, скопрометированными оказываются все сайты владельца, размещенные на том же аккаунте хостинга.
Для того чтобы оценить возможный ущерб от наличия на сайте веб-шеллов или бэкдоров, достаточно вспомнить нашумевшее заражение вредоносом Linux Mayhem, в результате действий которого было поражено более 1400 серверов с тысячами сайтов и проведены массовые брутфорс атаки на админ-панели CMS Joomla, WordPress, а также FTP аккаунты.
К счастью, веб-шеллов было обнаружено всего в 3% проверенных тем каталога wordpresso.ru (в шаблонах 3_PM, beautygames, blogdog, browntextures, edu_0, gamesstylish, gamingzone, grand-banquet, hostingsite, myfinance_0, pink-cake, PurpleStyle, refresh-your-taste). Тем не менее, необходимо быть на чеку и перед использованием проверять темы на наличие хакерских скриптов.
Revisium WordPress Theme Checker
В помощь веб-мастерам мы написали небольшой сканер, который ищет типичные вредоносные фрагменты в темах WordPress. В частности, те фрагменты, которые были обнаружены в ходе эксперимента.
Рисунок 8. Результат сканирования Revisium WordPress Theme Checker
Выводы
Результаты анализа показывают очевидный факт – доверять шаблонам, скачанным не с официальной страницы разработчика темы для WordPress нельзя. При использовании таких шаблонов необходимо обязательно выполнять тщательный статический анализ исходного кода темы на предмет обнаружения вредоносного кода, “закладок” или уязвимостей. Но лучше всего использовать проверенные источники, а премиум-шаблоны покупать. Как писал А.С. Пушкин: “…не гонялся бы ты, поп, за дешевизною”.
Напоследок несколько советов о том, как уберечь свой блог от взлома при использовании шаблонов:
- Скачивайте темы только из проверенных источников. Если вы скачиваете коммерческую премиум-тему с сайта, где она размещена бесплатно, скорее всего шаблон заражен. Поэтому в первую очередь от взлома блогов на WordPress страдают любители халявы. Коммерческие темы для WordPress нужно покупать на официальных сайтах. Это практически исключает вредоносные вставки в шаблонах.
- Проверьте скачанные темы на наличие вредоносного кода и спам-ссылок. Это можно сделать сканером AI-BOLIT. Все подозрительные файлы проверьте вручную. Для анализа тем на вредоносные вставки вы также можете обратиться к специалистам. Для экспресс-проверки можете воспользоваться сканером тем rwp_checker.php.
Не рекомендуем использовать десктопные антивирусы для проверки шаблонов. В большинстве случаев они не обнаружат ничего подозрительного, так как обнаружение вредоносного кода в php скриптах — не их профиль. - Если на вашем сайте используется скрипт для масштабирования изображений timthumb.php или его модификации(thumb.php, _img.php и пр), проверьте его версию и обновите до последней доступной:timthumb.googlecode.com/svn/trunk/timthumb.php
- Удалите все неиспользуемые шаблоны из директории wp-content/themes
По нашим наблюдениям, пользователи устанавливают не один, а сразу несколько бесплатных шаблонов, тем самым увеличивая в разы вероятность взлома сайта. Если тема неактивна, она все равно позволяет открывать вредоносные скрипты из каталога wp-content/wp-themes/<имя темы>, поэтому не рекомендуем хранить коллекцию тем непосредственно на хостинге. Оставьте одну, активную, а остальные удалите.