
CVE-2025-22352 का PoC
वर्डप्रेस प्लगइन
घटक का नाम ELEX WooCommerce Advanced Bulk Edit Products, Prices & Attributes
कमजोर संस्करण <= 1.4.8
घटक स्लग elex-bulk-edit-products-prices-attributes-for-woocommerce-basic
घटक लिंक https://wordpress.org/plugins/elex-bulk-edit-products-prices-attributes-for-woocommerce-basic/
कमजोरी वर्ग A3: इंजेक्शन
कमजोरी प्रकार SQL इंजेक्शन (ब्लाइंड SQL इंजेक्शन)
दुकान प्रबंधक या प्रशासक
ELEX WooCommerce Advanced Bulk Edit Products, Prices & Attributes प्लगइन एक ऐसा प्लगइन है जो उत्पादों के बल्क संपादन का समर्थन करता है।
इस प्लगइन में उत्पादों को बल्क संपादित करते समय, फ़िल्टरिंग के माध्यम से लक्ष्य चुने जाते हैं, और इस प्रक्रिया के दौरान, उत्पाद फ़िल्टरिंग अनुरोधों के दौरान प्रेषित कुछ डेटा को सीधे SQL क्वेरी में डालने पर SQL इंजेक्शन कमजोरी उत्पन्न होती है।
हालाँकि, SQL क्वेरी के परिणामों को सीधे सत्यापित नहीं किया जा सकता है, और यह कमजोरी एक ब्लाइंड SQL इंजेक्शन विधि के रूप में मौजूद है जहाँ डेटा का निष्कर्षण यह निर्धारित करके किया जाता है कि क्वेरी परिणाम सत्य है या असत्य।
ऊपर PoC विवरण में अनुरोधित फ़ंक्शन ('फ़िल्टर किए गए उत्पादों का पूर्वावलोकन') को निष्पादित करते समय, निम्नलिखित पैकेट उत्पन्न होता है।

जब यह पैकेट अनुरोधित किया जाता है, तो /wp-content/plugins/elex-bulk-edit-products-prices-attributes-for-woocommerce-basic/includes/elex-ajax-apifunctions.php फ़ाइल में elex_bep_filter_products फ़ंक्शन कॉल किया जाता है।
अनुरोध डेटा से SQL इंजेक्शन पेलोड वाला desired_price मान निम्नलिखित अनुक्रम के माध्यम से SQL क्वेरी के रूप में निष्पादित होता है।
SQL इंजेक्शन पेलोड वाला desired_price मान सीधे क्वेरी स्थिति खंड में पारित किया जाता है और चर $price_query को सौंपा जाता है।
product_title_text,rangeभी सीधे क्वेरी में पारित किए जाते हैं, लेकिन चूँकि हमने PoC मेंdesired_priceको SQL इंजेक्शन पेलोड पारित किया, हम यहाँ केवलdesired_priceकी व्याख्या करेंगे।
// elex-ajax-apifunctions.php लाइन 1280 पर
$price_query = " AND meta_key='_regular_price' AND meta_value {$filter_range} {$data_to_filter['desired_price']} ";

उसके बाद, चर $price_query को चर $sql (लाइन 1365, #1) में जोड़ा जाता है, और चर $sql स्ट्रिंग AND और चर $product_type_condition के साथ मिलकर चर $main_query (लाइन 1379, #2) को प्रारंभ करता है।
चर
$sqlकोelex-ajax-apifunctions.phpकी लाइन 1257 पर प्रारंभ किया गया है।

अंत में, चर $main_query को नीचे दिखाए अनुसार तैयारी फ़ंक्शन में एक तर्क के रूप में पारित किया जाता है ताकि डेटाबेस क्वेरी निष्पादित हो सके।

इसलिए, SQL इंजेक्शन पेलोड वाला अनुरोध पैरामीटर desired_price $wpdb->prepare( '%1s', $main_query ) कथन के $main_query में शामिल होता है। इस बिंदु पर, चूँकि %1s प्रारूप निर्दिष्टक $main_query मान को ज्यों का त्यों पारित करता है, SQL इंजेक्शन पेलोड बिना एस्केपिंग के क्वेरी में डाला जाता है, जिसके परिणामस्वरूप SQL इंजेक्शन कमजोरी उत्पन्न होती है।
⚠️ PoC कोड एक उत्पाद प्रबंधक खाते का उपयोग करके ब्लाइंड SQL इंजेक्शन कमजोरी का शोषण करके डेटाबेस नाम प्राप्त करने के लिए कार्यान्वित किया गया है।

इसके बाद, PoC कोड चलाने के लिए निम्नलिखित कमांड दर्ज करें।
आवश्यक मॉड्यूलrequests
python poc.py
