
CVE-2025-22710 का PoC
WordPress प्लगइन
घटक नाम WooCommerce Advanced Bulk Edit Products, Orders, Coupons, Any WordPress Post Type – Smart Manager
असुरक्षित संस्करण <= 8.50.0
घटक स्लग smart-manager-for-wp-e-commerce
घटक लिंक https://wordpress.org/plugins/smart-manager-for-wp-e-commerce/
भेद्यता वर्ग A3: Injection
भेद्यता प्रकार SQL Injection
व्यवस्थापक
WooCommerce Advanced Bulk Edit Products, Orders, Coupons, Any WordPress Post Type – Smart Manager (इसके बाद Smart Manager) प्लगइन एक प्लगइन है जो WordPress में सभी पोस्ट प्रकारों का बल्क एडिटिंग और देखने की अनुमति देता है।
Smart Manager प्लगइन संस्करण 8.50.0 और उससे नीचे, पोस्ट देखने के लिए उन्नत खोज फ़ंक्शन का उपयोग करते समय, एक SQL Injection भेद्यता उत्पन्न होती है क्योंकि फ़िल्टरिंग मान एस्केप प्रोसेसिंग के बिना डेटाबेस क्वेरी में पारित किए जाते हैं।
हालाँकि, SQL Injection हमलों के प्रत्यक्ष परिणाम स्क्रीन पर नहीं देखे जा सकते, लेकिन true/false स्थितियों के आधार पर प्रतिक्रिया मानों में अंतर के माध्यम से Blind SQL Injection संभव है।
⚠️ true/false स्थितियों के आधार पर प्रतिक्रिया मानों में अंतर देखने के लिए कम से कम एक पोस्ट मौजूद होना चाहिए।
/wp-admin/admin.php?page=smart-manager) पर जाएँ।

' OR 1=1 )) # दर्ज करें। उसके बाद, शीर्ष पर खोज बटन पर क्लिक करें।

' OR 1=2 )) # दर्ज करते हैं, तो कोई पोस्ट प्राप्त नहीं होगी क्योंकि स्थिति हमेशा असत्य होती है (OR 1=2)।

जब उपरोक्त PoC विवरण में अनुरोधित 'Advanced Search' फ़ंक्शन निष्पादित होता है, तो निम्नलिखित पैकेट उत्पन्न होता है, और उन्नत खोज में दर्ज किए गए फ़िल्टरिंग मान (Post Title, is, ' OR 1=1 )) #) अनुरोध डेटा advanced_search_query में डाल दिए जाते हैं।
advanced_search_query=[{"condition":"OR","rules":[{"condition":"AND","rules":[{"type":"wp_posts.post_title","operator":"is","value":"' OR 1=1 )) #"}]}]}]

जब यह पैकेट अनुरोधित किया जाता है, तो /wp-content/plugins/smart-manager-for-wp-e-commerce/classes/class-smart-manager-base.php फ़ाइल में get_data_model फ़ंक्शन कॉल किया जाता है, और निम्नलिखित क्रम में डेटाबेस क्वेरी करता है।
यदि अनुरोध डेटा advanced_search_query मौजूद है, तो यह process_search_cond फ़ंक्शन को कॉल करता है। इस समय, अनुरोध डेटा advanced_search_query को key-value pair तर्क में search_query कुंजी वाले मान में पारित किया जाता है।
search_query=[{"condition":"OR","rules":[{"condition":"AND","rules":[{"type":"wp_posts.post_title","operator":"is","value":"' OR 1=1 )) #"}]}]}]

कॉल किया गया फ़ंक्शन process_search_cond search_query कुंजी वाले मान के माध्यम से पुनरावृति करता है, फ़िल्टरिंग मान Post Title(post_tile) को वेरिएबल $search_col में प्रारंभ करता है, और SQL Injection पेलोड युक्त फ़िल्टरिंग मान ' OR 1=1 )) # को वेरिएबल $search_value में प्रारंभ करता है।

वेरिएबल $search_col और $search_value को $search_params सरणी की कुंजियों search_col(=post_title) और search_value(=' OR 1=1 )) #) में क्रमशः पारित किया जाता है। इसके बाद, यह $search_params वेरिएबल create_flat_table_search_query फ़ंक्शन में search_params कुंजी वाले मान के रूप में पारित किया जाता है।

इसके बाद, create_flat_table_search_query फ़ंक्शन SQL क्वेरी के WHERE क्लॉज को परिभाषित करता है, और इस बिंदु पर, तर्क के रूप में पारित search_params कुंजी का search_value(=' OR 1=1 )) #) बिना किसी एस्केप प्रोसेसिंग के WHERE क्लॉज में शामिल किया जाता है।

फिर, फ़ंक्शन create_flat_table_search_query का रिटर्न मान (SQL Injection पेलोड युक्त) फ़ंक्शन process_flat_table_search_query को तर्क के रूप में पारित किया जाता है।

फ़ंक्शन process_flat_table_search_query प्राप्त तर्क का उपयोग करके एक डेटाबेस क्वेरी बनाता है, वेरिएबल $select, $from, और $where को प्रारंभ करता है। यहां, हम देख सकते हैं कि SQL Injection पेलोड बिना किसी सत्यापन के सीधे वेरिएबल $where में पारित किया जाता है।

वेरिएबल $select, $from, $where सीधे वेरिएबल $query_posts_search को सौंपे जाते हैं, और यह वेरिएबल अंततः डेटाबेस क्वेरी करने वाले फ़ंक्शन को तर्क के रूप में पारित किया जाता है।

उन्नत खोज फ़ंक्शन में, उपयोगकर्ता इनपुट (' OR 1=1 )) #) बिना एस्केप प्रोसेसिंग के सीधे डेटाबेस क्वेरी में शामिल किया जाता है, जिसके परिणामस्वरूप SQL Injection भेद्यता उत्पन्न होती है। यह भेद्यता हमलावरों को मनमाना SQL क्वेरी निष्पादित करने की अनुमति देती है, जिससे डेटाबेस से संवेदनशील जानकारी का रिसाव या हेरफेर जैसे गंभीर सुरक्षा जोखिम हो सकते हैं।
⚠️ PoC कोड कार्यान्वयन SQL Injection भेद्यता का शोषण करके डेटाबेस नाम क्वेरी करता है।
PoC कोड को एक संपादक में खोलें और WordPress साइट का पता और व्यवस्थापक क्रेडेंशियल दर्ज करें।

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