
WordPress PPOM for WooCommerce Plugin <= 33.0.15 SQL इंजेक्शन के लिए भेद्य है
इस रिपॉजिटरी में "PPOM for WooCommerce" वर्डप्रेस प्लगइन में अनप्रमाणित समय-आधारित ब्लाइंड SQL इंजेक्शन भेद्यता के लिए एक प्रूफ ऑफ कॉन्सेप्ट (PoC) शामिल है, जो 33.0.15 तक के संस्करणों को प्रभावित करता है।
यह भेद्यता इसलिए मौजूद है क्योंकि प्लगइन SQL क्वेरी में उपयोग करने से पहले उपयोगकर्ता द्वारा प्रदान किए गए इनपुट को ठीक से सैनिटाइज़ करने में विफल रहता है। विशेष रूप से, classes/plugin.class.php में get_product_meta() फ़ंक्शन प्रिपेयर्ड स्टेटमेंट का उपयोग किए बिना $meta_id पैरामीटर को सीधे SQL क्वेरी में जोड़ देता है।
कमजोर कोड (classes/plugin.class.php):
function get_product_meta( $meta_id ) {
// ...
global $wpdb;
$qry = 'SELECT * FROM ' . $wpdb->prefix . PPOM_TABLE_META . " WHERE productmeta_id = $meta_id";
$res = $wpdb->get_row( $qry );
return $res;
}
एक अनप्रमाणित हमलावर किसी उत्पाद को कार्ट में जोड़ते समय ppom[fields][id] पैरामीटर में एक दुर्भावनापूर्ण पेलोड तैयार करके इंजेक्ट करके इसका फायदा उठा सकता है। यह हमलावर को समय-विलंब फ़ंक्शन (SLEEP()) जैसे मनमाने SQL कमांड निष्पादित करने की अनुमति देता है, जिससे वे भेद्यता की पुष्टि कर सकते हैं और संभावित रूप से डेटाबेस से संवेदनशील जानकारी को अक्षर-दर-अक्षर बाहर निकाल सकते हैं।
यह भेद्यता तब ट्रिगर होती है जब प्लगइन की सेटिंग्स में "Enable Legacy Price Calculations" विकल्प सक्रिय होता है, क्योंकि यह एप्लिकेशन को कार्ट संचालन के दौरान कमजोर कोड पथ का उपयोग करने के लिए बाध्य करता है।
└── cve-2025-11391/
├── exploit.py # पायथन प्रूफ ऑफ कॉन्सेप्ट स्क्रिप्ट।
└── woocommerce-product-addon/ # प्लगइन का कमजोर संस्करण (v33.0.15)।
requests लाइब्रेरी के साथ Python 3.x इंस्टॉल होना चाहिए (pip install requests)।/htdocs/wp4hacking/)।woocommerce-product-addon (v33.0.15) के कमजोर संस्करण को woocommerce-product-addon/ निर्देशिका से .zip फ़ाइल अपलोड करके इंस्टॉल करें।sql_injection)।दी गई exploit.py स्क्रिप्ट SLEEP() कमांड इंजेक्ट करके और सर्वर की प्रतिक्रिया समय को मापकर भेद्यता की पुष्टि करती है।
exploit.py फ़ाइल खोलें और निम्नलिखित वेरिएबल्स कॉन्फ़िगर करें:
PRODUCT_URL: आपके द्वारा बनाए गए कमजोर उत्पाद पृष्ठ का पूर्ण URL।add_to_cart_data['add-to-cart']: आपके कमजोर उत्पाद की ID।स्क्रिप्ट को अपने टर्मिनल से चलाएँ:
python exploit.py
यदि लक्ष्य कमजोर है, तो सर्वर को प्रतिक्रिया देने में SLEEP() अवधि से अधिक समय लगेगा, जिससे स्क्रिप्ट टाइम आउट हो जाएगी। स्क्रिप्ट इस टाइमआउट को सफल एक्सप्लॉइटेशन के रूप में सही ढंग से व्याख्या करती है।
Attempting SQL Injection PoC (One-Step Method)...
Make sure 'Enable Legacy Price Calculations' is active.
[*] Sending SQL Injection payload...
Request timed out after 10.00 seconds.
[+] SUCCESS! 'Read timed out' occurred because the SLEEP(7) payload was executed.
The site is vulnerable to Time-Based Blind SQL Injection.
$wpdb->prepare() का उपयोग करता है, जिससे SQL इंजेक्शन को रोका जा सके।पैच किया गया कोड (classes/plugin.class.php):
$table = $wpdb->prefix . PPOM_TABLE_META;
$res = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $table WHERE productmeta_id = %d", $meta_id ) );
यह PoC केवल शैक्षिक और शोध उद्देश्यों के लिए है। इसे किसी भी ऐसी प्रणाली पर उपयोग न करें जिसके आप स्वामी नहीं हैं या जिसके परीक्षण के लिए आपके पास स्पष्ट अनुमति नहीं है। लेखक इस स्क्रिप्ट के किसी भी दुरुपयोग या क्षति के लिए ज़िम्मेदार नहीं है।