
CraftCMS имеет уязвимость RCE через реляционные условия в панели управления
CVE-2026-31857 — это уязвимость удалённого выполнения кода в правилах реляционных условий Craft CMS. BaseElementSelectConditionRule::getElementIds() отображает контролируемый пользователем ввод как Twig-шаблон без песочницы. Аутентифицированный пользователь панели управления может отправить специально сформированное условие через конечную точку списка элементов и выполнить команды на сервере. Привилегии администратора не требуются.
Уязвимы Craft CMS 4.0.0-beta.1 — 4.17.3 и 5.0.0-RC1 — 5.9.8. В этом PoC используется формат запроса индекса элементов Craft 5.
Требуется Python 3 только со стандартной библиотекой. Укажите базовый URL и имя пользователя панели управления; скрипт запросит пароль:
python3 poc.py https://craft.example editor
Вводите команды в cmd> или введите exit для выхода. Текущий рабочий каталог сохраняется между командами. Чтобы запустить длительную команду, завершите её символом &; её ввод и вывод отсоединяются от HTTP-запроса, а её вывод отбрасывается. Вывод команды, возвращаемый через заголовок ответа, ограничен последними 1200 байтами.