Архив рубрики: защита Wordpress

Опасность просмотра содержимого директорий

Добрый день, дорогие читатели!

Достаточно часто на сайтах включена опция просмотра содержимого директорий. Иными словами: пользователю доступен список всех файлов и директорий при обращении вида http://site.com/wp-content/plugins/. Вот так он может выглядеть:

 

Листинг директории

Листинг директории

В чем же заключается опасность такой конфигурации? Такой вопрос часто задают пользователи нашего сервиса weBBez, который умеет определять такие директории.

Давайте рассмотрим это на примере нашумевшей уязвимости в плагине Revolution Slider, которая была обнаружена и активно использовалась злоумышленниками этим летом. Она позволяла за один запрос получить содержимое любого файла в контексте блога на WordPress. Логично, что все нацеливались на файл wp-config.php, который содержит конфиденциальную информацию (более подробно об этом файле вы можете прочитать в нашей статье).

Подавляющее большинство сайтов, на которых был установлен этот плагин, злоумышленники получали из Google, вот таким запросом inurl:/wp-content/plugins/revslider/.

Плагин revslider с помощью Google

Плагин revslider с помощью Google

Роботы поисковой системы смогли проиндексировать директорию, в которой перечислены все установленные плагины.

Давайте убедимся, что все результаты получены исключительно для тех сайтов, где открыт листинг. Запрос inurl:/wp-content/plugins/revslider/ «index of» попросит Google вернуть только те результаты, где встречается фраза «index of» (характерный признак открытых директорий).

Открытые директории с indexof

Открытые директории с indexof

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

А теперь представим себе следующую картину: через неделю исследователи найдут серьезную уязвимость (скажем sql-инъекцию) уже в другом плагине. И в этом случае первыми в списке массового взлома окажутся подобные сайты. Google знает, какие плагины у них установлены. Остается его только спросить об этом 🙂

Ну как, мы вас убедили, что «открытые» директории это плохо?

А теперь пару слов о способах защиты. Не думайте, что использование robots.txt даст надежную защиту. У злоумышленников все равно останется возможность узнать список плагинов за один запрос.

Лучше всего разместите в корне сайта файл .htaccess (если его там еще нет) и поместите туда следующую строчку:

Options All -Indexes

