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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2021-21239 — CVE-2021-21239 के लिए एक्सप्लॉइट: pysaml2/Redash में SAML हस्ताक्षर सत्यापन बायपास। एम्बेडेड सार्वजनिक कुंजियों के साथ SAML प्रतिक्रियाएं जाली बनाकर उपयोगकर्ताओं का रूप धारण करता है और JIT प्रोविज़निंग के माध्यम से विशेषाधिकार बढ़ाता है। | Kitploit
उपकरण/GitHubGitHub/illera88/cve-2021-21239
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगप्रमाणीकरणलर्निंग और शिक्षा
GitHubillera88/cve-2021-21239

CVE-2021-21239

CVE-2021-21239 के लिए एक्सप्लॉइट: pysaml2/Redash में SAML हस्ताक्षर सत्यापन बायपास। एम्बेडेड सार्वजनिक कुंजियों के साथ SAML प्रतिक्रियाएं जाली बनाकर उपयोगकर्ताओं का रूप धारण करता है और JIT प्रोविज़निंग के माध्यम से विशेषाधिकार बढ़ाता है।

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

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

सभी देखें →

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

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

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

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

CVE-2021-21239 पर तकनीकी रिपोर्ट: Redash SAML प्रमाणीकरण भेद्यता

SAML का परिचय

Security Assertion Markup Language (SAML) एक खुला मानक है जो संघीय पहचान प्रणाली (federated identity system) में पार्टियों के बीच प्रमाणीकरण और प्राधिकरण डेटा के आदान-प्रदान के लिए उपयोग किया जाता है। यह डोमेनों में सिंगल साइन-ऑन (SSO) सक्षम करता है। मुख्य घटक हैं:

  • Identity Provider (IdP): वह सेवा जो उपयोगकर्ता को प्रमाणित करती है और SAML assertion जारी करती है (जैसे, Google का SAML IdP)। यह अखंडता और प्रामाणिकता सुनिश्चित करने के लिए अपनी निजी कुंजी से assertion पर हस्ताक्षर करता है।
  • Service Provider (SP): वह एप्लिकेशन जो प्रमाणीकरण के लिए IdP पर निर्भर करता है (जैसे, Redash)। SP assertion पर भरोसा करने के लिए IdP की सार्वजनिक कुंजी या प्रमाणपत्र का उपयोग करके हस्ताक्षर सत्यापित करता है।

विशिष्ट SAML प्रवाह में, SP उपयोगकर्ता को प्रमाणीकरण के लिए IdP पर पुनर्निर्देशित करता है। IdP उपयोगकर्ता के बारे में assertions (जैसे, ईमेल, नाम) युक्त एक हस्ताक्षरित SAML प्रतिक्रिया लौटाता है। SP हस्ताक्षर को मान्य करता है और उपयोगकर्ता को provision या लॉगिन कराता है।

भेद्यता का विवरण

CVE-2021-21239 pysaml2 लाइब्रेरी (संस्करण <6.5.0) में एक हस्ताक्षर सत्यापन बाईपास भेद्यता है, जिसका उपयोग Redash <=10.1.0 SAML SSO के लिए करता है। उच्च स्तर पर, यह एक हमलावर को मनमानी एम्बेडेड सार्वजनिक कुंजी के साथ SAML प्रतिक्रिया गढ़ने की अनुमति देता है, जिससे just-in-time (JIT) provisioning के माध्यम से उपयोगकर्ता प्रतिरूपण और विशेषाधिकार वृद्धि संभव होती है।

यह भेद्यता इस बात से उत्पन्न होती है कि pysaml2 SAML हस्ताक्षर सत्यापित करने के लिए xmlsec1 को किस प्रकार आमंत्रित करता है। , डिफ़ॉल्ट रूप से, SAML प्रतिक्रिया में में एम्बेडेड सार्वजनिक कुंजियों को कॉन्फ़िगर किए गए IdP प्रमाणपत्र पर वरीयता देता है। एक हमलावर स्व-जनित RSA कुंजी युग्म के साथ SAML प्रतिक्रिया तैयार कर सकता है, सार्वजनिक कुंजी को में एम्बेड कर सकता है, और निजी कुंजी के साथ assertion पर हस्ताक्षर कर सकता है। चूंकि pysaml2 को केवल विश्वसनीय IdP प्रमाणपत्र का उपयोग करने के लिए प्रतिबंधित नहीं करता है, इसलिए गढ़ा गया हस्ताक्षर मान्य माना जाता है, जिससे हमलावर किसी भी उपयोगकर्ता (जैसे, व्यवस्थापक) के रूप में लॉगिन कर सकता है और उच्चतम विशेषाधिकार प्राप्त कर सकता है।

Xmlsec1
<ds:KeyInfo>
<ds:RSAKeyValue>
xmlsec1

कोड स्तर पर, भेद्यता pysaml2 के sigver.py (check_signature फ़ंक्शन) में मौजूद है। xmlsec1 कमांड सूची में --enabled-key-data raw-x509-cert विकल्प का अभाव है, जो xmlsec1 को अविश्वसनीय एम्बेडेड कुंजियों का उपयोग करने की अनुमति देता है:

