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:
Binary file not shown.
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 3.5 MiB |
@@ -4,7 +4,7 @@
|
||||
|
||||
## 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 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 :
|
||||
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 :
|
||||
|
||||
- Amazon Cognito user pools
|
||||
- Options de connexion sociale telles que Facebook, Google, Login with Amazon et Sign in with Apple
|
||||
@@ -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 des 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 personnalisés 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,7 +116,7 @@ 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/#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).
|
||||
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).
|
||||
|
||||
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**.
|
||||
```bash
|
||||
@@ -131,45 +131,4 @@ 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 **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](../../#whoami) et essayer d'[escalader les privilèges](../../aws-privilege-escalation/).
|
||||
|
||||
### Authentifié
|
||||
|
||||
> [!NOTE]
|
||||
> N'oubliez pas que les **utilisateurs authentifiés** se verront probablement accorder **différentes permissions**, donc si vous pouvez **vous inscrire dans l'application**, essayez de le faire et obtenez les nouveaux 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_<Identity Pool name>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">aws cognito-identity get-id \
|
||||
--identity-pool-id <identity_pool_id> \
|
||||
--logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
|
||||
|
||||
# Obtenez l'identity_id de la réponse de la commande précédente
|
||||
aws cognito-identity get-credentials-for-identity \
|
||||
--identity-id <identity_id> \
|
||||
--logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
|
||||
|
||||
|
||||
# Dans l'IdToken, vous pouvez trouver les rôles auxquels un utilisateur a accès en raison des groupes de User Pool
|
||||
# Utilisez le --custom-role-arn pour obtenir des credentials pour un rôle spécifique
|
||||
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>
|
||||
</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 la peine de se connecter et d'accéder aux rôles IAM de tous**.
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
> Si vous recevez cette **erreur**, c'est parce que le
|
||||
|
||||
@@ -30,7 +30,7 @@ Les Machines Virtuelles (VM) Azure sont des **serveurs basés sur le cloud flexi
|
||||
- **Avancé** : Sélectionnez un groupe de sécurité
|
||||
- **Sauvegarde** : Il est possible d'activer une sauvegarde **Standard** (une par jour) et **Améliorée** (plusieurs par jour)
|
||||
- **Options d'orchestration des correctifs** : Cela permet d'appliquer automatiquement des correctifs dans les VM selon la politique sélectionnée comme décrit dans les [**docs**](https://learn.microsoft.com/en-us/azure/virtual-machines/automatic-vm-guest-patching).
|
||||
- **Alertes** : Il est possible de recevoir automatiquement des alertes par e-mail ou par application mobile lorsque quelque chose se produit dans la VM. Règles par défaut :
|
||||
- **Alertes** : Il est possible de recevoir automatiquement des alertes par e-mail ou application mobile lorsque quelque chose se produit dans la VM. Règles par défaut :
|
||||
- Pourcentage CPU supérieur à 80%
|
||||
- Octets de mémoire disponibles inférieurs à 1 Go
|
||||
- Pourcentage d'I/O consommé par les disques de données supérieur à 95%
|
||||
@@ -76,7 +76,7 @@ Get-AzDisk -Name <DiskName> -ResourceGroupName <ResourceGroupName>
|
||||
|
||||
## Images, Images de galerie & Points de restauration
|
||||
|
||||
Une **image de VM** est un modèle qui contient le système d'exploitation, les paramètres d'application et le système de fichiers nécessaires pour **créer une nouvelle machine virtuelle (VM)**. La différence entre une image et un instantané de disque est qu'un instantané de disque est une copie en lecture seule, à un moment donné, d'un seul disque géré, utilisée principalement pour la sauvegarde ou le dépannage, tandis qu'une image peut contenir **plusieurs disques et est conçue pour servir de modèle pour créer de nouvelles VMs**.\
|
||||
Une **image de VM** est un modèle qui contient le système d'exploitation, les paramètres d'application et le système de fichiers nécessaires pour **créer une nouvelle machine virtuelle (VM)**. La différence entre une image et un instantané de disque est qu'un instantané de disque est une copie en lecture seule, à un moment donné, d'un seul disque géré, utilisé principalement pour la sauvegarde ou le dépannage, tandis qu'une image peut contenir **plusieurs disques et est conçue pour servir de modèle pour créer de nouvelles VMs**.\
|
||||
Les images peuvent être gérées dans la **section Images** d'Azure ou à l'intérieur des **galeries de calcul Azure**, ce qui permet de générer des **versions** et de **partager** l'image entre locataires ou même de la rendre publique.
|
||||
|
||||
Un **point de restauration** stocke la configuration de la VM et des **instantanés cohérents au moment donné** de toutes les disques gérés attachés à la VM. Il est lié à la VM et son but est de pouvoir restaurer cette VM à son état à ce moment précis.
|
||||
@@ -144,7 +144,7 @@ Get-AzRestorePointCollection -Name <CollectionName> -ResourceGroupName <Resource
|
||||
|
||||
## Azure Site Recovery
|
||||
|
||||
D'après les [**docs**](https://learn.microsoft.com/en-us/azure/site-recovery/site-recovery-overview) : Site Recovery aide à garantir la continuité des activités en maintenant les applications et charges de travail en fonctionnement pendant les pannes. Site Recovery **réplique les charges de travail** s'exécutant sur des machines physiques et virtuelles (VM) d'un site principal vers un emplacement secondaire. Lorsqu'une panne se produit sur votre site principal, vous basculez vers un emplacement secondaire et accédez aux applications depuis là. Une fois que le site principal est de nouveau opérationnel, vous pouvez y revenir.
|
||||
D'après les [**docs**](https://learn.microsoft.com/en-us/azure/site-recovery/site-recovery-overview) : Site Recovery aide à garantir la continuité des activités en maintenant les applications et charges de travail en fonctionnement pendant les pannes. Site Recovery **réplique les charges de travail** s'exécutant sur des machines physiques et virtuelles (VM) d'un site principal à un emplacement secondaire. Lorsqu'une panne se produit sur votre site principal, vous basculez vers un emplacement secondaire et accédez aux applications depuis là. Une fois que le site principal est de nouveau opérationnel, vous pouvez y revenir.
|
||||
|
||||
## Azure Bastion
|
||||
|
||||
@@ -189,7 +189,7 @@ Get-AzBastion
|
||||
|
||||
## Métadonnées
|
||||
|
||||
Le service de métadonnées d'instance Azure (IMDS) **fournit des informations sur les instances de machines virtuelles en cours d'exécution** pour aider à leur gestion et configuration. Il offre des détails tels que le SKU, le stockage, les configurations réseau et des informations sur les événements de maintenance à venir via **l'API REST disponible à l'adresse IP non routable 169.254.169.254**, qui est accessible uniquement depuis l'intérieur de la VM. La communication entre la VM et l'IMDS reste à l'intérieur de l'hôte, garantissant un accès sécurisé. Lors de l'interrogation de l'IMDS, les clients HTTP à l'intérieur de la VM doivent contourner les proxies web pour assurer une communication appropriée.
|
||||
Le service de métadonnées d'instance Azure (IMDS) **fournit des informations sur les instances de machines virtuelles en cours d'exécution** pour aider à leur gestion et configuration. Il offre des détails tels que le SKU, le stockage, les configurations réseau et des informations sur les événements de maintenance à venir via **l'API REST disponible à l'adresse IP non routable 169.254.169.254**, qui est accessible uniquement depuis la VM. La communication entre la VM et l'IMDS reste à l'intérieur de l'hôte, garantissant un accès sécurisé. Lors de l'interrogation de l'IMDS, les clients HTTP à l'intérieur de la VM doivent contourner les proxies web pour assurer une communication appropriée.
|
||||
|
||||
De plus, pour contacter le point de terminaison des métadonnées, la requête HTTP doit avoir l'en-tête **`Metadata: true`** et ne doit pas avoir l'en-tête **`X-Forwarded-For`**.
|
||||
|
||||
@@ -539,7 +539,7 @@ L'autorisation requise est toujours **`Microsoft.Compute/virtualMachines/extensi
|
||||
|
||||
<summary>Extension VMAccess</summary>
|
||||
|
||||
Cette extension permet de modifier le mot de passe (ou de créer s'il n'existe pas) des utilisateurs à l'intérieur des VM Windows.
|
||||
Cette extension permet de modifier le mot de passe (ou de créer un mot de passe s'il n'existe pas) des utilisateurs à l'intérieur des VM Windows.
|
||||
```bash
|
||||
# Run VMAccess extension to reset the password
|
||||
$cred=Get-Credential # Username and password to reset (if it doesn't exist it'll be created). "Administrator" username is allowed to change the password
|
||||
@@ -793,7 +793,7 @@ Invoke-AzureRmVMBulkCMD -Script Mimikatz.ps1 -Verbose -output Output.txt
|
||||
## Accès non authentifié
|
||||
|
||||
{{#ref}}
|
||||
../../az-unauthenticated-enum-and-initial-entry/az-vms-unath.md
|
||||
../../az-unauthenticated-enum-and-initial-entry/az-vms-unauth.md
|
||||
{{#endref}}
|
||||
|
||||
## Post-exploitation
|
||||
|
||||
Reference in New Issue
Block a user