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

This commit is contained in:
Translator
2025-01-26 14:51:56 +00:00
parent 7c329ec800
commit ca8dd17888
3 changed files with 29 additions and 29 deletions

View File

@@ -78,7 +78,7 @@ Für weitere Informationen siehe https://github.com/padok-team/cognito-scanner
Das einzige, was ein Angreifer wissen muss, um **AWS-Anmeldeinformationen** in einer Cognito-App als unauthentifizierter Benutzer zu **erhalten**, ist die **Identity Pool ID**, und diese **ID muss im Web-/Mobilanwendung** fest codiert sein, damit sie verwendet werden kann. Eine ID sieht so aus: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b` (sie ist nicht bruteforcebar).
> [!TIP]
> Die **IAM Cognito unautorisierte Rolle, die erstellt wurde, heißt** standardmäßig `Cognito_<Identity Pool name>Unauth_Role`
> Die **IAM Cognito unauthentifizierte Rolle, die über erstellt wurde, heißt** standardmäßig `Cognito_<Identity Pool name>Unauth_Role`
Wenn Sie eine Identity Pools ID finden, die fest codiert ist und unauthentifizierte Benutzer zulässt, können Sie AWS-Anmeldeinformationen mit:
```python
@@ -112,13 +112,13 @@ aws cognito-identity get-id --identity-pool-id <identity_pool_id> --no-sign
aws cognito-identity get-credentials-for-identity --identity-id <identity_id> --no-sign
```
> [!WARNING]
> Beachten Sie, dass ein nicht authentifizierter cognito **Benutzer standardmäßig KEINE Berechtigungen hat, selbst wenn diese über eine Richtlinie zugewiesen wurden**. Überprüfen Sie den folgenden Abschnitt.
> Beachten Sie, dass ein nicht authentifizierter Cognito **Benutzer standardmäßig KEINE Berechtigungen hat, selbst wenn diese über eine Richtlinie zugewiesen wurden**. Überprüfen Sie den folgenden Abschnitt.
### Verbesserter vs. Basis-Authentifizierungsfluss
Der vorherige Abschnitt folgte dem **standardmäßigen verbesserten Authentifizierungsfluss**. Dieser Fluss setzt eine **einschränkende** [**Sitzungsrichtlinie**](../../aws-basic-information/#session-policies) für die generierte IAM-Rollen-Sitzung. Diese Richtlinie erlaubt es der Sitzung nur, [**die Dienste aus dieser Liste zu nutzen**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) (auch wenn die Rolle Zugriff auf andere Dienste hatte).
Der vorherige Abschnitt folgte dem **standardmäßigen verbesserten Authentifizierungsfluss**. Dieser Fluss setzt eine **einschränkende** [**Sitzungsrichtlinie**](../../aws-basic-information/index.html#session-policies) für die generierte IAM-Rollen-Sitzung. Diese Richtlinie erlaubt es der Sitzung nur, [**die Dienste aus dieser Liste zu nutzen**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) (auch wenn die Rolle Zugriff auf andere Dienste hatte).
Es gibt jedoch eine Möglichkeit, dies zu umgehen. Wenn der **Identitätspool den "Basis (Klassisch) Fluss" aktiviert hat**, kann der Benutzer eine Sitzung mit diesem Fluss erhalten, die **nicht über diese einschränkende Sitzungsrichtlinie verfügt**.
Es gibt jedoch eine Möglichkeit, dies zu umgehen. Wenn der **Identitätspool den "Basis (Klassischen) Fluss" aktiviert hat**, kann der Benutzer eine Sitzung mit diesem Fluss erhalten, die **nicht über diese einschränkende Sitzungsrichtlinie verfügt**.
```bash
# Get auth ID
aws cognito-identity get-id --identity-pool-id <identity_pool_id> --no-sign
@@ -135,7 +135,7 @@ aws sts assume-role-with-web-identity --role-arn "arn:aws:iam::<acc_id>:role/<ro
> `An error occurred (InvalidParameterException) when calling the GetOpenIdToken operation: Basic (classic) flow is not enabled, please use enhanced flow.`
Wenn Sie über ein Set von IAM-Anmeldeinformationen verfügen, sollten Sie [überprüfen, auf welchen Zugriff Sie haben](../../#whoami) und versuchen, [Berechtigungen zu eskalieren](../../aws-privilege-escalation/).
Wenn Sie über ein Set von IAM-Anmeldeinformationen verfügen, sollten Sie [überprüfen, auf welchen Zugriff Sie haben](../../index.html#whoami) und versuchen, [Privilegien zu eskalieren](../../aws-privilege-escalation/index.html).
### Authentifiziert
@@ -144,32 +144,32 @@ Wenn Sie über ein Set von IAM-Anmeldeinformationen verfügen, sollten Sie [übe
Es könnten auch **Rollen** für **authentifizierte Benutzer, die auf den Identity Pool zugreifen**, verfügbar sein.
Dafür müssen Sie möglicherweise Zugriff auf den **Identitätsanbieter** haben. Wenn es sich um einen **Cognito User Pool** handelt, können Sie möglicherweise das Standardverhalten ausnutzen und **selbst einen neuen Benutzer erstellen**.
Dafür müssen Sie möglicherweise Zugriff auf den **Identitätsanbieter** haben. Wenn das ein **Cognito User Pool** ist, können Sie möglicherweise das Standardverhalten ausnutzen und **selbst einen neuen Benutzer erstellen**.
> [!TIP]
> Die **IAM Cognito authentifizierte Rolle, die erstellt wurde, heißt** standardmäßig `Cognito_<Identity Pool name>Auth_Role`
> Die **IAM Cognito authentifizierte Rolle, die erstellt wird, heißt** standardmäßig `Cognito_<Identity Pool name>Auth_Role`
Jedenfalls erwartet das **folgende Beispiel**, dass Sie sich bereits in einem **Cognito User Pool** angemeldet haben, der verwendet wird, um auf den Identity Pool zuzugreifen (vergessen Sie nicht, dass auch andere Arten von Identitätsanbietern konfiguriert sein könnten).
<pre class="language-bash"><code class="lang-bash">aws cognito-identity get-id \
--identity-pool-id &#x3C;identity_pool_id> \
--logins cognito-idp.&#x3C;region>.amazonaws.com/&#x3C;YOUR_USER_POOL_ID>=&#x3C;ID_TOKEN>
--identity-pool-id <identity_pool_id> \
--logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
# Holen Sie sich die identity_id aus der vorherigen Befehlsantwort
aws cognito-identity get-credentials-for-identity \
--identity-id &#x3C;identity_id> \
--logins cognito-idp.&#x3C;region>.amazonaws.com/&#x3C;YOUR_USER_POOL_ID>=&#x3C;ID_TOKEN>
--identity-id <identity_id> \
--logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
# Im IdToken finden Sie Rollen, auf die ein Benutzer aufgrund von Benutzerpoolgruppen Zugriff hat
# Verwenden Sie die --custom-role-arn, um Anmeldeinformationen für eine bestimmte Rolle zu erhalten
aws cognito-identity get-credentials-for-identity \
--identity-id &#x3C;identity_id> \
<strong> --custom-role-arn &#x3C;role_arn> \
</strong> --logins cognito-idp.&#x3C;region>.amazonaws.com/&#x3C;YOUR_USER_POOL_ID>=&#x3C;ID_TOKEN>
--identity-id <identity_id> \
<strong> --custom-role-arn <role_arn> \
</strong> --logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
</code></pre>
> [!WARNING]
> Es ist möglich, **verschiedene IAM-Rollen je nach Identitätsanbieter** zu konfigurieren, bei dem der Benutzer angemeldet ist, oder sogar nur abhängig **vom Benutzer** (unter Verwendung von Ansprüchen). Daher könnte es **lohnenswert sein, sich anzumelden und auf die IAM-Rollen von allen zuzugreifen**.
> Es ist möglich, **verschiedene IAM-Rollen zu konfigurieren, abhängig von dem Identitätsanbieter**, bei dem der Benutzer angemeldet ist, oder sogar nur abhängig **vom Benutzer** (unter Verwendung von Ansprüchen). Daher könnte es **lohnenswert sein, sich anzumelden und auf die IAM-Rollen von allen zuzugreifen**.
{{#include ../../../../banners/hacktricks-training.md}}