Cognito Identity Pools
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
पहचान पूल एक महत्वपूर्ण भूमिका निभाते हैं क्योंकि वे आपके उपयोगकर्ताओं को अस्थायी क्रेडेंशियल्स प्राप्त करने की अनुमति देते हैं। ये क्रेडेंशियल्स विभिन्न AWS सेवाओं, जैसे कि Amazon S3 और DynamoDB, तक पहुँचने के लिए आवश्यक हैं। पहचान पूलों की एक उल्लेखनीय विशेषता यह है कि वे गुमनाम अतिथि उपयोगकर्ताओं और उपयोगकर्ता प्रमाणीकरण के लिए विभिन्न पहचान प्रदाताओं का समर्थन करते हैं। समर्थित पहचान प्रदाता में शामिल हैं:
Amazon Cognito उपयोगकर्ता पूल
फेसबुक, गूगल, Amazon के साथ लॉगिन, और Apple के साथ साइन इन जैसे सामाजिक साइन-इन विकल्प
OpenID कनेक्ट (OIDC) के साथ संगत प्रदाता
SAML (सिक्योरिटी असेर्शन मार्कअप लैंग्वेज) पहचान प्रदाता
डेवलपर प्रमाणीकरण पहचान
Identity Pool सत्र उत्पन्न करने के लिए, आपको पहले एक पहचान ID उत्पन्न करने की आवश्यकता है। यह पहचान ID उस उपयोगकर्ता के सत्र की पहचान है। इन पहचानों में 20 डेटा सेट तक हो सकते हैं जो 1MB की कुंजी-मूल्य जोड़ों को संग्रहीत कर सकते हैं।
यह एक उपयोगकर्ता की जानकारी रखने के लिए उपयोगी है (जो हमेशा उसी पहचान ID का उपयोग करेगा)।
इसके अलावा, सेवा cognito-sync वह सेवा है जो इस जानकारी का प्रबंधन और समन्वय करने की अनुमति देती है (डेटा सेट में, धाराओं में जानकारी भेजना और SNS संदेश...)।
Pacu, AWS शोषण ढांचा, अब "cognito__enum" और "cognito__attack" मॉड्यूल शामिल करता है जो एक खाते में सभी Cognito संपत्तियों की गणना को स्वचालित करता है और कमजोर कॉन्फ़िगरेशन, उपयोगकर्ता विशेषताएँ जो पहुँच नियंत्रण के लिए उपयोग की जाती हैं, आदि को चिह्नित करता है, और उपयोगकर्ता निर्माण (MFA समर्थन सहित) और परिवर्तनीय कस्टम विशेषताओं, उपयोग योग्य पहचान पूल क्रेडेंशियल्स, आईडी टोकन में असुमेबल भूमिकाओं के आधार पर विशेषाधिकार वृद्धि को भी स्वचालित करता है।
मॉड्यूल के कार्यों का विवरण देखने के लिए ब्लॉग पोस्ट के भाग 2 को देखें। स्थापना निर्देशों के लिए मुख्य Pacu पृष्ठ देखें।
एक दिए गए पहचान पूल और उपयोगकर्ता पूल क्लाइंट के खिलाफ उपयोगकर्ता निर्माण और सभी प्रिवेस्क वेक्टर के प्रयास के लिए नमूना cognito__attack उपयोग:
सैंपल cognito__enum का उपयोग वर्तमान AWS खाते में दृश्य सभी उपयोगकर्ता पूल, उपयोगकर्ता पूल क्लाइंट, पहचान पूल, उपयोगकर्ता आदि एकत्र करने के लिए:
Cognito Scanner एक CLI टूल है जो पायथन में लिखा गया है और यह Cognito पर विभिन्न हमलों को लागू करता है, जिसमें अनचाही खाता निर्माण और पहचान पूल वृद्धि शामिल है।
For more information check https://github.com/padok-team/cognito-scanner
एक हमलावर को AWS क्रेडेंशियल्स प्राप्त करने के लिए एक Cognito ऐप में बिना प्रमाणीकरण वाले उपयोगकर्ता के रूप में केवल Identity Pool ID जानने की आवश्यकता होती है, और यह ID को वेब/मोबाइल ऐप्लिकेशन में हार्डकोड किया जाना चाहिए ताकि इसका उपयोग किया जा सके। एक ID इस तरह दिखती है: eu-west-1:098e5341-8364-038d-16de-1865e435da3b
(यह ब्रूटफोर्स करने योग्य नहीं है)।
IAM Cognito बिना प्रमाणीकरण वाली भूमिका जो बनाई गई है उसे डिफ़ॉल्ट रूप से Cognito_<Identity Pool name>Unauth_Role
कहा जाता है।
यदि आप एक हार्डकोडेड Identity Pools ID पाते हैं और यह बिना प्रमाणीकरण वाले उपयोगकर्ताओं की अनुमति देता है, तो आप AWS क्रेडेंशियल्स प्राप्त कर सकते हैं:
या आप निम्नलिखित aws cli commands का उपयोग कर सकते हैं:
ध्यान दें कि डिफ़ॉल्ट रूप से एक अनधिकृत cognito उपयोगकर्ता को कोई अनुमति नहीं मिल सकती, भले ही इसे एक नीति के माध्यम से सौंपा गया हो। निम्नलिखित अनुभाग की जांच करें।
पिछले अनुभाग ने डिफ़ॉल्ट संवर्धित प्रमाणीकरण प्रवाह का पालन किया। यह प्रवाह IAM भूमिका सत्र के लिए एक प्रतिबंधात्मक सत्र नीति सेट करता है। यह नीति केवल सत्र को इस सूची से सेवाओं का उपयोग करने की अनुमति देगी (भले ही भूमिका को अन्य सेवाओं तक पहुंच हो)।
हालांकि, इसे बायपास करने का एक तरीका है, यदि पहचान पूल में "बेसिक (क्लासिक) प्रवाह" सक्षम है, तो उपयोगकर्ता उस प्रवाह का उपयोग करके एक सत्र प्राप्त कर सकेगा जो उस प्रतिबंधात्मक सत्र नीति को नहीं रखेगा।
यदि आपको यह त्रुटि मिलती है, तो इसका कारण है कि बुनियादी प्रवाह सक्षम नहीं है (डिफ़ॉल्ट)
An error occurred (InvalidParameterException) when calling the GetOpenIdToken operation: Basic (classic) flow is not enabled, please use enhanced flow.
IAM क्रेडेंशियल्स का एक सेट होने पर आपको यह जांचना चाहिए कि आपके पास कौन सा एक्सेस है और अधिकार बढ़ाने की कोशिश करें.
याद रखें कि प्रमाणित उपयोगकर्ताओं को शायद विभिन्न अनुमतियाँ दी जाएंगी, इसलिए यदि आप ऐप के अंदर साइन अप कर सकते हैं, तो ऐसा करने की कोशिश करें और नए क्रेडेंशियल्स प्राप्त करें।
प्रमाणित उपयोगकर्ताओं के लिए पहचान पूल में भूमिकाएँ भी उपलब्ध हो सकती हैं।
इसके लिए आपको पहचान प्रदाता तक पहुँच की आवश्यकता हो सकती है। यदि वह एक Cognito User Pool है, तो शायद आप डिफ़ॉल्ट व्यवहार का दुरुपयोग कर सकते हैं और खुद एक नया उपयोगकर्ता बना सकते हैं।
IAM Cognito प्रमाणित भूमिका जो बनाई गई है उसे डिफ़ॉल्ट रूप से Cognito_<Identity Pool name>Auth_Role
कहा जाता है।
वैसे भी, निम्नलिखित उदाहरण यह अपेक्षा करता है कि आपने पहले ही Cognito User Pool में लॉग इन किया है जिसका उपयोग पहचान पूल तक पहुँचने के लिए किया गया है (यह न भूलें कि अन्य प्रकार के पहचान प्रदाता भी कॉन्फ़िगर किए जा सकते हैं)।
यह संभव है कि पहचान प्रदाता के आधार पर विभिन्न IAM भूमिकाएँ कॉन्फ़िगर की जाएं जिनमें उपयोगकर्ता लॉग इन हो रहा है या यहां तक कि उपयोगकर्ता (क्लेम का उपयोग करके) के आधार पर। इसलिए, यदि आपके पास एक ही या विभिन्न प्रदाताओं के माध्यम से विभिन्न उपयोगकर्ताओं तक पहुँच है, तो सभी के IAM भूमिकाओं में लॉग इन करना और पहुँच प्राप्त करना लायक हो सकता है।
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)