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