Тестирование на проникновение для сайтов WordPress

Опубликовано: 2020-03-20

WordPress поддерживает множество веб-сайтов в Интернете. Так что неудивительно, что опытные злоумышленники и «дети со сценариями» любят нацеливаться на веб-сайты WordPress. Независимо от того, являетесь ли вы веб-мастером или специалистом по безопасности, когда вам поручают оценить состояние безопасности веб-сайта WordPress, полезно знать об распространенных ловушках безопасности, которыми обычно пользуются злоумышленники. Также важно использовать правильные инструменты тестирования на проникновение.

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

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

Общие проблемы безопасности WordPress и злоупотребления служебным положением

Устаревшие версии кода WordPress

Запуск старых версий ядра WordPress, содержащих уязвимости в системе безопасности, возможно, является одной из самых распространенных дыр в безопасности, связанных с WordPress. В то время как более новые версии WordPress упрощают обновление до последней версии, нередко старые сайты WordPress отстают.

Запуск старой версии WordPress в Интернете — это бомба замедленного действия. Многие старые версии WordPress содержат уязвимости в системе безопасности. Многие из этих проблем безопасности обычно массово используются злоумышленниками.

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

<meta name="generator" content="WordPress 4.8.11" />

Знание того, что установка WordPress работает под управлением старой версии, может дать злоумышленнику возможность воспользоваться известной уязвимостью. Используйте базу данных уязвимостей безопасности CVE для поиска известных проблем безопасности в ядре WordPress.

Устаревшие версии тем и плагинов WordPress

Ядро WordPress очень безопасно. Миллионы пользователей и злонамеренных хакеров одинаково тестируют и тщательно проверяют код. Это означает, что в большинстве случаев проблемы безопасности обнаруживаются и устраняются до того, как злоумышленники ими воспользуются. Однако он не застрахован от уязвимостей безопасности. К сожалению, это не относится к тысячам плагинов и тем WordPress.

Любой может отправить тему или плагин и сделать их доступными для загрузки и использования любым администратором WordPress. Конечно, это не означает, что каждый плагин WordPress плохо закодирован и полон уязвимостей — далеко не так. Тем не менее, известные уязвимости открывают обширную поверхность для атаки на WordPress, о чем вы должны знать при проведении теста на проникновение WordPress.

Самый быстрый и, возможно, наиболее полный инструмент для снятия отпечатков уязвимых плагинов и тем WordPress — это использование WPScan. WPScan — это сканер безопасности WordPress с открытым исходным кодом, который часто используется для сканирования веб-сайтов WordPress на наличие известных уязвимостей в ядре, плагинах и темах.

При использовании WPScan во время пентеста обязательно зарегистрируйтесь и настройте его для использования ключа API базы данных уязвимостей WPScan . База данных уязвимостей WPScan — это поддерживаемая авторами WPScan база данных с последними известными уязвимостями и их соответствующими версиями.

Плагины отпечатков пальцев с WPScan

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

Старые версии PHP и веб-серверов

WordPress — это веб-приложение PHP, поэтому все передовые методы безопасности PHP применимы и к WordPress. Во время теста на проникновение WordPress это одна из первых вещей, на которые нужно обращать внимание. Установки WordPress со старыми версиями PHP или программного обеспечения веб-сервера (например, Nginx, Apache HTTP Server, IIS…) могут подвергать веб-сайт всевозможным атакам.

Очень легко определить, какой веб-сервер и версию PHP использует веб-сайт WordPress. Во многих случаях все, что нужно сделать злоумышленнику, — это просто обратить пристальное внимание на заголовки ответа HTTP, возвращаемые с веб-сайта. Вы можете отправить запрос самостоятельно с помощью curl:

$ curl -s -D — http://167.71.67.124/ -o /dev/null | grep -i «Сервер\|X-Powered-By»

Найдите в ответе HTTP-заголовки Server и X-Powered-By :

Сервер: Apache/2.4.29 (Ubuntu)
X-Powered-By: PHP/5.5.9