Проверьте, что ваш сайт поддерживает использование файла .htaccess. А теперь обратитесь к директории с плагинами (http://site.com/wp-content/plugins/). Если вы увидите пустую страницу или фразу Forbidden, то все в порядке.

Спасибо за внимание!

Как защитить блог на WordPress?

В настоящее время резко возросло количество успешных атак на сайты, построенные на основе cms WordPress. Связано это с огромной популярностью системы, разнообразием плагинов и тем оформления, а также хорошо проработанными и автоматизированными механизмами сканирования.

В этой статьей будут представлены практические рекомендации по установке и использованию данной платформы. Выполнение этих советов сведет к минимум возможность успешной атаки на ваш блог.

Этап установки

Измените префикс таблиц

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

Изменение префикса таблиц

Изменение префикса таблиц

Если на этапе установке вы не изменили префикс, это можно сделать пойзже с использованием специальных плагинов (iThemes Security, Wordfence Security). Вручную этого делать не стоит — велика вероятность ошибки. Перед изменением названий рекомендуется сделать полный бэкап базы.

Измените имя администратора

При установке создается учетная запись администратора с именем «admin». Рекомендуется его изменить на что-то вроде «superuser_12». Этим вы затрудните злоумышленникам автоматизированный подбор пароля, так как по умолчанию подбор пароля производится для пользователя с именем «admin».

Изменить пользователя admin

Изменить пользователя admin

Этап эксплуатации

Обновляйте ядро, установленные плагины и темы

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

Проверка обновлений wordpress

Проверка обновлений wordpress

Рекомендуется не реже одного раза в неделю (лучше чаще) заходить на панель проверки обновлений («Консоль» -> «Обновления»). С помощью дополнительных плагинов (Updater) можно настроить автоматическую проверку обновлений с уведомлением на почту.

Желательно перед применением обновлений делать резервную копию блога. Воспользуйтесь для этого бесплатным плагином UpdraftPlus с настройкой на удаленное хранение резервных копий.

Защитите панель входа для зарегистрированных пользователей

Панель входа является тем барьером, который разделяет публичную часть сайта и административную. Для cms WordPress панель располагается по адресу example.com/wp-config.php.

Достаточно часто форма авторизации подвергается так называемому брутфорсу (автоматизированному подбору паролей). Противостоять этому вы сможете, если добавите защиту от ботов — Капчу. Можете воспользоваться для этого любым из плагинов, например Captcha.

Защита панель входа

Защита панель входа

Вот так будет выглядеть ваша форма авторизации.

Если на блоге запрещена свободная регистрация пользователей, тогда рекомендуется переместить панель входа по другому адресу (с example.com/wp-config.php на что-то example.com/cont_1243). Это можно сделать с помощью плагина iThemes Security. Изменив адрес, автоматические средства подбора паролей попадут в затруднение.

Перенос панели входа на другой адрес

Перенос панели входа на другой адрес

Так же рекомендуется настроить количество попыток ввода неправильного пароля. После чего ip-адрес, откуда производились попытки, будет на время заблокирован. Используйте тот же плагин.

Защита от брутфорса

Защита от брутфорса

Защитите конфигурационный файл wp-config.php

Файл wp-config.php расположен в корневой директории WordPress (http://example.com/wp-config.php). В нем содержатся параметры подключения к базе данных, ключи шифрования, префикс таблиц и дополнительные настройки.

Если файл будет доступен для злоумышленников, то у них появляется реальный шанс получить полный доступ до вашего сайта. На очень многих хостингах установлена панель управления базой данных — phpMyAdmin.  Использование параметров из файла wp-config.php позволит пройти авторизацию в этой панели.

Основная причина доступности файла — небезопасная конфигурация. Достаточно  часто администратор сайта создает резервные копии вида:

  • wp-config.php.old
  • wp-config.php1
  • wp-config.php.test
  • wp-config.php~

Последний пример в списке создается автоматически некоторыми текстовыми редакторами. При использовании таких имен файлы перестают обрабатываться как php-скрипты. При прямом запросе (например, http://example.com/wp-config.php.old) пользователь получит все содержимое.

Не храните резервные копии конфигурационного файла в пределах вашего сайта. Для дополнительной защиты поместите следующий код в файл .htaccess, расположенный в корне сайта:

<Files ~ «^wp\-config\.»>
    Order allow,deny
    Deny from all
    Satisfy all
</Files>

Так вы заблокируете доступ к этому файлу (и всем его копиям) средствами веб-сервера.

Скройте версию WordPress

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

Номер версии можно посмотреть в двух местах:

  • в файле readme.html (расположен в корне сайта)
  • в html-коде любой страницы блога (meta-теге generator)
Версия WordPress в файле readme.html

Версия WordPress в файле readme.html

С файлом все просто — удалите его.

Для того, чтобы убрать meta-тег generator рекомендуется воспользоваться одним из плагинов в категории «Безопасность» (например, iThemes Security).

iThemes - скрываем версию

iThemes — скрываем версию

Используйте плагины безопасности

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

iThemes Security - сниппет плагина

iThemes Security — сниппет плагина

Wordfence Security - сниппет плагина

Wordfence Security — сниппет плагина

Количество настраиваемых параметров и выполняемых функций очень велико. Вот только некоторые из них:

  • контроль изменения файлов
  • защита от брутфорса
  • сокрытие версии WordPress
  • отключение xmlrpc
  • отключение встроенного редактора
  • защита системных файлов
  • отключение листинга директорий
  • фильтр http-методов
  • блокировка подозрительных запросов

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

Блокируйте небезопасные запросы

Обновление ядра и плагинов — это важный момент. Но что делать, если описание уязвимости или эксплойт для нее попали в сеть, а исправления разработчики еще не выпустили?

Совсем недавно (30 октября) это произошло с плагинами «CP Multi View Event Calendar» и «Rich Counter«. Рекомендовалось их немедленно удалить, пока не будет выпущено обновление.

В таких ситуациях может помочь использование Web Application Firewall. Специальное программное обеспечение, которое пропускает запросы пользователей через собственные фильтры и, если обнаруживает признаки атак, блокирует их. Очень известный продукт — ModSecurity (модуль для веб-сервера Apache).

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

IThemes: блокировка длинных URL

IThemes: блокировка длинных URL

iThemes: блокирование подозрительных URL

iThemes: блокирование подозрительных URL

Такой подход защитит ваш блог от следующих уязвимостей:

  • sql-инъекции
  • xss
  • lfi и rfi инклюдинг

Используйте механизмы для активного аудита (пентестинг)

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

Стартовая страница сканера

Стартовая страница сканера

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

  • определение версии WordPress и наличие в ней известных уязвимостей
  • поиск установленных плагинов и тем, а также найденные в них уязвимости
  • проверка использования простых паролей
Определение версии WordPress

Определение версии WordPress

Из минусов стоит отметить, что проблематично установить сканер на Windows-платформу.

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

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

 

Не используйте FTP

Использование ftp-протокола — это потенциальная угроза безопасности. Причина — передача пароля и данных в «открытом» виде (нешифрованный протокол).

Для администрирования сайта рекомендуем использовать SSH или SFTP. В этом случае весь сеанс связи зашифрован. Большинство хостингов предоставляют такую возможность.

Стоит отметить, что в последних релизах WordPress для установки плагинов и тем cms требует наличие ftp-подключения. Для отключения этой функции добавьте в конец файла wp-config.php следующую строку:

define(‘FS_METHOD’, ‘direct’);

 

Вывод. Для защиты вашего сайта на основе cms WordPress рекомендуется выполнить следующие шаги и рекомендации:

  • измените префикс таблиц
  • измените имя администратора
  • обновляйте ядро, установленные плагины и темы
  • защитите панель входа для зарегистрированных пользователей
  • защитите конфигурационный файл wp-config.php
  • скройте версию WordPress
  • используйте плагины безопасности
  • блокируйте небезопасные запросы
  • используйте механизмы для активного аудита
  • не используйте FTP

Ссылки на упомянутые программные продукты:

  • iThemes Security — https://wordpress.org/plugins/better-wp-security/
  • Wordfence Security — https://wordpress.org/plugins/wordfence/
  • Updater — https://wordpress.org/plugins/updater/
  • UpdraftPlus — https://wordpress.org/plugins/updraftplus/
  • Captcha — https://wordpress.org/plugins/captcha/
  • phpMyAdmin — http://www.phpmyadmin.net/home_page/index.php
  • ModSecurity — https://www.modsecurity.org/
  • WPScan — http://wpscan.org/
  • weBBez — http://webbez.ru/