Azure Pentesting
JE SUIS ENCORE EN TRAIN DE CONSTRUIRE LA MÉTHODOLOGIE AZURE
Informations de base
Az - Basic InformationMéthodologie Azure Pentester/Red Team
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 d'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 de réussir à obtenir des identifiants pour Azure AD. Voici quelques idées pour y parvenir :
Fuites sur github (ou similaire) - OSINT
Ingénierie sociale
Réutilisation de mot 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 fichier local
/home/USERNAME/.azure
C:\Users\USERNAME\.azure
Le fichier
accessTokens.json
dansaz cli
avant 2.30 - Jan2022 - stockait les jetons d'accès en clairLe fichier
azureProfile.json
contient des informations sur l'utilisateur connecté.az logout
supprime le jeton.Les anciennes versions de
Az PowerShell
stockaient les jetons d'accès en clair dansTokenCache.dat
. Elles stockaient également le ServicePrincipalSecret en clair dansAzureRmContext.json
. La cmdletSave-AzContext
peut être utilisée pour stocker les jetons. UtilisezDisconnect-AzAccount
pour les supprimer.3ème parties compromises
Employé interne
Phishing commun (identifiants ou application Oauth)
Même si vous n'avez compromis aucun utilisateur à l'intérieur du locataire Azure que vous attaquez, vous pouvez recueillir des informations à partir de celui-ci :
Az - Unauthenticated Enum & Initial EntryAprès avoir réussi à obtenir des identifiants, vous devez savoir à qui appartiennent ces identifiants, et à quoi ils ont accès, vous devez donc effectuer une énumération de base :
Énumération de base
Rappelez-vous que la partie la plus bruyante de l'énumération est la connexion, pas l'énumération elle-même.
SSRF
Si vous avez trouvé un SSRF dans une machine à l'intérieur d'Azure, consultez cette page pour des astuces :
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ù l'utilisateur vit 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.
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 surveillée
Après l'avoir contourné, vous pourrez peut-être revenir à votre configuration initiale et vous aurez toujours accès.
Prise de contrôle de sous-domaine
Whoami
Apprenez comment installer az cli, AzureAD et Az PowerShell dans la section Az - AzureAD.
L'une des premières choses que vous devez savoir est qui vous êtes (dans quel environnement vous êtes) :
L'une des commandes les plus importantes pour énumérer Azure est Get-AzResource
de Az PowerShell car elle vous permet de connaître les ressources sur lesquelles votre utilisateur actuel a de la visibilité.
Vous pouvez obtenir les mêmes informations dans la console web en allant sur https://portal.azure.com/#view/HubsExtension/BrowseAll ou en recherchant "All resources"
AzureAD Enumeration
Par défaut, tout utilisateur devrait avoir suffisamment de permissions pour énumérer des éléments tels que les utilisateurs, groupes, rôles, service principals... (voir permissions par défaut AzureAD). Vous pouvez trouver ici un guide :
Az - AzureAD (AAD)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.
Service Principal et Politique d'Accès
Un service Azure peut avoir une Identité Système (du service lui-même) ou utiliser une Identité Gérée Assignée par l'Utilisateur. Cette Identité peut avoir une Politique d'Accès pour, par exemple, un KeyVault pour lire des secrets. Ces Politiques d'Accès devraient être restreintes (principe du moindre privilège), mais pourraient avoir plus de permissions que nécessaire. Typiquement, un App Service utiliserait KeyVault pour récupérer des secrets et des certificats.
Il est donc utile d'explorer ces identités.
App Service SCM
Console Kudu pour se connecter au 'container' de l'App Service.
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 storage-account.
Azure DevOps
Azure DevOps est séparé d'Azure. Il dispose de dépôts, pipelines (yaml ou release), boards, wiki, et plus encore. Les Groupes de Variables sont utilisés pour stocker des valeurs de variables et des secrets.
Outils de Reconnaissance Automatisée
Azucar est un outil de reconnaissance pour Azure. Il est conçu pour aider les pentesters et les auditeurs de sécurité à évaluer la posture de sécurité d'un environnement Azure.
Last updated