
CVE-2026-82222 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो GiveWP WordPress प्लगइन के 4.16.7.1 तक के संस्करणों में एक बिना प्रमाणीकरण के PHP ऑब्जेक्ट इंजेक्शन है, जो रिमोट कोड निष्पादन की ओर ले जाता है।
| रेंज | पहुंच योग्य? |
|---|
<= 4.16.5.1 | डिफ़ॉल्ट इंस्टॉल। एक प्रकाशित फॉर्म, एक सक्रिय गेटवे। |
4.16.6 से 4.16.7.1 | हाँ, यदि कोई लीगेसी (गैर-V3) फॉर्म मौजूद है। केवल नया V3 इंस्टॉल नहीं। |
Python 3.8+ और requests।
pip install requests
python cve-2026-82222.py http://127.0.0.1:8080
python cve-2026-82222.py http://127.0.0.1:8080 --check
python cve-2026-82222.py http://127.0.0.1:8080 42 -c id
python cve-2026-82222.py http://127.0.0.1:8080 -g offline
-c डिफ़ॉल्ट रूप से id होता है। कमांड में < > & % नहीं; स्पेस ${IFS} बन जाते हैं।
यदि डिस्कवरी चूक जाती है तो फॉर्म आईडी पास करें। यदि स्क्रिप्ट को सक्षम गेटवे नहीं मिलता है तो -g पास करें।
दान अनुरोध अक्सर HTTP 500 लौटाता है या टाइमआउट हो जाता है। यह अपेक्षित है। सत्र लेखन पहले होता है। system() आउटपुट अगले अनुरोध (/?give_action=view_receipt और इसी तरह) में होता है, डिस्क पर किसी फ़ाइल में नहीं।
बाकी के लिए python cve-2026-82222.py -h।
POST give_action=user_register। GiveWP खाता बनाता है और एक ऑथ कुकी सेट करता है। यह users_can_register से परामर्श नहीं करता।/wp-admin/profile.php के माध्यम से last_name में संग्रहीत होता है।give_last को छोड़ देता है। process-donation.php usermeta से नाम पढ़ता है, maybeSafeUnserialize (allowed_classes => false) चलाता है, और __PHP_Incomplete_Class को wp_give_sessions में लिखता है। PHP रास्ते में मूल ऑब्जेक्ट बाइट्स को फिर से उत्सर्जित करता है।TCPDF::__destruct() call_user_func_array('system', [cmd]) तक पहुंचता है। Stdout उस प्रतिक्रिया में होता है।TCPDF.__destruct()
-> Symfony Session.getIterator()
-> Give\TestData ProviderForwarder.__call()
-> call_user_func_array('system', [cmd])
pre_user_last_name NUL को हटा देता है, इसलिए गैजेट गुण अक्षुण्ण रहते हैं। stripslashes_deep फिर removeBackslashes से बचने के लिए बैकस्लैश चौगुने हो जाते हैं।
MIT। LICENSE देखें।