Разработка алгоритма анализа CMS WordPress на наличие уязвимостей | Статья в журнале «Молодой ученый»

Автор:

Рубрика: Информатика

Опубликовано в Молодой учёный №4 (138) январь 2017 г.

Дата публикации: 24.01.2017

Статья просмотрена: < 10 раз

Библиографическое описание:

Колинько Ф. К. Разработка алгоритма анализа CMS WordPress на наличие уязвимостей // Молодой ученый. — 2017. — №4. — С. 162-164. — URL https://moluch.ru/archive/138/38652/ (дата обращения: 25.09.2018).



WordPress представляет собой систему управления контентом (CMS), со свободным и открытым исходным кодом, написанную на языке программирования PHP и использующую СУБД MySQL. WordPress установлен на веб-сервере, который либо является частью интернет-хостинга, либо частной локальной сети. Первый вариант может быть реализован с помощью собственной службы-хостера, такой как WordPress.com, а второй — с использованием машины под управлением пакета программного обеспечения WordPress.org. Примером второго случая является локальный компьютер, настроенный как самостоятельный веб-сервер с хостингом Wordpress для целей тестирования или обучения пользователей.

Особенностями данной CMS являются: использование плагинов и система шаблонов. WordPress был использован для создания более чем 23,3 % из 10 миллионов веб-сайтов по состоянию на январь 2015 года. WordPress является самой популярной системой ведения блога.

Для данной статьи используется WordPress версии 4.4.2.

В связи с подобной популярностью использования данной CMS в веб-индустрии для создания порталов различных масштабов, и не в последнюю очередь порталов для коммерческой деятельности, стал актуальным вопрос уязвимости ресурсов, использующих WordPress. А одна из приятных возможностей системы — использование плагинов — только обостряют ситуацию, так как для их размещения не требуется прохождения пре-релизной проверки на соответствие кода заявленному функционалу и на наличие в нем недокументированных возможностей. Таким образом, люди, не имеющие отношения к профессиональной разработке, при загрузке уже готовых плагинов и шаблонов подвергают свои проекты и свою информацию опасности копирования или уничтожения.

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

Возможные уязвимости веб-ресурсов, использующих CMSWordPress

Веб-порталы, использующие как основу язык программирования PHP и СУБД MySQL имеют ряд общих проблем безопасности. В данном разделе мы рассмотрим их общие принципы проявления, возможные и доступные методы борьбы с ними при необходимости, а также менее тривиальные уязвимости и статус их официального исправления на данный момент.

Misconfiguration (ошибочная настройка) — представляет собой вариант неправильной установки CMS на хостинг, что ведет в дальнейшем к возможности получения полного контроля злоумышленником над данным ресурсом в пределах под-папки на сервере или, в особо редких случаях, и содержимому корневой папки. Для избежания подобного инцидента достаточно ознакомиться с главой об установке в официальной документации.

Injection flaws — возможности для инъекций вредоносного кода разных видов. Это может произойти, когда вы передаете неотфильтрованные данные на сервер SQL (SQL-инъекции), в браузер (XSS), на сервер LDAP (LDAP- инъекции) и т. п. Проблема заключается в том, что злоумышленник может внедрять таким образом исполнительные команды (скрипты), что приводит к потере данных и позволяет использовать браузеры клиентов для кражи аутентификационной информации. Для защиты от инъекций необходимо настроить на хостинге фильтрацию входящего трафика, так как в самом WordPress данные виды уязвимостей уже учтены.

Broken authentication — состоит из нескольких проблем, которые могут возникнуть из-за «сломанной» аутентификации, например:

  1. URL может содержать идентификатор сеанса и утечки его в заголовке реферера кому-то другому.
  2. Пароли могут быть не зашифрованы либо при хранении или передаче.
  3. Идентификаторы сессий могут быть предсказуемыми.
  4. Возможный перехват сессии, если портал использует доступ по протоколу с HTTP (без SSL), и т. д.

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

Cross site scripting (XSS) — довольно частый случай инъекций. Злоумышленник подает веб-приложению на вход код, написанный на языке программирования JavaScript. При случайном обращению к нему пользователем произойдет немедленное выполнение скрипта браузером. Он может быть замаскирован в виде простой фишинговой кнопки или менее приметным образом. На загруженной странице начинает работать сценарий, который, например, может быть использован для отправки cookies злоумышленнику. Решением является невозвращение HTML-тегов клиенту. Такой метод имеет дополнительное преимущество в защите от HTML инъекции, атаки, в результате которой злоумышленник производит инъекцию простого HTML-содержимого (например, изображения). Данная уязвимость была устранена в WordPress не так давно, согласно данным на сайте трэкинга уязвимостей.

Insecure Direct Object References — классический случай доверия вводимым пользователем данных. Прямая ссылка на объект означает, что внутренний объект, такой как файл или база данных раскрыт пользователю. Проблема состоит в том, что злоумышленник может подменить эту ссылку и получить доступ к веб-порталу. При использовании WordPress CMS данная проблема отпадает, так как авторизация осуществляется должным образом и подмена ссылки злоумышленником ни к чему не приведет, т. к. он не имеет прав доступа.

Unvalidated redirects and forwards — это еще один момент фильтрации входящего поток данных. Предположим, что целевой участок имеет модуль redirect.php, который принимает URL в качестве параметра GET. Манипулируя данным параметром, мы может создать URL на наш собственный ресурс, который при нажатии перенаправляет браузер непосредственно на портал злоумышленника. Также, возможно перенаправление с добавлением команд в формате CGI. Решением в данном случае является использование встроенного функционала WordPress, с последующим запрещением создания редиректов для всех возможных пользователей с правами доступа ниже Администратора.

DDoS-атаки остались не рассмотренным, т. к. успешность в противодействии им напрямую зависит от хостера и выделенного под веб-портал лимита ресурсов.

Алгоритм анализа CMS WordPress на наличие уязвимостей

Для проведения аудита веб-портала, созданного с использованием CMS WordPress воспользуемся специально разработанной для подобных целей технологией, размещенной по открытой лицензии в сети Интернет.

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

Таблица 1

Анализ полученной информации об уязвимостях

Потенциальная уязвимость

Возможности использования

Вариант устранения

Вывод используемой версии CMS

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

Скрыть файл /readme.html в корне public папки на хостинге, сделав его доступным только для администратора или удалить

Вывод общей технической информации о ресурс

С помощья сервиса Whois возможно определение данных о владельце, таких, как имя/фамилия и адрес

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

Вывод списка использованных плагинов

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

Интегрировать плагины напрямую в functions.php CMS или вообще ими не пользоваться

Bruteforce возможных путей размещения популярных плагинов

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

Интегрировать плагины напрямую в functions.php CMS или вообще ими не пользоваться

Вывод название используемой темы

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

Постоянно иметь самую свежую версию используемого шаблона, либо создать собственный

Вывод логинов пользователей и их идентификаторов (User Enumeration)

Последующий подбор пароля или записей в БД

Внести в.htaccess файл хостинга следующие строки:

RewriteCond %{REQUEST_URI}!^/wp-admin [NC]

RewriteCond %{QUERY_STRING} author=\d

RewriteRule ^ /? [L,R=301]

Индексирование директорий

Получением злоумышленником структуры сайта и возможность доступа к файлам, предназначенным исключительно для разработчика

Отключить индексирование в файле.htaccess корневого каталога хостера

Внешние ссылки на JavaScript файлы

Находить уязвимые методы для XSS-инъекций

Объединять все имеющиеся JavaScript-файлы в один с последующем размещении на внутреннем ресурсе

Внешние вставки с помощью HTML5-тега