AWS - Cognito Privesc
Cognito
Cognito के बारे में अधिक जानकारी के लिए देखें:
pageAWS - Cognito EnumIdentity Pool से क्रेडेंशियल्स जुटाना
Cognito पहचानित और अपहचानित उपयोगकर्ताओं को IAM भूमिका क्रेडेंशियल्स प्रदान कर सकता है, अगर आप किसी एप्लिकेशन के आईडेंटिटी पूल आईडी का पता लगाते हैं (यह उस पर हार्डकोड होना चाहिए) तो आप नए क्रेडेंशियल्स प्राप्त कर सकते हैं और इसलिए प्राइवेस्क (जहां आपके पास पहले से कोई क्रेडेंशियल नहीं था)।
अधिक जानकारी के लिए इस पेज की जाँच करें।
संभावित प्रभाव: अनऑथ उपयोगकर्ताओं के सेवाओं भूमिका में सीधा प्राइवेस्क (और संभावित रूप से प्रमाणित उपयोगकर्ताओं के साथ जुड़े वाले की भी)।
cognito-identity:SetIdentityPoolRoles
, iam:PassRole
cognito-identity:SetIdentityPoolRoles
, iam:PassRole
इस अनुमति के साथ आप प्रमाणित/अप्रमाणित उपयोगकर्ताओं को कोग्निटो ऐप की भूमिका को किसी भी कोग्निटो भूमिका प्रदान कर सकते हैं।
यदि cognito ऐप अनअथेंटिकेटेड यूज़र्स सक्षम नहीं है, तो आपको इसे सक्षम करने के लिए अनुमति cognito-identity:UpdateIdentityPool
भी चाहिए सकती है।
संभावित प्रभाव: कोई भी cognito रोल को सीधे उन्नति देना।
cognito-identity:update-identity-pool
cognito-identity:update-identity-pool
इस अनुमति वाले हमलावर को उदाहरण के लिए अपने नियंत्रण में एक Cognito उपयोगकर्ता पूल या किसी अन्य पहचान प्रदाता सेट कर सकता है जहां वह एक तरीका हो सकता है इस Cognito पहचान पूल तक पहुंचने का। फिर, उस उपयोगकर्ता प्रदाता पर लॉगिन करने से उसे पहुंचने की अनुमति मिल जाएगी जो पहचानित भूमिका को पहचान पूल में कॉन्फ़िगर किया गया है।
इस अनुमति का दुरुपयोग करके बेसिक प्रमाणीकरण को स्वीकृत करने की भी संभावना है:
संभावित प्रभाव: पहचानी गई IAM भूमिका को क्षति पहुंचाना।
cognito-idp:AdminAddUserToGroup
cognito-idp:AdminAddUserToGroup
यह अनुमति एक Cognito उपयोगकर्ता को एक Cognito समूह में जोड़ने की अनुमति देती है, इसलिए एक हमलावर इस अनुमति का दुरुपयोग करके अपने नियंत्रण में एक उपयोगकर्ता को अन्य समूहों में जोड़ सकता है जिसमें बेहतर विशेषाधिकार या विभिन्न IAM भूमिकाएँ हो सकती हैं:
संभावित प्रभाव: अन्य कोग्निटो समूहों और उपयोगकर्ता पूल समूहों से जुड़े IAM भूमिकाओं में वृद्धि।
(cognito-idp:CreateGroup
| cognito-idp:UpdateGroup
), iam:PassRole
cognito-idp:CreateGroup
| cognito-idp:UpdateGroup
), iam:PassRole
इन अनुमतियों के साथ एक हमलावर समूह बना सकता/अपडेट कर सकता है जिसमें हर IAM भूमिका हो सकती है जिसका उपयोग किया जा सकता है एक संक्रमित कोग्निटो पहचान प्रदाता द्वारा और एक संक्रमित उपयोगकर्ता को समूह का हिस्सा बना सकता है, जिससे वह सभी उन भूमिकाओं तक पहुंच सकता है:
संभावित प्रभाव: अन्य Cognito IAM भूमिकाओं में उन्नति।
cognito-idp:AdminConfirmSignUp
cognito-idp:AdminConfirmSignUp
यह अनुमति साइनअप की पुष्टि करने की अनुमति देती है। डिफ़ॉल्ट रूप से कोई भी Cognito एप्लिकेशन में साइन इन कर सकता है, अगर यह छोड़ दिया जाता है, तो एक उपयोगकर्ता किसी भी डेटा के साथ खाता बना सकता है और इस अनुमति के साथ इसे सत्यापित कर सकता है।
संभावित प्रभाव: यदि आप एक नए उपयोगकर्ता को रजिस्टर कर सकते हैं, तो प्रमाणीकृत उपयोगकर्ताओं के लिए आईएएम रोल में अप्रत्यक्ष प्रिवेस्क। किसी भी खाते की पुष्टि करने की क्षमता के साथ अन्य ऐप कार्यक्षमताओं के लिए अप्रत्यक्ष प्रिवेस्क।
cognito-idp:AdminCreateUser
cognito-idp:AdminCreateUser
इस अनुमति से हमलावर को उपयोगकर्ता पूल के अंदर एक नया उपयोगकर्ता बनाने की अनुमति होगी। नया उपयोगकर्ता सक्षम रूप से बनाया जाता है, लेकिन इसे अपना पासवर्ड बदलना होगा।
संभावित प्रभाव: प्रमाणीकृत उपयोगकर्ताओं के लिए पहुंच अधिकार को सीधे बढ़ाना। किसी भी उपयोगकर्ता को बनाने में सक्षम होने के कारण अन्य ऐप कार्यक्षमताओं के लिए अप्रत्यक्ष प्रभाव।
cognito-idp:AdminEnableUser
cognito-idp:AdminEnableUser
यह अनुमतियाँ एक बहुत ही अत्याधिक्य स्थिति में मदद कर सकती है जहां एक हमलावर ने एक निष्क्रिय उपयोगकर्ता के क्रेडेंशियल्स पाए हैं और उसे फिर से सक्रिय करने की आवश्यकता है।
संभावित प्रभाव: प्रमाणीकरणित उपयोगकर्ताओं के लिए पहचान पूल IAM भूमिका को अप्रत्यक्ष रूप से उन्नत करना और उपयोगकर्ता की अनुमतियों को अगर हमलावर के पास अक्षम किए गए उपयोगकर्ता के क्रेडेंशियल्स होते।
cognito-idp:AdminInitiateAuth
, cognito-idp:AdminRespondToAuthChallenge
cognito-idp:AdminInitiateAuth
, cognito-idp:AdminRespondToAuthChallenge
यह अनुमति मेथड ADMIN_USER_PASSWORD_AUTH** के साथ लॉगिन करने की अनुमति देती है।** अधिक जानकारी के लिए लिंक पर जाएं।
cognito-idp:AdminSetUserPassword
cognito-idp:AdminSetUserPassword
यह अनुमति किसी भी उपयोगकर्ता का पासवर्ड बदलने की अनुमति देगी, जिससे उसे किसी भी उपयोगकर्ता का अनुकरण करने में सक्षम बना देगा (जिसके पास MFA सक्षम नहीं है)।
संभावित प्रभाव: संभावित रूप से किसी भी उपयोगकर्ता को सीधा उनके सभी समूहों तक पहुंचने की स्थिति, और पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने की पहुंचने क
SetUserMFAPreference: पिछले वाले के समान यह अनुमति उपयोग की जा सकती है ताकि एक उपयोगकर्ता की MFA पसंदों को सेट करने के लिए MFA सुरक्षा को अनदेखा किया जा सके।
SetUserPoolMfaConfig: पिछले वाले के समान इस अनुमति का उपयोग करके एक उपयोगकर्ता पूल की MFA पसंदों को सेट करने के लिए किया जा सकता है ताकि MFA सुरक्षा को अनदेखा किया जा सके।
UpdateUserPool: उपयोगकर्ता पूल को अपडेट करना भी संभव है ताकि एमएफए नीति बदली जा सके। यहां cli देखें।
संभावित प्रभाव: किसी भी उपयोगकर्ता को अनुमानित रूप से उनके पासवर्ड पता होने पर अप्रत्यक्ष प्रिवेस्क करने की संभावना है, यह एमएफए सुरक्षा को अनदेखा करने की अनुमति दे सकता है।
cognito-idp:AdminUpdateUserAttributes
cognito-idp:AdminUpdateUserAttributes
इस अनुमति के साथ एक हमलावर उस उपयोगकर्ता के ईमेल या फोन नंबर या किसी अन्य विशेषता को बदल सकता है जिसे उसके नियंत्रण में होने की कोशिश करने के लिए अधिक विशेषाधिकार प्राप्त करने की कोशिश की जा सकती है। यह एक ईमेल या फोन नंबर को बदलने और सत्यापित करने की अनुमति देता है।
संभावित प्रभाव: Cognito उपयोगकर्ता पूल का उपयोग करके अधिकारों को देने वाले अनुप्रयोग में अप्रत्यक्ष प्रिवेस्क।
cognito-idp:CreateUserPoolClient
| cognito-idp:UpdateUserPoolClient
cognito-idp:CreateUserPoolClient
| cognito-idp:UpdateUserPoolClient
इस अनुमति के साथ एक हमलावर पहले से मौजूदा पूल क्लाइंट से कम प्रतिबंधित नया उपयोगकर्ता पूल क्लाइंट बना सकता है। उदाहरण के लिए, नया क्लाइंट किसी भी प्रकार के विधि को प्रमाणित करने की अनुमति दे सकता है, कोई भी गुप्त नहीं हो सकता, टोकन रद्द करने की अनुमति नहीं हो सकती, टोकनों को अधिक समय तक वैध रखने की अनुमति दे सकता है...
यही वह किया जा सकता है अगर नया क्लाइंट बनाने की बजाय, मौजूदा को संशोधित किया जाता है।
कमांड लाइन (या अपडेट वाला) आप सभी विकल्प देख सकते हैं, इसे जांचें!
संभावित प्रभाव: पहचान स्थान के अधिकारित उपयोगकर्ता को अप्रत्यक्ष रूप से उच्चाधिकारण करने की संभावना हो सकती है जिसे उपयोगकर्ता ने नए क्लाइंट बनाकर सुरक्षा उपायों को ढीला बनाने की अनुमति दी है और एक हमलावर को उस उपयोगकर्ता के साथ लॉगिन करने की संभावना हो सकती है जिसे वह बना सकता था।
cognito-idp:CreateUserImportJob
| cognito-idp:StartUserImportJob
cognito-idp:CreateUserImportJob
| cognito-idp:StartUserImportJob
एक हमलावर इस अनुमति का दुरुपयोग करके नए उपयोगकर्ताओं को बनाने के लिए उपयोगकर्ता एक नया csv अपलोड करके कर सकता है।
संभावित प्रभाव: प्रमाणीकृत उपयोगकर्ताओं के लिए पहचान पूल IAM भूमिका को सीधे उन्नत करना। किसी भी उपयोगकर्ता को बना सकने की क्षमता के माध्यम से अन्य ऐप कार्यक्षमताओं के लिए अप्रत्यक्ष उन्नति।
cognito-idp:CreateIdentityProvider
| cognito-idp:UpdateIdentityProvider
cognito-idp:CreateIdentityProvider
| cognito-idp:UpdateIdentityProvider
एक हमलावर एक नया पहचान प्रदाता बना सकता है ताकि फिर इस प्रदाता के माध्यम से लॉगिन कर सके।
संभावित प्रभाव: प्रमाणीकृत उपयोगकर्ताओं के लिए आईएएम रोल के लिए सीधा प्रिवेस्क। किसी भी उपयोगकर्ता को बनाने की क्षमता के माध्यम से अन्य ऐप कार्यक्षमताओं के लिए अप्रत्यक्ष प्रिवेस्क।
cognito-sync:* विश्लेषण
यह कोग्निटो आईडेंटिटी पूल की भूमिकाओं में डिफ़ॉल्ट रूप से एक बहुत ही सामान्य अनुमति है। यद्यपि अनुमतियों में वाइल्डकार्ड हमेशा बुरा लगता है (विशेष रूप से AWS से आने पर), दी गई अनुमतियाँ हमलावर की दृष्टि से बहुत उपयोगी नहीं हैं।
यह अनुमति आईडेंटिटी पूल्स और आईडेंटिटी आईडीज की उपयोगकर्ता जानकारी पढ़ने की अनुमति देती है (जो संवेदनशील जानकारी नहीं है)। आईडेंटिटी आईडीज के पास डेटासेट्स हो सकते हैं, जिनमें सत्रों की जानकारी होती है (AWS इसे एक सहेजा हुआ गेम की तरह परिभाषित करता है)। इसमें कुछ प्रकार की संवेदनशील जानकारी हो सकती है (लेकिन संभावना बहुत कम है)। आप जाँच पृष्ठ में देख सकते हैं कि इस जानकारी तक पहुंचने के लिए कैसे।
एक हमलावर इन अनुमतियों का उपयोग इस्तेमाल कर सकता है कोग्निटो स्ट्रीम में खुद को नामांकित करने के लिए जो इन डेटासेट्स पर परिवर्तन प्रकाशित करता है या कोग्निटो घटनाओं पर ट्रिगर करने वाले लैम्बडा। मैंने इसका उपयोग नहीं देखा है, और मैं उम्मीद नहीं करूंगा कि यहां संवेदनशील जानकारी होगी, लेकिन यह असंभाव नहीं है।
स्वचालित उपकरण
Pacu, एडब्ल्यूएस उत्पीड़न ढांचा, अब "cognito__enum" और "cognito__attack" मॉड्यूल शामिल करता है जो एक खाते में सभी कोग्निटो संपत्तियों की जाँच, कमजोर विन्यास, उपयोग के लिए उपयोगकर्ता गुण, आदि करते हैं, और भी उपयोगकर्ता निर्माण (एमएफए समर्थन सहित) और संशोधन उच्चतम अधिकार आधारित करते हैं, उपयोगी आईडेंटिटी पूल क्रेडेंशियल्स, आदि।
मॉड्यूल के कार्यों का विवरण देखने के लिए ब्लॉग पोस्ट के भाग 2 देखें। स्थापना निर्देशों के लिए मुख्य Pacu पृष्ठ देखें।
उपयोग
एक दिये गए आईडेंटिटी पूल और उपयोगकर्ता पूल क्लाइंट के खिलाफ उपयोगकर्ता निर्माण और सभी प्रिवेस्क वेक्टर की कोशिश करने के लिए नमूना cognito__attack उपयोग:
वर्तमान AWS खाते में दिखाई देने वाले सभी उपयोगकर्ता पूल, उपयोगकर्ता पूल क्लाइंट, पहचान पूल, उपयोगकर्ता आदि को एकत्रित करने के लिए नमूना cognito__enum उपयोग:
Cognito Scanner एक CLI टूल है जो पायथन में है और जो Cognito पर विभिन्न हमले को लागू करता है, जिसमें एक प्रिवेस्क उन्नति शामिल है।
स्थापना
उपयोग
अधिक जानकारी के लिए https://github.com/padok-team/cognito-scanner देखें।
Last updated