Azure Pentesting
{{#include ../../banners/hacktricks-training.md}}
Informations de base
{{#ref}} az-basic-information/ {{#endref}}
Méthodologie de Pentesting/Red Team Azure
Pour auditer un environnement AZURE, il est très important de savoir : quels services sont utilisés, ce qui est exposé, qui a accès à quoi, et comment les services internes Azure et les services externes sont connectés.
Du point de vue d'une Red Team, la première étape pour compromettre un environnement Azure est d'obtenir des identifiants pour Azure AD. Voici quelques idées sur comment y parvenir :
- Fuites sur github (ou similaire) - OSINT
- Ingénierie Sociale
- Réutilisation de mots de passe (fuites de mots de passe)
- Vulnérabilités dans les applications hébergées sur Azure
- Server Side Request Forgery avec accès au point de terminaison des métadonnées
- Lecture de fichiers locaux
/home/USERNAME/.azureC:\Users\USERNAME\.azure- Le fichier
accessTokens.jsondansaz cliavant 2.30 - Jan2022 - stockait les jetons d'accès en texte clair - Le fichier
azureProfile.jsoncontient des informations sur l'utilisateur connecté. az logoutsupprime le jeton.- Les anciennes versions de
Az PowerShellstockaient les jetons d'accès en texte clair dansTokenCache.dat. Il stocke également le ServicePrincipalSecret en texte clair dansAzureRmContext.json. La cmdletSave-AzContextpeut être utilisée pour stocker les jetons.
UtilisezDisconnect-AzAccountpour les supprimer. - Tiers violés
- Employé interne
- Phishing Commun (identifiants ou application Oauth)
- Phishing par Authentification par Code de Dispositif
- Password Spraying Azure
Même si vous n'avez compromis aucun utilisateur à l'intérieur du locataire Azure que vous attaquez, vous pouvez rassembler des informations à partir de celui-ci :
{{#ref}} az-unauthenticated-enum-and-initial-entry/ {{#endref}}
Note
Après avoir réussi à obtenir des identifiants, vous devez savoir à qui appartiennent ces identifiants, et à quoi ils ont accès, donc vous devez effectuer une énumération de base :
Énumération de base
Note
Rappelez-vous que la partie la plus bruyante de l'énumération est le login, pas l'énumération elle-même.
SSRF
Si vous avez trouvé un SSRF sur une machine à l'intérieur d'Azure, consultez cette page pour des astuces :
{{#ref}} https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html {{#endref}}
Contournement des Conditions de Connexion

Dans les cas où vous avez des identifiants valides mais que vous ne pouvez pas vous connecter, voici quelques protections courantes qui pourraient être en place :
- 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 pays au moins)
- 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.
Prise de Contrôle de Sous-domaine
Whoami
Caution
Apprenez comment installer az cli, AzureAD et Az PowerShell dans la section Az - Entra ID.
L'une des premières choses que vous devez savoir est qui vous êtes (dans quel environnement vous êtes) :
{{#tabs }} {{#tab name="az cli" }}
az account list
az account tenant list # Current tenant info
az account subscription list # Current subscription info
az ad signed-in-user show # Current signed-in user
az ad signed-in-user list-owned-objects # Get owned objects by current user
az account management-group list #Not allowed by default
{{#endtab }}
{{#tab name="AzureAD" }}
#Get the current session state
Get-AzureADCurrentSessionInfo
#Get details of the current tenant
Get-AzureADTenantDetail
{{#endtab }}
{{#tab name="Az PowerShell" }}
# Get the information about the current context (Account, Tenant, Subscription etc.)
Get-AzContext
# List all available contexts
Get-AzContext -ListAvailable
# Enumerate subscriptions accessible by the current user
Get-AzSubscription
#Get Resource group
Get-AzResourceGroup
# Enumerate all resources visible to the current user
Get-AzResource
# Enumerate all Azure RBAC role assignments
Get-AzRoleAssignment # For all users
Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user
{{#endtab }} {{#endtabs }}
Caution
L'une des commandes les plus importantes pour énumérer Azure est
Get-AzResourcedepuis Az PowerShell car elle vous permet de savoir quels ressources votre utilisateur actuel peut voir.Vous pouvez obtenir les mêmes informations dans la console web en allant sur https://portal.azure.com/#view/HubsExtension/BrowseAll ou en recherchant "Toutes les ressources"
Énumération d'Entra ID
Par défaut, tout utilisateur devrait avoir suffisamment de permissions pour énumérer des éléments tels que, utilisateurs, groupes, rôles, services principaux... (vérifiez les permissions par défaut d'AzureAD).
Vous pouvez trouver ici un guide :
{{#ref}} az-services/az-azuread.md {{#endref}}
Note
Maintenant que vous avez des informations sur vos identifiants (et si vous êtes une équipe rouge, espérons que vous n'avez pas été détecté). Il est temps de déterminer quels services sont utilisés dans l'environnement.
Dans la section suivante, vous pouvez vérifier quelques façons d'énumérer certains services courants.
App Service SCM
Console Kudu pour se connecter au 'conteneur' du Service d'Application.
Webshell
Utilisez portal.azure.com et sélectionnez le shell, ou utilisez shell.azure.com, pour un bash ou powershell. Le 'disque' de ce shell est stocké sous forme de fichier image dans un compte de stockage.
Azure DevOps
Azure DevOps est séparé d'Azure. Il a des dépôts, des pipelines (yaml ou release), des tableaux, un wiki, et plus encore. Les Groupes de Variables sont utilisés pour stocker des valeurs de variables et des secrets.
{{#include ../../banners/hacktricks-training.md}}