В зависимости от версии и конфигурации веб-сайта злоумышленник может использовать известные уязвимости (например, https://www.cvedetails.com/vendor/74/PHP.html) для получения дополнительной информации о цели. Такая информация может помочь в эскалации атаки или даже в выполнении команд непосредственно на веб-сервере.

Перечисление имени пользователя WordPress

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

Ниже приведен снимок экрана, на котором WPScan выполняет атаку перечислением имен пользователей WordPress.

Перечисление пользователей WPScan и взлом паролей

Неверные настройки веб-сервера

Список каталогов и другие неправильные настройки веб-сервера

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

Включенный список каталогов

Список каталогов — очень распространенная неверная конфигурация. На веб-серверах Apache это включено по умолчанию, и это не помогает. Список каталогов просто перечисляет файлы и каталоги на веб-сервере в графическом интерфейсе, когда нет индексного файла.

Список каталогов включен на веб-сервере Apache

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

Резервные файлы

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

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

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

Злоумышленник теперь может прочитать файл, просто запросив http://www.example.com/wp-config.php.bak . Злоумышленник может прочитать файл, потому что его расширение больше не .php. Таким образом, механизм PHP игнорирует его, и веб-сервер использует его как текстовый файл. Теперь злоумышленник знает учетные данные базы данных WordPress, секретные токены и любую другую конфиденциальную информацию о конфигурации, которую вы сохранили в этом файле.

Временные файлы

Подобно файлам резервных копий, временные файлы в неправильном месте могут раскрыть потенциально конфиденциальные данные. Еще раз возьмем wp-config.php в качестве примера. Если системному администратору пришлось отредактировать этот файл с помощью текстового редактора, и по какой-то причине программа завершилась некорректно, велика вероятность того, что редактор оставит временные файлы. Например, популярный редактор командной строки Vim хранит файлы резервных копий с расширением *.ext~ вместе с файлом *.ext.swp. Файлы swp используются в качестве файла блокировки. Они также содержат всю историю отмены/возврата и другую внутреннюю информацию, необходимую Vim.

Таким образом, в случае сбоя Vim оставляет после себя файл wp-config.php.ext~, который может быть доступен в виде простого текста, например файлов резервных копий, поскольку он не заканчивается расширением файла *.php. Временные файлы такого типа существуют не только в Vim — Emacs (другой популярный текстовый редактор с командной строкой) также сохраняет подобные временные файлы, как и множество других инструментов.

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

Открытый MySQL

Безусловно, одна из самых серьезных неправильных настроек, которую может сделать системный администратор, — это оставить свой сервер базы данных WordPress MySQL открытым для Интернета. Почему это может показаться сумасшедшим, это случается, вероятно, чаще, чем вы думаете. Ниже приведен скриншот из Shodan, поисковой системы для устройств, подключенных к Интернету.

Результаты в Shodan для серверов MySQL

Конечно, тот факт, что MySQL доступен через Интернет, не означает, что кто-то может подключиться к ней и получить доступ к базе данных WordPress. Однако, особенно в сочетании с другими атаками, такими как утечка пароля через резервную копию wp-config.php или подбор слабого пароля, это может привести к катастрофе.

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

Запуск ненужных служб

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

Инструменты пентестинга для тестеров на проникновение WordPress и специалистов по безопасности

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

Кали Линукс

Инструменты, которые человек использует, сильно различаются. Это зависит от личных предпочтений и решаемой проблемы. Тем не менее, для начала неплохо иметь в своем распоряжении множество предустановленных инструментов.

Кали Линукс

Kali Linux, ранее известная как BackTrack, — это дистрибутив Linux с открытым исходным кодом для тестирования на проникновение. Kali Linux поставляется в комплекте с целым рядом предустановленных и настроенных инструментов. Это полезно как для начинающих пользователей, желающих быстро начать работу, так и для опытных тестировщиков на проникновение. Kali Linux доступна бесплатно и может работать на виртуальной машине.

Nmap

Этот бесплатный сканер является одним из самых базовых и универсальных сканеров в арсенале любого пентестера. Nmap в первую очередь сканер портов. Однако его можно расширить, чтобы выполнять всевозможные виды сканирования с помощью языка сценариев NSE.

Сканер NMAP

WPScan

WPScan (рассмотренный ранее в этой статье) — это сканер безопасности WordPress с открытым исходным кодом. Он сканирует известные уязвимости WordPress — как в ядре WordPress, так и в плагинах и темах WordPress.

Сканер WPScan

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

ЗАП ОВАСП

OWASP Zed Attack Proxy (ZAP) — это бесплатный инструмент для тестирования на проникновение веб-приложений с открытым исходным кодом. Эти инструменты поддерживает проект Open Web Application Security Project (OWASP). OWASP ZAP разработан специально для тестирования веб-приложений на широкий спектр уязвимостей, таких как межсайтовый скриптинг (XSS) и SQL-инъекция (SQLi). ZAP по своей сути является прокси. Он находится между браузером пентестера и веб-сайтом для перехвата и проверки запросов, отправляемых между ними.

ZAP-сканер OWASP

Помимо работы в качестве прокси, ZAP также может автоматически тестировать различные уязвимости, а также может обрабатывать различные входные данные. Фаззинг — это метод тестирования безопасности, при котором в приложение передаются недопустимые или неожиданные входные данные с целью выявления уязвимостей безопасности.

Тестирование на проникновение для WordPress — оценка состояния безопасности вашего сайта.

Безопасность WordPress — это не одноразовое решение. Это непрерывный процесс, основанный на четырех принципах: усиление > мониторинг > тестирование > улучшение. При тестировании на проникновение вы обращаетесь к принципу тестирования . Т.е. вы проверяете состояние безопасности вашего сайта. Затем вы можете принять необходимые меры для улучшения настройки на основе ваших выводов.

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