
WordPress PPOM for WooCommerce Plugin <= 33.0.15 SQL इंजेक्शन के प्रति संवेदनशील है
इस रिपॉजिटरी में "PPOM for WooCommerce" WordPress प्लगइन में एक अनप्रमाणित समय-आधारित ब्लाइंड SQL इंजेक्शन भेद्यता के लिए एक प्रूफ ऑफ कॉन्सेप्ट (PoC) शामिल है, जो संस्करण 33.0.15 तक और सहित प्रभावित करता है।
यह भेद्यता इसलिए मौजूद है क्योंकि प्लगइन SQL क्वेरी में उपयोग करने से पहले उपयोगकर्ता द्वारा प्रदान किए गए इनपुट को ठीक से सैनिटाइज़ करने में विफल रहता है। विशेष रूप से, classes/plugin.class.php में get_product_meta() फ़ंक्शन तैयार स्टेटमेंट का उपयोग किए बिना सीधे SQL क्वेरी में $meta_id पैरामीटर को जोड़ता है।
भेद्य कोड (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] पैरामीटर में एक दुर्भावनापूर्ण पेलोड तैयार करके और इंजेक्ट करके इसका फायदा उठा सकता है। यह हमलावर को मनमाने SQL कमांड निष्पादित करने की अनुमति देता है, जैसे कि समय-विलंब फ़ंक्शन (SLEEP()), जिससे वे भेद्यता की पुष्टि कर सकते हैं और संभावित रूप से डेटाबेस से संवेदनशील जानकारी को वर्ण दर वर्ण निकाल सकते हैं।
यह भेद्यता तब ट्रिगर होती है जब प्लगइन की सेटिंग्स में "Enable Legacy Price Calculations" विकल्प सक्रिय होता है, क्योंकि यह एप्लिकेशन को कार्ट संचालन के दौरान भेद्य कोड पथ का उपयोग करने के लिए मजबूर करता है।
└── cve-2025-11391/
├── exploit.py # Python प्रूफ ऑफ कॉन्सेप्ट स्क्रिप्ट।
└── woocommerce-product-addon/ # प्लगइन का भेद्य संस्करण (v33.0.15)।
requests लाइब्रेरी स्थापित हो (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 केवल शैक्षिक और शोध उद्देश्यों के लिए है। इसे किसी भी ऐसी प्रणाली पर उपयोग न करें जिसके आप स्वामी नहीं हैं या जिसके परीक्षण के लिए आपके पास स्पष्ट अनुमति नहीं है। लेखक इस स्क्रिप्ट के किसी भी दुरुपयोग या क्षति के लिए जिम्मेदार नहीं है।