Translated ['src/pentesting-cloud/azure-security/README.md', 'src/pentes

This commit is contained in:
Translator
2025-01-26 10:44:58 +00:00
parent 705f2f5791
commit 8e9ddbd959
3 changed files with 80 additions and 14 deletions

View File

@@ -18,9 +18,9 @@ Du point de vue d'une Red Team, la **première étape pour compromettre un envir
### Énumération externe & Accès initial
La première étape est bien sûr d'énumérer des informations sur le locataire que vous attaquez et d'essayer d'obtenir un point d'accès.
La première étape est bien sûr d'énumérer les informations sur le locataire que vous attaquez et d'essayer d'obtenir un point d'accès.
En fonction du nom de domaine, il est possible de savoir **si l'entreprise utilise Azure**, d'obtenir l'**ID de locataire**, d'obtenir d'autres **domaines valides** dans le même locataire (s'il y en a plus) et d'obtenir des **informations pertinentes** comme si SSO est activé, les configurations de messagerie, les e-mails d'utilisateurs valides...
En fonction du nom de domaine, il est possible de savoir **si l'entreprise utilise Azure**, d'obtenir l'**ID de locataire**, d'obtenir d'autres **domaines valides** dans le même locataire (s'il y en a plus) et d'obtenir des **informations pertinentes** comme si SSO est activé, les configurations de messagerie, les emails d'utilisateurs valides...
Consultez la page suivante pour apprendre à effectuer l'**énumération externe** :
@@ -38,24 +38,31 @@ Avec ces informations, les moyens les plus courants d'essayer d'obtenir un point
- Vulnérabilités dans les applications hébergées sur Azure
- [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) avec accès au point de terminaison des métadonnées
- **Prises de contrôle de sous-domaines** comme dans [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)
- **Autres erreurs de configuration des services Azure**
- Si un ordinateur portable de développeur est compromis ([WinPEAS et LinPEAS](https://github.com/peass-ng/PEASS-ng) peuvent trouver cette info) :
- À l'intérieur de **`<HOME>/.Azure`**
- **`azureProfile.json`** contient des informations sur les utilisateurs connectés dans le passé
- **`clouds.config`** contient des informations sur les abonnements
- **`clouds.config` contient** des informations sur les abonnements
- **`service_principal_entries.json`** contient les identifiants des applications (ID de locataire, clients et secret). Seulement sur Linux & macOS
- **`msal_token_cache.json`** contient des jetons d'accès et des jetons de rafraîchissement. Seulement sur Linux & macOS
- **`service_principal_entries.bin`** et **`msal_token_cache.bin`** sont utilisés sous Windows et sont cryptés avec DPAPI
- **`service_principal_entries.bin`** et msal_token_cache.bin sont utilisés sous Windows et sont cryptés avec DPAPI
- **`msal_http_cache.bin`** est un cache de requêtes HTTP
- Chargez-le : `with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)`
- **`AzureRmContext.json`** contient des informations sur les connexions précédentes utilisant Az PowerShell (mais pas d'identifiants)
- À l'intérieur de **`C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*`** se trouvent plusieurs fichiers `.bin` avec des **jetons d'accès**, des jetons d'identité et des informations de compte cryptées avec le DPAPI des utilisateurs.
- À l'intérieur de **`C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*`** se trouvent plusieurs fichiers `.bin` avec des **jetons d'accès**, des jetons d'identité et des informations de compte cryptées avec le DPAPI de l'utilisateur.
- Il est possible de trouver plus de **jetons d'accès** dans les fichiers `.tbres` à l'intérieur de **`C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\`** qui contiennent un base64 crypté avec DPAPI avec des jetons d'accès.
- Sur Linux et macOS, vous pouvez obtenir des **jetons d'accès, jetons de rafraîchissement et jetons d'identité** depuis Az PowerShell (s'il est utilisé) en exécutant `pwsh -Command "Save-AzContext -Path /tmp/az-context.json"`
- Sous Windows, cela génère uniquement des jetons d'identité.
- Il est possible de voir si Az PowerShell a été utilisé sur Linux et macOS en vérifiant si `$HOME/.local/share/.IdentityService/` existe (bien que les fichiers contenus soient vides et inutiles)
- Il est possible de voir si Az PowerShell a été utilisé sous Linux et macOS en vérifiant si `$HOME/.local/share/.IdentityService/` existe (bien que les fichiers contenus soient vides et inutiles)
Trouvez d'autres **erreurs de configuration des services Azure** qui peuvent mener à un point d'accès à la page suivante :
{{#ref}}
az-unauthenticated-enum-and-initial-entry/
{{#endref}}
> [!NOTE]
> N'oubliez pas que généralement, la partie **la plus bruyante** de l'énumération est la **connexion**, pas l'énumération elle-même.
> N'oubliez pas que généralement, la partie **la plus bruyante** de l'énumération est la **connexion**, et non l'énumération elle-même.
### Outils Azure & Entra ID
@@ -73,7 +80,7 @@ Dans les cas où vous avez des identifiants valides mais que vous ne pouvez pas
- **Liste blanche d'IP** -- Vous devez compromettre une IP valide
- **Restrictions géographiques** -- Trouvez où vit l'utilisateur ou où se trouvent les bureaux de l'entreprise et obtenez une IP de la même ville (ou du même pays au moins)
- **Navigateur** -- Peut-être qu'un navigateur d'un certain OS (Windows, Linux, Mac, Android, iOS) est autorisé. Découvrez quel OS la victime/l'entreprise utilise.
- **Navigateur** -- Peut-être qu'un seul navigateur d'un certain OS (Windows, Linux, Mac, Android, iOS) est autorisé. Découvrez quel OS la victime/l'entreprise utilise.
- Vous pouvez également essayer de **compromettre les identifiants de Service Principal** car ils sont généralement moins limités et leur connexion est moins examinée
Après avoir contourné cela, vous pourriez être en mesure de revenir à votre configuration initiale et vous aurez toujours accès.
@@ -128,9 +135,9 @@ Get-AzureADTenantDetail
{{#endtabs }}
### Énumération et élévation de privilèges Entra ID
### Énumération d'Entra ID et élévation de privilèges
Par défaut, tout utilisateur devrait avoir **suffisamment de permissions pour énumérer** des éléments tels que des utilisateurs, des groupes, des rôles, des principaux de service... (voir [permissions par défaut AzureAD](az-basic-information/index.html#default-user-permissions)).\
Par défaut, tout utilisateur devrait avoir **suffisamment de permissions pour énumérer** des éléments tels que les utilisateurs, groupes, rôles, principaux de service... (vérifiez [les permissions par défaut d'AzureAD](az-basic-information/index.html#default-user-permissions)).\
Vous pouvez trouver ici un guide :
{{#ref}}
@@ -148,13 +155,32 @@ az-enumeration-tools.md#automated-post-exploitation-tools
Une fois que vous savez qui vous êtes, vous pouvez commencer à énumérer les **services Azure auxquels vous avez accès**.
La commande Az PowerShell **`Get-AzResource`** vous permet de **savoir quels sont les ressources visibles par votre utilisateur actuel**.
Vous devriez commencer par découvrir les **permissions que vous avez** sur les ressources. Pour cela :
1. **Trouvez la ressource à laquelle vous avez accès** :
La commande Az PowerShell **`Get-AzResource`** vous permet de **savoir quelles ressources votre utilisateur actuel peut voir**.
De plus, vous pouvez obtenir les mêmes informations dans la **console web** en allant sur [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) ou en recherchant "Toutes les ressources" ou en exécutant : `az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"`
En outre, avec suffisamment de permissions, le rôle **`Get-AzRoleAssignment`** peut être utilisé pour **énumérer tous les rôles** dans l'abonnement ou les permissions sur une ressource spécifique en l'indiquant comme dans : **`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`**
2. **Trouvez les permissions que vous avez sur les ressources auxquelles vous avez accès et trouvez les rôles qui vous sont assignés** :
Dans la section suivante, vous pouvez trouver des informations sur les services Azure les plus courants et comment les énumérer :
Notez que vous avez besoin de la permission **`Microsoft.Authorization/roleAssignments/read`** pour exécuter cette action.
De plus, avec suffisamment de permissions, le rôle **`Get-AzRoleAssignment`** peut être utilisé pour **énumérer tous les rôles** dans l'abonnement ou la permission sur une ressource spécifique en l'indiquant comme dans : **`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`**.
Il est également possible d'obtenir ces informations en exécutant **`az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"`** comme dans :
- **`az rest --method GET --uri "https://management.azure.com//subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"`**
3. **Trouvez les permissions granulaires des rôles qui vous sont attachés** :
Ensuite, pour obtenir la permission granulaire, vous pourriez exécuter **`(Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions`**.
Ou appeler l'API directement avec **`az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?api-version=2020-08-01-preview" | jq ".properties"`**.
Dans la section suivante, vous pouvez trouver **des informations sur les services Azure les plus courants et comment les énumérer** :
{{#ref}}
az-services/

View File

@@ -1 +0,0 @@
# Az - Escalade de privilèges

View File

@@ -0,0 +1,41 @@
# Az - Storage Unauth
{{#include ../../../banners/hacktricks-training.md}}
## Storage Unauth
Pour plus d'informations sur le stockage, consultez :
{{#ref}}
../az-services/az-storage.md
{{#endref}}
### Open Storage
Vous pouvez découvrir un stockage ouvert avec un outil tel que [**InvokeEnumerateAzureBlobs.ps1**](https://github.com/NetSPI/MicroBurst/blob/master/Misc/Invoke-EnumerateAzureBlobs.ps1) qui utilisera le fichier **`Microburst/Misc/permutations.txt`** pour générer des permutations (très simples) afin d'essayer de **trouver des comptes de stockage ouverts**.
```bash
Import-Module .\MicroBurst\MicroBurst.psm1
Invoke-EnumerateAzureBlobs -Base corp
[...]
https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
[...]
# Access https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
# Check: <Name>ssh_info.json</Name>
# Access then https://corpcommon.blob.core.windows.net/secrets/ssh_info.json
```
Vous pouvez également utiliser une méthode de [**MicroBust**](https://github.com/NetSPI/MicroBurst) pour cet objectif. Cette fonction recherchera le nom de domaine de base (et quelques permutations) dans plusieurs **domaines azure** (y compris les domaines de stockage) :
```bash
Import-Module .\MicroBurst\MicroBurst.psm1 -Verbose
Invoke-EnumerateAzureSubDomains -Base corp -Verbose
```
### SAS URLs
Un _**signature d'accès partagé**_ (SAS) URL est une URL qui **fournit un accès** à une certaine partie d'un compte de stockage (cela peut être un conteneur complet, un fichier...) avec des permissions spécifiques (lecture, écriture...) sur les ressources. Si vous en trouvez un qui a été divulgué, vous pourriez être en mesure d'accéder à des informations sensibles, elles ressemblent à ceci (c'est pour accéder à un conteneur, si cela accordait simplement l'accès à un fichier, le chemin de l'URL contiendrait également ce fichier) :
`https://<storage_account_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D`
Utilisez [**Storage Explorer**](https://azure.microsoft.com/en-us/features/storage-explorer/) pour accéder aux données
{{#include ../../../banners/hacktricks-training.md}}