Плагин WP Event Solution (Eventin) для WordPress уязвим к отсутствию авторизации в версиях до 4.1.22 включительно через обработчик create_item() для конечной точки REST /wp-json/eventin/v2/orders. Функция create_item_permissions_check() конечной точки проверяет только nonce wp_rest (который передается каждому посетителю через localized_data_obj скрипта etn-public на каждой странице внешнего интерфейса) и принимает предоставленное пользователем значение «статуса» в prepre_item_for_database() без проверки белого списка. Это позволяет неаутентифицированным злоумышленникам создавать сообщения etn-order со status='completed', которые будут считаться проданными функцией etn_get_sold_tickets_by_event(); поскольку автоматическая очистка wp_schedule_single_event() в create_item() срабатывает только для ордеров status='pending', поддельные завершенные заказы сохраняются неопределенно долго и исчерпывают запас билетов.
Показать оригинальное описание (EN)
The WP Event Solution (Eventin) plugin for WordPress is vulnerable to Missing Authorization in versions up to, and including, 4.1.22 via the create_item() handler for the /wp-json/eventin/v2/orders REST endpoint. The endpoint's create_item_permissions_check() function only verifies a wp_rest nonce (which is leaked to every visitor through the etn-public script's localized_data_obj on every frontend page) and accepts a user-supplied 'status' value in prepare_item_for_database() with no whitelist validation. This makes it possible for unauthenticated attackers to create etn-order posts with status='completed' that are counted as sold by etn_get_sold_tickets_by_event(); because the auto-cleanup wp_schedule_single_event() in create_item() only fires for status='pending' orders, the forged completed orders persist indefinitely and exhaust ticket inventory.
Характеристики атаки
Последствия
Строка CVSS v3.1