root@kitploit:~
com_list = [
    self.xmlsec, '--verify', '--enabled-reference-uris', 'empty,same-doc',
    '--pubkey-cert-pem', cert_file_name,
    '--id-attr:%s' % id_attr, node_name,
    '--node-id', nodeid, '--output', output_file_name, xml_file_name
]

यह उन हमलों की अनुमति देता है जहां हमलावर JIT provisioning का लाभ उठाकर किसी भी उपयोगकर्ता का प्रतिरूपण करने के लिए <saml:NameID> में ईमेल को संशोधित करता है।

एक्सप्लॉइट के परीक्षण के लिए सेटअप

एक्सप्लॉइट का परीक्षण करने के लिए, Docker Compose का उपयोग करके एक स्थानीय Redash इंस्टेंस (v10.1.0 या पुराना) तैयार किया जाता है। सेटअप में Google के IdP के साथ SAML SSO कॉन्फ़िगर करना शामिल है:

  • Docker Compose के माध्यम से Redash स्थापित करें: Redash रिपॉजिटरी को क्लोन करें, भेद्य संस्करण (जैसे, v10.1.0) पर checkout करें, और docker-compose up चलाएं।
  • Redash के पर्यावरण चरों में SAML कॉन्फ़िगर करें (जैसे, REDASH_SAML_LOGIN_ENABLED=true, REDASH_SAML_METADATA_URL=... Google के IdP से)।
  • परीक्षण के लिए Google के SAML IdP का उपयोग करें: Redash कॉलबैक URL के साथ Google Workspace SAML ऐप सेट अप करें।
  • Ngrok का उपयोग करके स्थानीय Redash इंस्टेंस को Google के IdP के लिए एक्सपोज़ करें।

यह सेटअप Python स्क्रिप्ट या Burp Suite के माध्यम से भेजी गई गढ़ी हुई SAML प्रतिक्रिया का परीक्षण करने की अनुमति देता है, जिससे विशेषाधिकार वृद्धि सत्यापित होती है।

तकनीकी विवरण और समाधान

यह भेद्यता इसलिए उत्पन्न होती है क्योंकि pysaml2 का xmlsec1 आह्वान सत्यापन के लिए एम्बेडेड कुंजियों के उपयोग की अनुमति देता है, जिससे विश्वसनीय IdP प्रमाणपत्र बायपास हो जाता है। एक हमलावर RSA कुंजी युग्म उत्पन्न करता है, <ds:RSAKeyValue> में सार्वजनिक कुंजी के साथ SAML प्रतिक्रिया तैयार करता है, विशेषताओं (जैसे, ईमेल को व्यवस्थापक के रूप में) को संशोधित करता है, और assertion पर हस्ताक्षर करता है। Xmlsec1 एम्बेडेड कुंजी का उपयोग करके सत्यापित करता है, इसे मान्य मानता है। समाधान pysaml2 v6.5.0 (प्रारंभिक कमिट 17 जनवरी, 2021) में src/saml2/sigver.py में लागू किया गया था। xmlsec1 कमांड सूची को --enabled-key-data raw-x509-cert शामिल करने के लिए अद्यतन किया गया था, जो सत्यापन को कॉन्फ़िगर किए गए IdP प्रमाणपत्र तक सीमित करता है:

root@kitploit:~
com_list = [
    self.xmlsec, '--verify', '--enabled-reference-uris', 'empty,same-doc',
    '--pubkey-cert-pem', cert_file_name,
    '--enabled-key-data', 'raw-x509-cert',
    '--id-attr:%s' % id_attr, node_name,
    '--node-id', nodeid, '--output', output_file_name, xml_file_name
]

यह ट्रस्ट चेन सत्यापन लागू करता है, एम्बेडेड कुंजी के उपयोग को रोकता है। Redash ने बाद के संस्करणों (जैसे, v11+) में pysaml2 को अपग्रेड करके इसे ठीक किया। भेद्य संस्करणों ने --insecure का उपयोग नहीं किया; बग लापता प्रतिबंध विकल्प था।

एक्सप्लॉइट कोड

