Плагин Booking System Trafft для WordPress уязвим к хранимому межсайтовому сценарию через настройку bookingWebsiteUrl во всех версиях до 1.0.17 включительно из-за отсутствия проверки возможности действия AJAX `set_options`, когда плагин работает в режиме агентства. Обработчик `trafftSetOptions()` проверяет nonce, который доступен любому аутентифицированному пользователю (он печатается на каждой странице администратора, включая Profile.php), но не выполняет проверку возможностей перед вызовом `update_option('trafft_option', ['bookingWebsiteUrl' => ...])`. Затем этот параметр используется `trafftAdminAssets()` для постановки в очередь `<bookingWebsiteUrl>/embed.js` в качестве сценария на каждой внешней странице, которая отображает короткий код бронирования.
Это позволяет злоумышленникам, прошедшим проверку подлинности, с доступом на уровне подписчика и выше, указать URL-адрес сценария внедрения на источник, контролируемый злоумышленником, и выполнить произвольный JavaScript в браузере каждого посетителя сайта (включая администраторов).
Показать оригинальное описание (EN)
The Booking System Trafft plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the `bookingWebsiteUrl` setting in all versions up to, and including, 1.0.17 due to a missing capability check on the `set_options` AJAX action when the plugin is operating in agency mode. The `trafftSetOptions()` handler verifies a nonce that is exposed to any authenticated user (it is printed inline on every admin page, including profile.php) but performs no capability check before calling `update_option('trafft_option', ['bookingWebsiteUrl' => ...])`. This setting is then used by `trafftAdminAssets()` to enqueue `<bookingWebsiteUrl>/embed.js` as a script on every front-end page that renders the booking shortcode. This makes it possible for authenticated attackers, with Subscriber-level access and above, to point the embed-script URL at an attacker-controlled origin and execute arbitrary JavaScript in the browser of every site visitor (including admins).
Характеристики атаки
Последствия
Строка CVSS v3.1