Были опубликованы технические подробности и код подтверждения концепции новой уязвимости в ядре WordPress, которую исследователи назвали Click2Shell. Она позволяет удалённо выполнять PHP-код на сервере без непосредственной аутентификации атакующего. WordPress устранила уязвимость в версии 7.1.1, выпущенной на прошлой неделе, однако публикация экспериментального эксплойта делает обновление затронутых сайтов ещё более срочным.
Как работает цепочка?
Исследователь Paulos Yibelo с платформы тестирования на проникновение pwn.ai обнаружил уязвимость и сообщил о ней WordPress 22 августа. Согласно отчёту, значение, полученное из ссылки предварительного просмотра темы, один раз интерпретируется через API Themes в WordPress.org, а затем небезопасно обрабатывается JavaScript в браузере администратора.
Это позволяет добавить тему из официального каталога на сайт без явной установки её администратором. Даже если тема неактивна, содержащийся в ней PHP-код может выполняться во время её предварительного просмотра в инструменте Customizer. Для завершения атаки злоумышленник отправляет специально созданную ссылку, однако её должен посетить вошедший в систему администратор сайта.
Что может произойти после эксплуатации?
Исследователи использовали уязвимую тему как вторую часть цепочки для выполнения PHP-кода, заданного атакующим. В полном отчёте указывается возможность выполнения команд на сервере, включая изменение или удаление файлов, а также доступ к данным пользователей и файлу wp-config.php, содержащему учётные данные базы данных и секреты аутентификации.
Это может позволить создавать вредоносные учётные записи администраторов или внедрять вредоносные скрипты на сайт. Кроме того, основная уязвимость в WordPress Core 7.1.0 и более ранних версиях, согласно исследователю, может использоваться для принудительной установки на сайт любой другой уязвимой темы, присутствующей в каталоге WordPress.org.
Какие права необходимы?
Атакующему не нужны учётная запись WordPress, nonce-токен для установки или собственные специальные административные права. Однако цепочка Click2Shell не работает после одной лишь отправки запроса: требуется взаимодействие вошедшего в систему администратора со ссылкой. Компания по безопасности WordPress Patchstack сообщила, что учётные записи Author и Editor не обладают необходимыми правами для установки тем.
Ссылка может попасть к администратору посредством целевого фишинга или через уже существующую уязвимость XSS, которая заставит его браузер отправить запрос. Поэтому требование взаимодействия администратора не устраняет опасность уязвимости, но определяет сценарий атаки и означает, что она не является полностью автоматизированной удалённой эксплуатацией.
Что меняется на практике?
WordPress исправила проблему, экранировав имя темы перед его использованием в селекторе jQuery и ограничив селектор фактическими карточками тем. Patchstack рекомендует обновиться до версии 7.1.1 или более новой, особенно после публикации полного описания и кода подтверждения концепции.
Для сайтов, которые невозможно немедленно обновить, Patchstack указывает, что включение настройки DISALLOW_FILE_MODS не позволяет принудительно установить тему или вредоносный плагин. Это остаётся временной мерой снижения риска, а не заменой обновлению ядра WordPress и проверке любых неожиданных изменений или административных учётных записей.