एक्सप्लॉइट कोड cve-2021-21239.py में लागू किया गया है। यह Python स्क्रिप्ट Redash <=10.1.0 में CVE-2021-21239 का शोषण करने के लिए SAML प्रतिक्रिया गढ़ने की प्रक्रिया को स्वचालित करती है, जिससे JIT provisioning के माध्यम से उपयोगकर्ता प्रतिरूपण और विशेषाधिकार वृद्धि संभव होती है। एक्सप्लॉइट Google Workspace SAML IdP को लक्षित करता है, लेकिन हमले का परीक्षण अन्य IdPs (keycloak) के साथ भी किया गया है। स्क्रिप्ट निम्नलिखित चरण करती है:

  1. कमांड-लाइन तर्क पार्स करता है: SAML टेम्पलेट फ़ाइल, Redash URL, IdP ID, assertion ID, ईमेल, पहला नाम और अंतिम नाम के लिए इनपुट स्वीकार करता है, परीक्षण के लिए डिफ़ॉल्ट मानों के साथ (जैसे, email="[email protected]")।
  2. IdP ID का पता लगाता है: यदि प्रदान नहीं किया गया है तो Redash के SAML लॉगिन एंडपॉइंट से idpid प्राप्त करता है, लक्ष्य के कॉन्फ़िगरेशन के साथ संगतता सुनिश्चित करता है।
  3. XML टेम्पलेट भरता है: ईमेल, नाम, टाइमस्टैम्प और assertion ID के लिए प्लेसहोल्डर वाले टेम्पलेट (SAMLResponseTempalte.xml) का उपयोग करता है। Redash के सत्यापन को पारित करने के लिए 5 मिनट की वैधता विंडो के साथ गतिशील UTC टाइमस्टैम्प उत्पन्न किए जाते हैं।
  4. RSA कुंजी युग्म उत्पन्न करता है: SAML assertion पर हस्ताक्षर करने के लिए 2048-बिट RSA निजी कुंजी बनाता है।
  5. XML पर हस्ताक्षर करता है: भेद्यता का शोषण करने के लिए <ds:RSAKeyValue> में सार्वजनिक कुंजी एम्बेड करते हुए, RSA-SHA256 के साथ <saml:Assertion> तत्व पर हस्ताक्षर करने के लिए xmlsec Python लाइब्रेरी का उपयोग करता है।
  6. हस्ताक्षर सत्यापित करता है: हस्ताक्षर को मान्य करता है, यह सुनिश्चित करता है कि गढ़ी गई SAML प्रतिक्रिया संरचनात्मक रूप से मान्य है।
  7. SAMLResponse भेजता है: हस्ताक्षरित XML को Base64-एन्कोड और URL-एन्कोड करता है, इसे Redash के SAML कॉलबैक एंडपॉइंट (/saml/callback?org_slug=default) पर भेजता है।
  8. सत्र कुकी निकालता है: प्रतिक्रिया से सत्र कुकी प्राप्त करता है, जिससे हमलावर लक्षित उपयोगकर्ता का प्रतिरूपण कर सकता है।
  9. उपयोगकर्ताओं की सूची बनाता है: उपयोगकर्ता के समूह सदस्यता के साथ Redash उपयोगकर्ता सूची प्राप्त करता है। यह व्यवस्थापक उपयोगकर्ताओं की पहचान और लक्ष्यीकरण की अनुमति देता है।

शोषण में कठिनाइयाँ और उन्हें दरकिनार करना

CVE-2021-21239 का शोषण करने के लिए एक गढ़ी हुई SAML प्रतिक्रिया तैयार करना आवश्यक था जिसे Redash JIT provisioning के माध्यम से स्वीकार करे। प्रमुख कठिनाइयाँ और बाईपास:

  • हस्ताक्षर सत्यापन बाईपास: Pysaml2 एम्बेडेड कुंजियों की अनुमति देता है, RSA कुंजी युग्म उत्पन्न करके और <ds:RSAKeyValue> में सार्वजनिक कुंजी एम्बेड करके, निजी कुंजी के साथ हस्ताक्षर करके बायपास किया गया।
  • XML हस्ताक्षर चुनौतियाँ: xmlsec1 बाइनरी के साथ प्रारंभिक प्रयास काम कर गए, लेकिन Python xmlsec लाइब्रेरी व्हाइटस्पेस/कैनोनिकलाइज़ेशन मुद्दों के कारण डाइजेस्ट बेमेल उत्पन्न करती थी। हस्ताक्षर करने से पहले XML को एक पंक्ति में क्रमबद्ध करके (etree.tostring(..., pretty_print=False)) बायपास किया गया।
  • टाइमस्टैम्प सत्यापन: दूर-भविष्य का NotOnOrAfter अस्वीकृति का कारण बना; 5 मिनट की वैधता के साथ गतिशील UTC टाइमस्टैम्प का उपयोग करके बायपास किया गया।
  • HTTP हेडर बेमेल: Requests लाइब्रेरी SAMLResponse को दोहरा-एन्कोड करती थी, जिससे पार्सिंग विफलताएँ हुईं; कच्चे फॉर्म डेटा भेजकर बायपास किया गया।
  • Redash सेटअप: स्थानीय Redash को Google के IdP के लिए Ngrok की आवश्यकता थी; Ngrok के साथ टनलिंग करके और SAML को तदनुसार कॉन्फ़िगर करके बायपास किया गया।

ये चुनौतियाँ भेद्यता का प्रभावी ढंग से शोषण करने के लिए सटीक XML हेरफेर और पर्यावरण सेटअप की आवश्यकता को उजागर करती हैं। प्रदान किया गया एक्सप्लॉइट कोड इसे सफलतापूर्वक प्रदर्शित करता है, उपयोगकर्ताओं का प्रतिरूपण करने और पहुंच प्राप्त करने के लिए SAML प्रतिक्रिया गढ़ता है।

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