Плагин Next-Cart Store to WooCommerce Migration для WordPress уязвим для обхода аутентификации во всех версиях до 3.9.8 включительно через функцию `NCWM_Kitconnect::run()`. Это связано с тем, что плагин регистрирует REST-маршрут `/wp-json/next_cart/v1/migration` с `permission_callback`, установленным в `__return_true`, и полагается на жестко закодированное резервное значение `__token__` в `get_option('nextcart_token', '__token__')`, когда опция `nextcart_token` еще не записана в база данных. Это позволяет неаутентифицированным злоумышленникам обойти аутентификацию конечной точки миграции, указав литеральную строку `__token__` в качестве токена, получив доступ к привилегированным обработчикам, которые передают контролируемый злоумышленником SQL напрямую в `$wpdb->query()` и `$wpdb->get_results()` (что позволяет выполнить произвольный SQL-код, включая создание учетной записи администратора), и передать контролируемый злоумышленником путь в `unlink()`, позволяя удалить произвольный файл. и полный захват сайта.
Жестко закодированный резервный вариант доступен, если опция `nextcart_token` еще не заполнена, что происходит после активации WP-CLI, сети или программного плагина без последующего аутентифицированного посещения `wp-admin`, поскольку генерация токена откладывается до `admin_init` через `register_settings()`.
Показать оригинальное описание (EN)
The Next-Cart Store to WooCommerce Migration plugin for WordPress is vulnerable to Authentication Bypass in all versions up to, and including, 3.9.8 via the `NCWM_Kitconnect::run()` function. This is due to the plugin registering the `/wp-json/next_cart/v1/migration` REST route with `permission_callback` set to `__return_true` and relying on a hardcoded fallback value of `__token__` in `get_option('nextcart_token', '__token__')` when the `nextcart_token` option has not yet been written to the database. This makes it possible for unauthenticated attackers to bypass authentication to the migration endpoint by supplying the literal string `__token__` as the token, gaining access to privileged handlers that pass attacker-controlled SQL directly to `$wpdb->query()` and `$wpdb->get_results()` — enabling arbitrary SQL execution including administrator account creation — and pass an attacker-controlled path to `unlink()`, enabling arbitrary file deletion and full site takeover. The hardcoded fallback is reachable whenever the `nextcart_token` option has not yet been populated, which occurs after WP-CLI, network, or programmatic plugin activation without a subsequent authenticated `wp-admin` visit, as token generation is deferred to `admin_init` via `register_settings()`.
Характеристики атаки
Последствия
Строка CVSS v3.1