Найти тему

Автоматизация сценария с уязвимостью CVE-2023-5360. Часть 2

Оглавление

В данной части статьи будут рассмотрены необходимые утилиты для автоматизации сценария с уязвимостью WordPress.

Для автоматизации необходимо использовать скрипты, написанные на различных языках программирования, в данной статье будут использоваться скрипты, написанные на bush. В скриптах будут использованы утилиты nmap, wpscan, nc, cron.

Что такое язык программирования Bash

Bash – Bourne-Again Shell, это популярный командный интерпретатор и язык командной строки в UNIX-подобных системах, который поддерживает различные функции, такие как массивы, циклы, функции, арифметические операторы, операции ввода-вывода и другие возможности. Основное преимущество BASH заключается в возможности создания скриптов для автоматизации повторяющихся задач. Unix - это операционная система, которая используется в дистрибутивах Linux, macOS и iOS. Она построена по принципу модульной структуры, где каждая функция выполняется отдельной программой. Shell используется для управления этими программами и выполнения командного кода. При вводе пользователем команды, shell интерпретирует их и вызывает соответствующие программы для отображения результатов. В bush скриптах как и в любых других языках для написания скриптов можно использовать переменные, функции, условия и циклы.

Что за утилита Nmap и для чего она нужна

-2

Nmap – это утилита с открытым исходным кодом, которая используется для исследования сети и проверки безопасности. Многие администраторы сетей находят ее полезной для инвентаризации сети, управления расписанием обновлений и мониторинга аптайма хостов и служб. Nmap использует сырые IP пакеты для определения доступных хостов, предлагаемых ими служб и запущенных операционных систем. Она была разработана для сканирования больших сетей, но работает также хорошо с отдельными хостами. Nmap является:

  • гибкой – возможность использования множества техник для составления сетевой карты, к ним относится множество механизмов сканирования портов TCP и UDP,определение ОС, определение версий, пинг зачисток и другое;
  • мощной – используется для сканирования сетей массивных размеров.
  • портативной – утилита поддерживается большинством операционных систем, включая Linux, Microsoft, Windows, FreeBSD и т.п;
  • простой – помимо того, что утилита nmap представляет большой набор функций для продвинутых пользователей, начать пользоваться утилитой может даже не подготовленный пользователь;
  • бесплатной – утилита доступна в свободном доступе с полным исходным кодом;
  • документированной – в сети находится множество актуальных мануалов;
  • поддерживаемой – nmap поддерживается большим сообществом пользователей;
  • популярной – утилиту качает большинство людей по всему миру, она находится в десятке программ в репозитории Freshmeat.Net.

Для чего используется WPScan и что он умеет

-3

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)

-4

Nc – это утилита, которую можно использовать для создания соединений между двумя (или более) машинами, использующими указанные порты. Одна машина прослушивает соединение, которое, по сути, открывает определенный порт, в то время как другая пытается подключиться к нему. Примеры использования netcat:

  • подключение к серверу - подключение к серверу с IP-адресом;
  • возможность общения в чате между двумя пользователями - Для этой цели нам нужны два устройства, одно инициирующее, например, компьютер Kali Linux, и одно прослушивающее, например, компьютер с Windows 10;
  • создание бэкдора - Вы можете создать бэкдор с помощью Netcat, чтобы вернуться к нему в любое время;
  • подробный режим - этот режим предоставляет обширную информацию, которая может быть запущена с помощью параметра –v;
  • сохранение выходных данных на рабочий стол - Сохраните выходные данные Netcat для ведения записей, лучшей читаемости и использования в будущем;
  • передача файлов - Netcat можно использовать для передачи файлов между двумя устройствами.

Планировщик задач в kali - Cron

-5

Cron – это планировщик заданий на основе времени, который работает в фоне системы. Задачи cron – это скрипты, которые автоматически переходят в работу через заданные промежутки времени для выполнения однотипных задач, таких как обновления, отправка данных куда-либо или в нашем случае обращение к файлу на сервере, и тому подобное. Crontab, является сокращением от Cron Table, представляет собой файл, содержащий расписание различных записей Cron, которые должны запускаться в указанное время.

Команды для утилиты следующие:

  • Crontab –e

Редактируется файл crontab или создается новый, при условии что он еще не существует.

  • Crontab –l

Выводит содержимое файла crontab для проверки созданных задач

  • Crontab –r

Удаляет текущие записи из файла crontab, могут удалиться как некоторые строки, так и весь файл

  • Crontab –i

Удаляется текущий файл crontab с помощью запроса перед удалением

  • Crontab –u + имя пользователя

Редактируется файл crontab для определенного пользователя. Для данной команды необходимы права sudo

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

Синтаксис команды 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.