BrunnerCTF : С WordPress в Roo... Заметка
DEV Community на русском

BrunnerCTF : С WordPress в Root Writeup

Задача включала развертывание Docker/Kubernetes со стандартной установкой WordPress 7.0.0 на PHP 8.2 / Apache, работающей на базовом образе Debian Trixie. Первоначальный доступ был получен через известный уязвимый плагин wp2shell, который предоставил оболочку www-data. Основной целью была эскалация привилегий, намеренно усложненная для типичных побегов из контейнеров и трюков с SUID, указывающая на недавнюю уязвимость sudo CVE.Разведка выявила Dockerfile с указанием конкретных версий, в частности gcc и libc6-dev, присутствующих в образе времени выполнения, что указывало на компиляцию на месте для эскалации привилегий. Наличие sudo сузило фокус до локальной ошибки sudo для получения root-прав. Файл docker-compose.yml раскрыл стандартные учетные данные базы данных WordPress.Скрипт docker/entrypoint.sh был решающим, поскольку он генерировал случайные учетные данные администратора WordPress при первой загрузке и экспортировал их в переменные среды контейнера, доступные дочерним процессам, таким как рабочие процессы Apache/PHP. Каталог тем, brunnerne-docs, был намеренно владельцем root, но доступен для чтения всем, что могло быть отвлекающим фактором для хуков, выполняемых от имени root.Первоначальный доступ использовал wp2shell-poc, общедоступную цепочку эксплойтов для WordPress 7.0.0, включающую CVE-2026-63030 (слепая SQL-инъекция без аутентификации) и CVE-2026-60137 (удаленное выполнение кода через загрузку плагина после восстановления учетных данных администратора). Это предоставило обратный шелл от имени www-data.Перечисление от имени www-data показало защищенную среду без необычных бинарных файлов SUID, возможностей или файлов, принадлежащих root и доступных для записи всем. Версия sudo 1.9.15p5 была определена как критически важная информация.Поиск учетных данных в /proc/*/environ выявил учетные данные администратора WordPress, но это не были системные учетные данные для sudo. Попытки использовать их или стандартные пароли с sudo не увенчались успехом.Эскалация привилегий была достигнута с использованием CVE-2025-32463, затрагивающей sudo от 1.9.14 до 1.9.17. Эта уязвимость позволяла любому локальному пользователю использовать опцию --chroot/-R для загрузки контролируемой злоумышленником общей библиотеки NSS из предоставленного им chroot, выполняя произвольный код от имени root без записи в sudoers или пароля.Эксплойт включал компиляцию вредоносного модуля NSS, который выдавал root-шелл, создание поддельного каталога chroot с пользовательским файлом nsswitch.conf, указывающим на этот модуль, а затем его активацию с помощью команды 'sudo -R woot woot'. Это успешно предоставило root-шелл, позволив получить доступ к флагу.Первопричиной была необезличенная SQL-инъекция в ядре WordPress, приведшая к удаленному выполнению кода для первоначального доступа, и уязвимость sudo 1.9.15p5 (CVE-2025-32463) для эскалации привилегий. Исправление включает обновление sudo до версии >= 1.9.17p1. Ключевые уроки включали раннюю проверку версий привилегированных бинарных файлов и распознавание подсказок, таких как наличие gcc/libc6-dev для компиляции на целевой системе.