
अप्रमाणित मनमाना फ़ाइल अपलोड -> WPLP Cookie Consent (gdpr-cookie-consent) <= 4.4.1 में RCE - तकनीकी विवरण और PoC
प्रूफ-ऑफ-कॉन्सेप्ट और तकनीकी विवरण CVE-2026-75865 के लिए, जो WordPress के लिए WPLP Cookie Consent – Cookie Banner & Consent Management for GDPR, CCPA & Google Consent Mode प्लगइन (स्लग gdpr-cookie-consent) में एक बिना प्रमाणीकरण के मनमाना फ़ाइल अपलोड है, जो रिमोट कोड एक्ज़ीक्यूशन की ओर ले जाता है, और 4.4.1 तक के सभी संस्करणों को प्रभावित करता है।
| मुख्य तथ्य |
|---|
| CVE | CVE-2026-75865 |
| गंभीरता | क्रिटिकल — CVSS 3.1 9.8 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| कमज़ोरियाँ | CWE-862 (अनुपलब्ध प्राधिकरण) + CWE-434 (खतरनाक प्रकार की फ़ाइल का अप्रतिबंधित अपलोड) |
| प्रभावित संस्करण | gdpr-cookie-consent ≤ 4.4.1 |
| फिक्स संस्करण | 4.4.2 |
| CVE असाइनर | Wordfence |
| प्रकाशित | 2026-09-01 |
| खोजकर्ता | Supakiad S. (m3ez) |
प्लगइन के SaaS "कनेक्टर" REST एंडपॉइंट विक्रेता के SaaS एप्लिकेशन को अनुरोध सौंपकर प्रमाणीकरण करते हैं, जो एक Bearer JWT को मान्य करता है — लेकिन प्लगइन केवल यह जाँचता है कि मान्यता एंडपॉइंट HTTP 200 का उत्तर देता है। JWT और लक्ष्य साइट के बीच कोई स्वामित्व बंधन नहीं है, इसलिए SaaS द्वारा जारी कोई भी मान्य टोकन (जैसे निःशुल्क खाते से) स्वीकार किया जाता है।
saas_upload_logo() फ़ंक्शन फिर हमलावर द्वारा आपूर्ति किए गए base64 ब्लॉब को सार्वजनिक wp-content/uploads/ निर्देशिका में हमलावर द्वारा आपूर्ति किए गए फ़ाइलनाम के अंतर्गत लिखता है, बिना किसी सामग्री या एक्सटेंशन सत्यापन के। संग्रहीत API टोकन (master_key) जो एंडपॉइंट की भी रक्षा करता है, वास्तव में गुप्त नहीं है: प्लगइन का अपना /store-auth रूट उसी JWT जाँच के बाद अनुरोध पैरामीटर से इसे अधिलेखित कर देता है, इसलिए पूरी श्रृंखला — बिना प्रमाणीकरण के अनुरोध से लेकर वेब रूट में निष्पादित पेलोड तक — के लिए केवल एक लक्ष्य URL और एक निःशुल्क SaaS खाते की आवश्यकता होती है।
यह कमज़ोरी 4.4.2 में अपलोड एंडपॉइंट को पूरी तरह से हटाकर और कनेक्टर ट्रस्ट मॉडल (JWT स्वामित्व बंधन, hash_equals(), HMAC अनुरोध हस्ताक्षर) को पुनः डिज़ाइन करके ठीक की गई थी।
पूर्ण तकनीकी विश्लेषण: REPORT.md
| फ़ाइल | विवरण |
|---|---|
REPORT.md | विस्तृत तकनीकी विवरण: लाइन-संदर्भित कोड के साथ मूल-कारण विश्लेषण, 4.4.1 → 4.4.2 फिक्स तुलना, शोषण श्रृंखला, पहचान और शमन |
cve_2026_75865.py | PoC स्क्रिप्ट — लक्ष्य सूची को स्कैन करती है, कमज़ोर साइटों का पता लगाती है, और लाइव आउटपुट के साथ पूरी श्रृंखला (एडमिन एन्यूमरेशन → मास्टर-की अधिलेखन → पेलोड अपलोड → सत्यापन) चलाती है |
payload.php | डिफ़ॉल्ट रूप से उपयोग किया जाने वाला न्यूनतम हानिरहित पेलोड: एक मार्कर स्ट्रिंग प्रिंट करता है और स्व-निष्कासन (?delete=1) का समर्थन करता है |
git clone https://github.com/ghostpels/CVE-2026-75865.git
cd CVE-2026-75865
pip install requests # colorama वैकल्पिक है (रंगीन लॉग)
# 1. एक मान्य SaaS JWT (app.wplegalpages.com पर कोई भी खाता) jwt.txt में सहेजें
# 2. एक लक्ष्य सूची बनाएं और केवल उन सिस्टमों के विरुद्ध चलाएं जिनका परीक्षण करने के लिए आप अधिकृत हैं:
python cve_2026_75865.py -l targets.txt -o vuln.txt -t 40 --marker CVE-2026-75865-POC
सत्यापित पेलोड URL vuln.txt में लाइव जोड़े जाते हैं, प्रत्येक लक्ष्य के सत्यापित होते ही एक प्रति पंक्ति।
| विकल्प | डिफ़ॉल्ट | विवरण |
|---|---|---|
-l, --list | (आवश्यक) | लक्ष्य सूची, प्रति पंक्ति एक URL |
-o, --output | vuln.txt | सत्यापित पेलोड URL, लाइव जोड़े गए |
-t, --threads | 40 | समवर्ती वर्कर |
--shell | payload.php | स्क्रिप्ट के पास पेलोड फ़ाइल; अपलोड किया गया नाम = इसका बेसनेम |
--filename | — | कस्टम अपलोड किया गया फ़ाइलनाम (इसका एक्सटेंशन पहले आज़माया जाता है, फिर --exts) |
--exts | php,phtml,php5,php74,php7,php3,php4,phar | फ़ॉलबैक एक्सटेंशन जब प्राथमिक एक्सटेंशन अवरुद्ध हो |
--jwt-file | jwt.txt | SaaS JWT, पहली गैर-रिक्त पंक्ति |
--marker | — | वह स्ट्रिंग जो पेलोड प्रतिक्रिया में मौजूद होनी चाहिए ताकि इसे मान्य माना जाए |
--timeout | 15 | प्रति-अनुरोध टाइमआउट (सेकंड) |
-k, --insecure | बंद | TLS सत्यापन अक्षम करें |
-v, --verbose | बंद | कनेक्शन त्रुटि विवरण दिखाएं |
यह रिपॉजिटरी केवल शैक्षिक और रक्षात्मक सुरक्षा अनुसंधान के लिए प्रकाशित की गई है। टूल का उपयोग विशेष रूप से उन सिस्टमों के विरुद्ध करें जिनके स्वामी आप हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति है। लेखक इस सामग्री के किसी भी दुरुपयोग या क्षति के लिए ज़िम्मेदार नहीं है।