Плагин Pinpoint Booking System — версия 2 для WordPress уязвим к манипулированию ценами через параметр «cart_data» во всех версиях до 2.9.9.6.8 включительно. Это связано с тем, что действие AJAX `dopbsp_woocommerce_add_to_cart` регистрируется через `wp_ajax_nopriv_*` без аутентификации, без проверки nonce и без перерасчета цен на стороне сервера — обработчик `update` считывает `price_total` непосредственно из управляемого злоумышленником POST-параметра `cart_data` и сохраняет его в базе данных через `$wpdb->insert()` без проверки. это по сравнению с настроенной ценой календаря. Обратный вызов woocommerce_before_calculate_totals впоследствии считывает сохраненное значение, предоставленное злоумышленником, обратно из базы данных и передает его непосредственно в $product->set_price() без повторных вычислений из настроек календаря.
Это позволяет неаутентифицированным злоумышленникам переопределить цену оформления заказа WooCommerce любого продукта, доступного для бронирования, привязанного к календарю бронирования, на произвольное значение, что фактически позволяет покупать любой такой продукт по самостоятельно выбранной цене.
Показать оригинальное описание (EN)
The Pinpoint Booking System – Version 2 plugin for WordPress is vulnerable to Price Manipulation via the `cart_data` parameter in all versions up to, and including, 2.9.9.6.8. This is due to the `dopbsp_woocommerce_add_to_cart` AJAX action being registered via `wp_ajax_nopriv_*` with no authentication, no nonce verification, and no server-side recalculation of pricing — the `update` handler reads `price_total` directly from the attacker-controlled `cart_data` POST parameter and persists it to the database via `$wpdb->insert()` without validating it against the calendar's configured pricing. The `woocommerce_before_calculate_totals` callback subsequently reads the stored attacker-supplied value back from the database and passes it directly to `$product->set_price()` without recomputing from calendar settings. This makes it possible for unauthenticated attackers to override the WooCommerce checkout price of any bookable product tied to a booking calendar to an arbitrary value, effectively enabling the purchase of any such product at a self-chosen price.
Характеристики атаки
Последствия
Строка CVSS v3.1