
CVE-2025-22510 का PoC
वर्डप्रेस प्लगइन
घटक नाम WC Price History for Omnibus
असुरक्षित संस्करण <= 2.1.4
घटक स्लग wc-price-history
घटक लिंक https://wordpress.org/plugins/wc-price-history/
भेद्यता वर्ग A3: Injection
भेद्यता प्रकार PHP Object Injection
दुकान प्रबंधक (व्यवस्थापक +)
WC Price History for Omnibus प्लगइन संस्करण 2.1.4 और उससे नीचे में, WooCommerce डैशबोर्ड के 'Price History' मेनू (/wp-admin/admin.php?page=wc-price-history) में 'Import debug data' अनुभाग के माध्यम से JSON फ़ाइलें अपलोड की जा सकती हैं। अपलोड की गई JSON फ़ाइल wc_price_history_import_file पेलोड के रूप में भेजी जाती है, और JSON डेटा के 'serialized' कुंजी मान में PHP Object Injection भेद्यता उत्पन्न होती है। इस भेद्यता के माध्यम से, दुकान प्रबंधक विशेषाधिकार वाला हमलावर PHP ऑब्जेक्ट इंजेक्ट कर सकता है।
जबकि प्लगइन में स्वयं कोई ज्ञात POP चेन नहीं है, यदि लक्ष्य वर्डप्रेस साइट पर अन्य प्लगइन या थीम में POP चेन पाई जाती हैं, तो हमलावर मनमानी फ़ाइल हटाने, संवेदनशील जानकारी चुराने और कोड निष्पादन कर सकते हैं।
WC Price History for Omnibus प्लगइन संस्करण 2.1.4 या उससे नीचे स्थापित और सक्रिय एक वर्डप्रेस साइट तैयार करें।
इस प्लगइन को सक्रिय करने के लिए, पहले WooCommerce प्लगइन स्थापित और सक्रिय होना चाहिए।
PHP Object Injection भेद्यता का परीक्षण करने के लिए, wp-config.php फ़ाइल के नीचे निम्नलिखित क्लास PoC_POP_Chain_Object जोड़ें।
class PoC_POP_Chain_Object {
public $message = "";
public function __destruct() {
echo "<mark>Success PoP Chain</mark>";
echo "<br>";
echo "<mark>msg: ". $this->message ."</mark>";
}
}

इसके बाद, निम्नलिखित JSON डेटा वाली एक फ़ाइल बनाएँ।
इस JSON डेटा में,
serializedकुंजी में दर्ज डेटा PHP क्रमबद्ध ऑब्जेक्ट प्रारूप में है, जोwp-config.phpफ़ाइल में पहले जोड़े गएPoC_POP_Chain_Objectक्लास का एक उदाहरण बनाता है औरmessageप्रॉपर्टी को स्ट्रिंग 'Exploit !!' प्रदान करता है।
{
"serialized": "O:20:\"PoC_POP_Chain_Object\":1:{s:7:\"message\";s:10:\"Exploit !!\";}"
}
इसके बाद, WooCommerce डैशबोर्ड में 'Price History' मेनू (/wp-admin/admin.php?page=wc-price-history) पर जाएँ। 'Import debug data' अनुभाग में, फ़ाइल अपलोड फ़ॉर्म के माध्यम से पहले बनाई गई JSON फ़ाइल चुनें और इसे अपलोड करने के लिए 'Import' बटन पर क्लिक करें।

अपलोड अनुरोध के परिणामस्वरूप, प्रतिक्रिया डेटा में, आप देख सकते हैं कि wp-config.php में जोड़े गए क्लास PoC_POP_Chain_Object का जादुई तरीका __destruct() निष्पादित होता है, जो निम्न संदेश प्रदर्शित करता है।
<mark>Success PoP Chain</mark>
<br>
<mark>msg: Exploit !!</mark>

जब आप WooCommerce डैशबोर्ड के 'Price History' मेनू (/wp-admin/admin.php?page=wc-price-history) में 'Import debug data' अनुभाग के माध्यम से JSON डेटा अपलोड करते हैं और 'Import' बटन पर क्लिक करते हैं,
/wp-content/plugins/wc-price-history/app/PriorPrice/Import.php फ़ाइल में Import क्लास में परिभाषित import_file() फ़ंक्शन निष्पादित होता है। यह फ़ंक्शन JSON फ़ाइल वाले अनुरोध पेलोड wc_price_history_import_file को पुनर्प्राप्त करता है, फिर उस JSON डेटा से serialized कुंजी वाला डेटा पुनर्प्राप्त करता है और maybe_unserialize फ़ंक्शन के माध्यम से deserialization करता है।

इसलिए, अनुरोध पेलोड wc_price_history_import_file JSON प्रारूप में है, और बिना सत्यापन के serialized कुंजी वाले क्रमबद्ध डेटा को deserialize करने की प्रक्रिया के दौरान PHP Object Injection भेद्यता उत्पन्न होती है।