(metasploit framework, WPScan и plecost в terminator, как пример организации рабочего места начинающего пентестера)
Содержание:
- установка Apache, БД, CMS WordPress на локальный хост + альтернативный вариант для ленивых
- первоначальная настройка, обзор возможностей админ-панели
- выявление природы основной массы уязвимостей
- downgrade нашего сайта до уязвимой версии
- первый скан с помощью WPScan, заключение
Итак, я предусмотрел 3 статьи (лекции), в которых будут рассмотрены следующие темы:
- Установка и подготовка CMS WordPress для нужд начинающего пентестера
- Перечисление, уязвимости, эксплуатация
- Защита - основные методы.
Установка Wordpress + LAMP на локальную машину
Приступим. Чтобы установить CMS WordPress на хост, нам необходимо подготовиться. Для работы WordPress требуется веб-сервер, база данных, к которой будет обращаться наш сайт, а так же установленный PHP, без него никак, ведь WordPress на нём написан.
Установку и настройку я буду проводить на Debian 9.9.0, работающем в виртуальной машине. Установка будет аналогична на всех Debian-based дистрибутивах, включая kali и Parrot OS.
Шаг первый – установка пакетов
Код:
sudo apt update
sudo apt install wordpress curl apache2 mariadb-server iputils-ping
Сразу после установки рекомендую добавить веб-сервер в автозагрузку и проверить его работоспособность. Убедиться в корректной инсталляции можно просто открыв браузер и перейдя по адресу localhost. Увидели дефолтную страницу Apache2 - убедились в корректной установке.
Произведем настройку базы данных. Пишем в терминал команду:
Код:
mysql_secure_installation
После первоначальной настройки базы данных, я рекомендую Вам воспользоваться скриптом-помощником, поставляемым в комплекте с пакетом WordPress.
Выполним следующие команды:
Код:
gzip -d /usr/share/doc/wordpress/examples/setup-mysql.gz
chmod +x /usr/share/doc/wordpress/examples/setup-mysql
После распаковки и установки разрешения на исполнние файла, запускаем сам скрипт:
Код:
/usr/share/doc/wordpress/examples/setup-mysql localhost
/usr/share/doc/wordpress/examples/
, вам нужно лишь скопировать, например первый пример из файла apache.conf
в файл localhost.conf
и поместить последний в папку/etc/apache2/sites-available/
.И наконец, мы максимально близко подошли к запуску собственного “хомячка для пыток”. Для того, чтобы наш сайт начал работать, нужно выключить дефолтный 000-default и активировать наш localhost. Пишем в терминал:Примечание: в файле apache.conf указано, какие действия нужно выполнять при использование примеров. Например, при использовании первого примера из файла, в терминале нужно будет выполнить пару команд. Будь внимателен в настройке!
Код:
a2dissite 000-default
a2ensite localhost
systemctl restart apache2
WordPress после успешной установки предложит нам ввести имя администратора, пароль и e-mail. Заполняем всё это, для еще большего обучающего эффекта ставим словарный пароль (в цикле статей отработаем брутфорс админки и способы защиты от такой атаки). Итак, введя пару на подобии admin:wpadmin,проходим авторизацию и попадаем в панель управления нашим сайтом. Сразу скажу – WordPress создавался и задумывался как CMS для блогов и новостных сайтов, поэтому не удивляйтесь “блоггерской” тематике разделов в админ-панели. Первый блок возможностей нас не интересует – оставим записи, комментарии и медиафайлы(пока что) контент-мейкерам.
Самый большой интерес для нас представляют плагины и встроенный редактор шаблонов оформления. В функционале раздела плагинов так же имеется редактор, но о нём попозже.
Для тех, у кого не вышло, или есть мотивированное желание не давать WordPress’у FTP доступ, я приготовил следующую рекомендацию. В файлОбязательно переходим в разделВнешний вид- Темы – Добавить новую
и устанавливаем любую приглянувшуюся. В момент, когда вы нажмете на кнопку “установить” WordPress попросит вас дать пару логин:пароль для FTP доступа к файлам на сервере. С этим я настоятельно рекомендую разобраться самостоятельно, всё очень просто.
wp-config.php
в корневой директории сайта мы допишем строку:
Код:
define('FS_METHOD','direct');
Таким образом, давать FTP доступ нам не придется.
После того, как вы настроили доступ к файловой системе и установили тему оформления, можно считать, что установка прошла успешно и теперь можно готовиться к настройке именно нашей пентест-лаборатории.Внимание! В подавляющем большинстве случаев настройки WP на локальном хосте, возникают проблемы, связанные с тем, что на папки и файлы установлены некорректные для работы WP разрешения. С этой проблемой, в случае её возникновения, тоже предалгаю разобраться самостоятельно, ведь права в Linux – основа, без знания которой в дальнейшей работе придется очень тяжело.
Альтернативная быстрая установка на хостинг с демо-периодом
Вы можете воспользоваться любым хостингом, предлагающем демо-период на хостинг сайтов. Есть совсем уж примитивный вариант, когда вы буквально нажимаете пару кнопок и всё, ваш сайт готов. В ситуации, когда по какой-либо причине вы не хотите устанавливать веб-сервер и WordPress на свою машину, я предлагаю вам следующее:
- ищем хостинг с тестовым периодом
- регистрируемся
- запускаем сайт на CMS WordPress
Прошу учесть, что FTP-доступа на большинстве хостингов вам выдано не будет(пока не заплатите денежку,конечно же), поэтому для работы с файлами рекомендую установить в самом WordPress плагин для работы с файловой системой. WP File Manager полностью удовлетворит наши потребности.
Имитируем уязвимости, выделяем причины
Причина большинства уязвимостей, с которыми можно встретиться в реальной жизни – невнимательность кодера, написавшего какой-либо плагин для WordPress. Это случается часто, почти регулярно, так что не удивляйтесь, когда новая CVE будет применена к вашему ресурсу и эксплуатировать она будет уязвимость в коде вашего любимого SEO-плагина, который вы не удосужились обновить до последней версии.
В целом же, обновившись до последней версии CMS, вы будете застрахованы от абсолютного большинства массовых атак, бояться стоит точечной работы недоброжелателя по вашему сайту, поэтому мы и будем имитировать действия злоумышленника по принципу “от простого – к сложному”.
Настало время подготовить наш сайт, наполнить его уязвимостями, которые мы будем устранять в последствии. Акцентирую ваше внимание на том, что мы рассматриваем приближенные к реальности случаи, в которых “дыры” остаются не закрытыми, поэтому смоделируем реальную ситуацию, часто встречающуюся у заказчиков.
Первое, и пожалуй самое важное – неактуальная версия WordPress. Объясню, почему очень часто у заказчиков не установлено последнее актуальное обновление. Дело в том, что в условиях тотальной экономии на всем, на чем только можно, при заказе сайта на бирже фриланаса, заказчик зачастую просто забывает о том, что некоторым приватным решениям, будь то специальный плагин или особо-хитрое оформление меню,зависящее от приблизительного местоположения клиента, требуется поддержка. Такой сервис, разумеется, стоит денег. Так вот, после исполнения заказа, убедившись в работоспособности приватного решения, разработчик или человек, занимающийся администрированием сайта, либо не включает автообновление, либо обновившись, сталкивается с проблемами в работе этих самых решений, в условиях той же экономии, дабы не тратить деньги, просто откатывается до последнего бэкапа и спокойно “забивает” на обновления.
Второстепенной особенностью загадочной души заказчика, зачастую является установка словарных паролей на все, что только можно (мы в процессе настройки уже установили такой).
Третьими по счёту идут уязвимые плагины, до обновления которых тоже “руки не дошли”, несколько таких уязвимостей мы будем имитировать в следующей статье.
Четвертое, и пожалуй самое противное, что может вам встретиться – некорректно выставленные права доступа на файлы и папки. Вместе с этой проблемой выделю так же те самые пресловутые “приватные решения за дешево”, несущие в себе зачастую XSS-уязвимости. В особо тяжелых случаях приходится сталкиваться с инъекциями в базу данных.
DOWNGRADE!
Итак, приступим. Даунгрейд версии CMS WordPress мы будем производить с помощью плагина с названием WP Downgrade | Specific Core Version.
Переходим в
Плагины-Добавить новый
, пишем в строку поиска “WP Downgrade”. Устанавливаем, активируем. Плагин будет добавлен к меню “Настройки”. Переходим к даунгрейду версии. В поле WordPress Target Version мы вписываем версию, до которой хотим откатиться. Рекомендую откатывать версию до 4.7.1 (встречается часто). Сохраняем изменения, после переходим к “обновлению”, после чего проверяем версию WordPress, она в админ-панели указана в правом нижнем углу экрана. Если видим там заветные цифры “4.7.1”, то это значит, что мы готовы приступать к первому сканированию и разбору результатов(домашнее задание).WPSCAN
Первое сканирование. В нашем случае – самое простое. Для сканирования на уязвимости нам понадобится WPScan. Установить вы его можете отсюда:
wpscanteam/wpscan
Рекомендую ознакомиться с функционалом сразу, чтобы в последующей практике не возникало вопросов.
По причине того, что статья пишется для людей, которые уже знакомы с Linux, не буду приводить примеры команд для сканера, в нашем случае вам хватит прсото запуска сканера с заданным параметром –url. Сканирование происходит некоторое время, на устаревших машинах процесс может занимать до 7 минут.
Первое сканирование и заключение
Без установленных плагинов, несущих в себе уязвимость, WPScan выдал в отчете следующую информацию:
Код:
[!] 44 vulnerabilities identified:
(тут перечисление всех найденных уязвимостей)
Засим откланяюсь, обещая вернуться в скором времени. Вторая статья из предусмотренного цикла почти готова, в ней я буду акцентировать внимание на сканировании и эксплуатации, так что полезной информации будет еще вагон и маленькая тележка. На все возникающие у читателей вопросы буду отвечать по возможности, но я уверяю вас – все ответы уже есть в интернете, нужно просто хорошо поискать. Моя задача – заложить в голову читателя необходимую базу, которая позволит расширить спектр возможностей и умений начинающего пентестера.
Прошу читателей выразить мнение, по поводу дальнейших статей. Интересует меня следующее - стоит ли приводить готовые примеры команд для эксплуатации уязвимостей? Давать прямые ссылки на эксплойты или нет? Не будет ли это "вредно" аудитории, которая не всегда оказывается вдумчивой и идет ломать все, что под руку попадется?
Последнее редактирование: