В данной части статьи будут рассмотрены необходимые утилиты для автоматизации сценария с уязвимостью WordPress.
Для автоматизации необходимо использовать скрипты, написанные на различных языках программирования, в данной статье будут использоваться скрипты, написанные на bush. В скриптах будут использованы утилиты nmap, wpscan, nc, cron.
Что такое язык программирования Bash
Bash – Bourne-Again Shell, это популярный командный интерпретатор и язык командной строки в UNIX-подобных системах, который поддерживает различные функции, такие как массивы, циклы, функции, арифметические операторы, операции ввода-вывода и другие возможности. Основное преимущество BASH заключается в возможности создания скриптов для автоматизации повторяющихся задач. Unix - это операционная система, которая используется в дистрибутивах Linux, macOS и iOS. Она построена по принципу модульной структуры, где каждая функция выполняется отдельной программой. Shell используется для управления этими программами и выполнения командного кода. При вводе пользователем команды, shell интерпретирует их и вызывает соответствующие программы для отображения результатов. В bush скриптах как и в любых других языках для написания скриптов можно использовать переменные, функции, условия и циклы.
Что за утилита Nmap и для чего она нужна
Nmap – это утилита с открытым исходным кодом, которая используется для исследования сети и проверки безопасности. Многие администраторы сетей находят ее полезной для инвентаризации сети, управления расписанием обновлений и мониторинга аптайма хостов и служб. Nmap использует сырые IP пакеты для определения доступных хостов, предлагаемых ими служб и запущенных операционных систем. Она была разработана для сканирования больших сетей, но работает также хорошо с отдельными хостами. Nmap является:
- гибкой – возможность использования множества техник для составления сетевой карты, к ним относится множество механизмов сканирования портов TCP и UDP,определение ОС, определение версий, пинг зачисток и другое;
- мощной – используется для сканирования сетей массивных размеров.
- портативной – утилита поддерживается большинством операционных систем, включая Linux, Microsoft, Windows, FreeBSD и т.п;
- простой – помимо того, что утилита nmap представляет большой набор функций для продвинутых пользователей, начать пользоваться утилитой может даже не подготовленный пользователь;
- бесплатной – утилита доступна в свободном доступе с полным исходным кодом;
- документированной – в сети находится множество актуальных мануалов;
- поддерживаемой – nmap поддерживается большим сообществом пользователей;
- популярной – утилиту качает большинство людей по всему миру, она находится в десятке программ в репозитории Freshmeat.Net.
Для чего используется WPScan и что он умеет
Wpscan – это сканер безопасности, предназначенный для тестирования безопасности веб-сайтов, созданных с использованием WordPress. WPScan был разработан с использованием языка программирования Ruby. Сканер безопасности WPScan в первую очередь предназначен для использования администраторами WordPress и командами безопасности для оценки состояния безопасности установок WordPress. Он используется для сканирования веб-сайтов WordPress на наличие известных уязвимостей как в WordPress, так и в часто используемых плагинах и темах WordPress.
WPScan обладает мощным набором функций, который включает:
- определение установленной версии WordPress и выявление всех связанных с ней уязвимостей - Wpscan сканирует установленную версию WordPress на сайте и ищет известные уязвимости, связанные с этой конкретной версией;
- поиск установленных плагинов и выявление уязвимостей, связанных с ними - Wpscan также сканирует все установленные плагины на сайте и проверяет их на наличие известных уязвимостей, которые могут быть использованы злоумышленниками для взлома сайта;
- поиск установленных тем и выявление уязвимостей, связанных с ними - аналогично с темами, wpscan сканирует все установленные темы на сайте и проверяет их на наличие уязвимостей, что помогает выявить потенциальные угрозы безопасности;
- перечисление имен пользователей на сайте - Wpscan может перечислить имена пользователей, зарегистрированных на сайте, что помогает злоумышленникам в их попытках взлома;
- поиск пользователей с слабыми паролями путем перебора - используя словари, wpscan может пытаться перебирать и проверять пароли пользователей на сайте, чтобы выявить слабые пароли, которые могут быть легко взломаны;
- поиск резервных копий и общедоступных файлов wp-config.php - Wpscan ищет наличие резервных копий файлов и конфигурации wp-config.php, которые могут служить ценной информацией для злоумышленников;
- поиск дампов базы данных, которые могут быть общедоступными - Wpscan ищет дампы баз данных, которые могут быть обнаружены и использованы злоумышленниками для доступа к конфиденциальной информации;
- проверка, предоставляют ли плагины доступ к журналам ошибок;
- перечисление медиафайлов на сайте - Wpscan может перечислить все медиафайлы (изображения, видео и т. д.), размещенные на сайте;
- поиск уязвимых файлов Timthumb - Timthumb - это библиотека для обработки изображений в WordPress, и wpscan может искать уязвимости, связанные с этой библиотекой;
- поиск полных путей, которые могут быть раскрыты - В процессе сканирования wpscan может искать полные пути к файлам и каталогам на сайте, что может помочь злоумышленникам найти уязвимости;
- загрузка списка каталогов на сайте - Wpscan может загрузить список каталогов на сайте, обнаруживая возможные уязвимости в структуре сайта.
Немного про Netcat (Nc)
Nc – это утилита, которую можно использовать для создания соединений между двумя (или более) машинами, использующими указанные порты. Одна машина прослушивает соединение, которое, по сути, открывает определенный порт, в то время как другая пытается подключиться к нему. Примеры использования netcat:
- подключение к серверу - подключение к серверу с IP-адресом;
- возможность общения в чате между двумя пользователями - Для этой цели нам нужны два устройства, одно инициирующее, например, компьютер Kali Linux, и одно прослушивающее, например, компьютер с Windows 10;
- создание бэкдора - Вы можете создать бэкдор с помощью Netcat, чтобы вернуться к нему в любое время;
- подробный режим - этот режим предоставляет обширную информацию, которая может быть запущена с помощью параметра –v;
- сохранение выходных данных на рабочий стол - Сохраните выходные данные Netcat для ведения записей, лучшей читаемости и использования в будущем;
- передача файлов - Netcat можно использовать для передачи файлов между двумя устройствами.
Планировщик задач в kali - Cron
Cron – это планировщик заданий на основе времени, который работает в фоне системы. Задачи cron – это скрипты, которые автоматически переходят в работу через заданные промежутки времени для выполнения однотипных задач, таких как обновления, отправка данных куда-либо или в нашем случае обращение к файлу на сервере, и тому подобное. Crontab, является сокращением от Cron Table, представляет собой файл, содержащий расписание различных записей Cron, которые должны запускаться в указанное время.
Команды для утилиты следующие:
- Crontab –e
Редактируется файл crontab или создается новый, при условии что он еще не существует.
- Crontab –l
Выводит содержимое файла crontab для проверки созданных задач
- Crontab –r
Удаляет текущие записи из файла crontab, могут удалиться как некоторые строки, так и весь файл
- Crontab –i
Удаляется текущий файл crontab с помощью запроса перед удалением
- Crontab –u + имя пользователя
Редактируется файл crontab для определенного пользователя. Для данной команды необходимы права sudo
Синтаксис утилиты crontab довольно простой в понимании. В каждой строке файла crontab стоит шесть полей, разделенных пробелом, после которых должна быть записана команда на выполнение. Каждое поле отвечает за минуты, часы, дней в месяц, месяц, дней в неделю и сама команда.
А что по самому сценарию ?
Ранее мы рассмотрели необходимые нам утилиты, я рассказал вам общее понятие данных утилит, чтобы вы понимали как они работают. Для ознакомления с данными утилитами более подробно, рекомендуется посетить официальный сайт каждой утилиты. Или в терминале Kali linux прописать следующую команду, которая выведет вам все необходимые подсказки.
- название утилиты --help
Итак, приступим к рассмотрению нашего сценария. Наш сценарий будет заключаться в следующих шагах злоумышленника:
- Сбор информации по установленным плагинам
- Обнаружение плагина Royal Elementor Addons and Templates
- Эксплуатация уязвимости
- Загрузка Web-shell'a
- Закрепление в сети используя cron
- Изменение публикации на сайте WordPress
В практической части статьи будут написаны скрипты для проведения атаки и проверки устранения критических уязвимостей, которые позволяют злоумышленникам получать revers_shell на WordPress. Для проведения атаки будут реализованы следующие шаги:
- запуск утилиты для сканирования сети nmap, которая будет проводить поиск сервисов с целью обнаружения WordPress. Так как выбранная CVE напрямую связана с WordPress, необходимо чтобы данный сервис находился на нашей цели;
- активация скрипта написанного на python, который проводит необходимые запросы на сервис с целью загрузки вредоносного php файла в каталог /upload/, для последующего получения revers_shell;
- запуск утилиты netcat для прослушивания порта 4444 и обращения к загруженному php файлу для активации процедуры подключения к shell-у;
- изменение файла wp-config.php для закрепления в системе. Изменение файла будет происходить с добавлением определенных строк, которые позволяют использовать переменную для выполнения различных команд. Изначальное значение переменной является команда подключения к 4444 порту, что позволяет обратиться к сайту через команду curl и сразу получить shell. Данное решение так же позволяет обойти зависание сайта при получении обратной оболочки, из-за того что все задачи происходят асинхронно;
- изменение страниц сайта, для отображения своей информации на странице. Изменения контента происходит так же изменением файлов конфигурации WordPress, который при отображении страницы обращается к php файлам с контентом злоумышленника.
Так же я напишу простенький скрипт для проверки на устранение уязвимости, который будет выполнять следующие шаги:
- перед началом атаки, вычисляется hash-сумма конфигурационных файлов WordPress. Данные суммы необходимы для последующего сравнения с исправленными конфигурациями, так как при атаке, злоумышленник вносит изменения в них, специалист должен найти не легитимный код и устранить его.
- устранения других уязвимостей связаны с самим плагином Royal Elementor Addons and Templates. Данный плагин можно обновить до версии выше, что может закрыть CVE. В скрипте прописываются строчки, которые заполняют свой контейнер уязвимыми версиями, и сравнивают их с той, которая прописана в файле readme.txt в каталоге плагинов. Так же проверку на используемую версию плагина можно провести, используя утилиту Wpscan, так как она выводит версии установленных плагинов;
- · плагины в WordPressудобно сделаны, из-за того что их можно быстро включить/выключить/удалить. Устранение CVE также можно провести, отключив данный плагин, тем самым у злоумышленника не будет работать pythonскрипт, который загружает phpфайл в каталог wordpress/upload/. Проверка на активные плагины WordPress происходят при помощи утилиты Wpscan, но для корректной работы данной утилиты, необходимо каждый раз очищать кэш утилиты. Wpscanдля быстрой работы сохраняет сведения о просканированном сервисе в кэш, из-за этого при повторном сканировании, скрипт может отработать не корректно и посчитать плагин активным.
На данном этапе теоретическая часть статьи завершена, в третьей части я буду наглядно показывать как выполняется эксплуатация данной уязвимости, напишу скрипты по автоматизации моих действий, а так же напишу маленький скрипт на проверку устранения слабостей в системе по отношению к данной CVE.