Авторизованный администратор WordPress рискует неожиданно установить произвольную тему, если откроет специально подготовленную ссылку. Версия 7.1.1, выпущенная 17 сентября, закрывает ошибку в ядре CMS. Компания pwn.ai продемонстрировала, что при сочетании с отдельной уязвимостью в теме эта цепочка доходит до выполнения PHP-кода на сервере.
Основная уязвимость — принудительная установка темы из официального каталога WordPress.org. Сервер и браузер по-разному обрабатывают параметр theme в URL. API каталога нормализует значение, получая обычное имя темы. А JavaScript панели администратора сохраняет исходные символы и помещает строку в jQuery-селектор. Специальные символы позволяют изменить селектор так, что штатный код сам нажимает кнопку Install.
Администратор не подтверждает установку. Активная сессия содержит право install_themes и защитный nonce, браузер передаёт WordPress всё необходимое от имени пользователя. Атакующему не нужна учётная запись на сайте — требуется только авторизованный администратор, открывший подготовленную ссылку.
Установленная тема остаётся неактивной, поэтому внешний вид сайта не меняется. Но WordPress при предварительном просмотре через Customizer загружает PHP-код ещё не активированной темы. Этот механизм превращает скрытую установку в основу для дальнейшей атаки.
pwn.ai использовала тему Mobile Repair Zone 2.5.4 для демонстрации. В ней работал AJAX-обработчик, принимавший адрес пакета плагина, скачивавший архив и подключавший PHP-файл без проверки nonce. После принудительной установки темы Customizer загружал её код, второй запрос позволял выполнить выбранный атакующим PHP под учётной записью веб-сервера.
Полная цепочка давала доступ к wp-config.php и учётным данным базы, данным плагинов и WooCommerce, позволяла менять пользователей и контент, читать секреты PHP-процесса и править файлы приложения. pwn.ai подчеркивает, что это тестовая демонстрация, а не подтверждённая кампания атак.
WordPress исправила сам источник проблемы в JavaScript установщика тем. Код теперь ограничивает поиск карточкой div.theme и экранирует имя темы через escapeSelector(). Кавычки, комбинаторы и другие управляющие символы больше не меняют структуру CSS-селектора.
WordPress 7.1.1 включает 11 исправлений безопасности. Проект рекомендует обновить сайты немедленно. Для поддерживаемых старых веток выпущены отдельные версии вплоть до линии 4.7. На сайтах с автоматическими фоновыми обновлениями установка запускается автоматически, но версию стоит проверить вручную.
pwn.ai сообщила об ошибке 22 августа, передала полную цепочку 1 сентября, раскрыла детали 18 сентября после выхода исправления. CVE и итоговая оценка серьёзности WordPress на момент публикации не назначены. В открытых источниках публичных данных об использовании Click2Shell в реальных атаках нет.
Уязвимость продолжает серию находок в ядре WordPress. В августе pwn.ai показала XSS2Shell, где ошибка на странице входа приводила к запуску PHP-кода. Click2Shell использует другой механизм и требует авторизованного администратора, открывшего подготовленный ресурс во время активной сессии.
Владельцам сайтов рекомендуют установить WordPress 7.1.1 либо соответствующий выпуск для используемой ветки и убедиться, что обновление применилось. Это закрывает ошибку в ядре независимо от установленной темы.
