mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-04 11:07:37 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-services/aws-cognito-
This commit is contained in:
@@ -4,9 +4,9 @@
|
||||
|
||||
## Informations de base
|
||||
|
||||
Les pools d'identité jouent un rôle crucial en permettant à vos utilisateurs d'**acquérir des identifiants temporaires**. Ces identifiants sont essentiels pour accéder à divers services AWS, y compris, mais sans s'y limiter, Amazon S3 et DynamoDB. Une caractéristique notable des pools d'identité est leur prise en charge à la fois des utilisateurs invités anonymes et d'une gamme de fournisseurs d'identité pour l'authentification des utilisateurs. Les fournisseurs d'identité pris en charge incluent :
|
||||
Les pools d'identité jouent un rôle crucial en permettant à vos utilisateurs d'**acquérir des identifiants temporaires**. Ces identifiants sont essentiels pour accéder à divers services AWS, y compris, mais sans s'y limiter, Amazon S3 et DynamoDB. Une caractéristique notable des pools d'identité est leur support pour les utilisateurs invités anonymes et une gamme de fournisseurs d'identité pour l'authentification des utilisateurs. Les fournisseurs d'identité pris en charge incluent :
|
||||
|
||||
- Amazon Cognito user pools
|
||||
- Les pools d'utilisateurs Amazon Cognito
|
||||
- Options de connexion sociale telles que Facebook, Google, Login with Amazon et Sign in with Apple
|
||||
- Fournisseurs conformes à OpenID Connect (OIDC)
|
||||
- Fournisseurs d'identité SAML (Security Assertion Markup Language)
|
||||
@@ -43,7 +43,7 @@ De plus, le service **cognito-sync** est le service qui permet de **gérer et sy
|
||||
|
||||
### Tools for pentesting
|
||||
|
||||
- [Pacu](https://github.com/RhinoSecurityLabs/pacu), le framework d'exploitation AWS, inclut maintenant les modules "cognito\_\_enum" et "cognito\_\_attack" qui automatisent l'énumération de tous les actifs Cognito dans un compte et signalent les configurations faibles, les attributs utilisateur utilisés pour le contrôle d'accès, etc., et automatisent également la création d'utilisateurs (y compris le support MFA) et l'escalade de privilèges basée sur des attributs personnalisés modifiables, des identifiants de pool d'identité utilisables, des rôles assumables dans les jetons d'identité, etc.
|
||||
- [Pacu](https://github.com/RhinoSecurityLabs/pacu), le framework d'exploitation AWS, inclut maintenant les modules "cognito\_\_enum" et "cognito\_\_attack" qui automatisent l'énumération de tous les actifs Cognito dans un compte et signalent les configurations faibles, les attributs utilisateur utilisés pour le contrôle d'accès, etc., et automatisent également la création d'utilisateurs (y compris le support MFA) et l'escalade de privilèges basée sur des attributs personnalisables modifiables, des identifiants de pool d'identité utilisables, des rôles assumables dans les jetons d'identité, etc.
|
||||
|
||||
Pour une description des fonctions des modules, voir la partie 2 du [blog post](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2). Pour des instructions d'installation, voir la page principale de [Pacu](https://github.com/RhinoSecurityLabs/pacu).
|
||||
|
||||
@@ -116,9 +116,9 @@ aws cognito-identity get-credentials-for-identity --identity-id <identity_id> --
|
||||
|
||||
### Flux d'authentification amélioré vs basique
|
||||
|
||||
La section précédente a suivi le **flux d'authentification amélioré par défaut**. Ce flux définit une **politique de session restrictive** [**session policy**](../../aws-basic-information/index.html#session-policies) pour la session de rôle IAM générée. Cette politique ne permettra à la session que de [**utiliser les services de cette liste**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) (même si le rôle avait accès à d'autres services).
|
||||
La section précédente a suivi le **flux d'authentification amélioré par défaut**. Ce flux définit une **politique de session** [**restrictive**](../../aws-basic-information/index.html#session-policies) pour la session de rôle IAM générée. Cette politique ne permettra à la session que [**d'utiliser les services de cette liste**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) (même si le rôle avait accès à d'autres services).
|
||||
|
||||
Cependant, il existe un moyen de contourner cela, si le **pool d'identité a "Basic (Classic) Flow" activé**, l'utilisateur pourra obtenir une session en utilisant ce flux qui **n'aura pas cette politique de session restrictive**.
|
||||
Cependant, il existe un moyen de contourner cela, si le **pool d'identité a "Flux basique (classique)" activé**, l'utilisateur pourra obtenir une session en utilisant ce flux qui **n'aura pas cette politique de session restrictive**.
|
||||
```bash
|
||||
# Get auth ID
|
||||
aws cognito-identity get-id --identity-pool-id <identity_pool_id> --no-sign
|
||||
@@ -131,4 +131,59 @@ aws cognito-identity get-open-id-token --identity-id <identity_id> --no-sign
|
||||
aws sts assume-role-with-web-identity --role-arn "arn:aws:iam::<acc_id>:role/<role_name>" --role-session-name sessionname --web-identity-token <token> --no-sign
|
||||
```
|
||||
> [!WARNING]
|
||||
> Si vous recevez cette **erreur**, c'est parce que le
|
||||
> Si vous recevez cette **erreur**, c'est parce que le **flux de base n'est pas activé (par défaut)**
|
||||
|
||||
> `An error occurred (InvalidParameterException) when calling the GetOpenIdToken operation: Basic (classic) flow is not enabled, please use enhanced flow.`
|
||||
|
||||
Ayant un ensemble de credentials IAM, vous devriez vérifier [quels accès vous avez](../../index.html#whoami) et essayer d'[escalader les privilèges](../../aws-privilege-escalation/index.html).
|
||||
|
||||
### Authentifié
|
||||
|
||||
> [!NOTE]
|
||||
> N'oubliez pas que les **utilisateurs authentifiés** se verront probablement accorder **des permissions différentes**, donc si vous pouvez **vous inscrire dans l'application**, essayez de le faire et obtenez les nouvelles credentials.
|
||||
|
||||
Il pourrait également y avoir des **rôles** disponibles pour les **utilisateurs authentifiés accédant au Identity Pool**.
|
||||
|
||||
Pour cela, vous pourriez avoir besoin d'accéder au **fournisseur d'identité**. Si c'est un **Cognito User Pool**, peut-être pouvez-vous abuser du comportement par défaut et **créer un nouvel utilisateur vous-même**.
|
||||
|
||||
> [!TIP]
|
||||
> Le **rôle IAM Cognito authentifié créé via est appelé** par défaut `Cognito_<Nom du Identity Pool>Auth_Role`
|
||||
|
||||
Quoi qu'il en soit, le **suivant exemple** suppose que vous êtes déjà connecté à un **Cognito User Pool** utilisé pour accéder au Identity Pool (n'oubliez pas que d'autres types de fournisseurs d'identité pourraient également être configurés).
|
||||
|
||||
<pre class="language-bash"><code class="lang-bash">
|
||||
# Format mis à jour
|
||||
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>
|
||||
|
||||
> **Format obsolète** — ceux-ci peuvent ne plus fonctionner avec l'AWS CLI actuel :
|
||||
<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]
|
||||
> Il est possible de **configurer différents rôles IAM en fonction du fournisseur d'identité** par lequel l'utilisateur est connecté ou même simplement en fonction **de l'utilisateur** (en utilisant des claims). Par conséquent, si vous avez accès à différents utilisateurs via le même ou différents fournisseurs, cela pourrait **valoir le coup de se connecter et d'accéder aux rôles IAM de tous**.
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user