Azure Pentesting
JE SUIS TOUJOURS EN TRAIN DE CONSTRUIRE LA MÉTHODOLOGIE AZURE
Informations de base
pageAz - Basic InformationMéthodologie de testeur/Auditeur Azure 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 Azure internes et services externes sont connectés.
Du point de vue de l'équipe rouge, le premier pas pour compromettre un environnement Azure est de parvenir à obtenir des informations d'identification pour Azure AD. Voici quelques idées sur la façon de le faire :
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
Falsification de requête côté serveur avec accès à l'endpoint de métadonnées
Lecture de fichiers locaux
/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
. Il stocke également le ServicePrincipalSecret en clair dansAzureRmContext.json
. La commandeSave-AzContext
peut être utilisée pour stocker les jetons. UtilisezDisconnect-AzAccount
pour les supprimer.Des tiers ont été compromis
Employé interne
Phishing commun (informations d'identification ou application Oauth)
Même si vous n'avez pas compromis d'utilisateur à l'intérieur du locataire Azure que vous attaquez, vous pouvez recueillir des informations à partir de celui-ci :
pageAz - Unauthenticated Enum & Initial EntryAprès avoir réussi à obtenir des informations d'identification, vous devez savoir à qui appartiennent ces informations d'identification, et à quoi elles ont accès, vous devez donc effectuer une certaine é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 trouvez un SSRF sur 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 informations d'identification valides mais que vous ne pouvez pas vous connecter, voici quelques protections courantes qui pourraient être en place :
Liste blanche 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 spécifique à certains OS (Windows, Linux, Mac, Android, iOS) est autorisé. Découvrez quels OS la victime/l'entreprise utilise.
Vous pouvez également essayer de compromettre les informations d'identification du Service Principal car elles sont généralement moins limitées et leur connexion est moins examinée
Après l'avoir contourné, vous pourriez être en mesure de revenir à votre configuration initiale et conserver l'accès.
Prise de contrôle de sous-domaine
Qui suis-je
Apprenez comment installer az cli, AzureAD et Az PowerShell dans la section Az - AzureAD.
Une des premières choses que vous devez savoir est qui vous êtes (dans quel environnement vous êtes) :
AzureAD Enumeration
User Enumeration
Manual Enumeration: Use tools like
ldapsearch
,ADRecon
, orBloodHound
to gather information about users in the Azure AD.Automated Enumeration: Utilize tools like
Azure AD Recon
orAzure AD Connect
to automate the enumeration process.
Group Enumeration
Manual Enumeration: Use tools like
ldapsearch
,ADRecon
, orBloodHjson
to gather information about groups in the Azure AD.Automated Enumeration: Utilize tools like
Azure AD Recon
orAzure AD Connect
to automate the enumeration process.
Device Enumeration
Manual Enumeration: Use tools like
ldapsearch
,jsonADRecon
, orBloodHound
to gather information about devices in the Azure AD.Automated Enumeration: Utilize tools like
Azure AD Recon
orAzure AD Connect
to automate the enumeration process.
Application Enumeration
Manual Enumeration: Use tools like
ldapsearch
,ADRecon
, orBloodHound
to gather information about applications registered in the Azure AD.Automated Enumeration: Utilize tools like
Azure AD Recon
orAzure AD Connect
to automate the enumeration process.
Service Principal Enumeration
Manual Enumeration: Use tools like
ldapsearch
,ADRejsoncon
, orBloodHound
to gather information about service principals in the Azure AD.Automated Enumeration: Utilize tools like
Azure AD Recon
orAzure AD Connect
to automate the enumeration process.
Privileged Role Enumeration
Manual Enumeration: Use tools like
ldapsearch
,ADRecon
,json orBloodHound
to gather information about privileged roles in the Azure AD.Automated Enumeration: Utilize tools like
Azure AD Recon
orAzure AD Connect
to automate the enumeration process.
Domain Enumeration
Manual Enumeration: Use tools like
ldapsearch
,ADRecon
, orBloodHound
to gather information about the domain in the Azure AD.Automated Enumeration: Utilize tools like
Azure AD Recon
orAzure AD Connect
to automate the enumeration process.
Policy Enumeration
Manual Enumeration: Use tools like
ldapsearch
,ADRecon
, orBloodHound
to gather information about policies in the Azure AD.Automated Enumeration: Utilize tools like
Azure AD Recon
orAzure AD Connect
to automate the enumeration process.
Azure PowerShell
Azure PowerShell est un module PowerShell qui fournit des commandes pour gérer les ressources Azure directement à partir de la ligne de commande PowerShell. Il permet d'automatiser des tâches courantes et de créer des scripts pour gérer les ressources Azure.
Pour commencer à utiliser Azure PowerShell, vous devez installer le module Azure PowerShell sur votre machine locale. Vous pouvez le faire en exécutant la commande suivante dans PowerShell :
Une fois le module installé, vous pouvez vous connecter à votre compte Azure à l'aide de la commande Connect-AzAccount
et commencer à utiliser les commandes Azure PowerShell pour gérer vos ressources Azure.
Pour plus d'informations sur l'utilisation d'Azure PowerShell, vous pouvez consulter la documentation officielle d'Azure PowerShell sur le site de Microsoft.
Un des commandes les plus importantes pour énumérer Azure est Get-AzResource
de Az PowerShell car elle vous permet de savoir les ressources sur lesquelles votre utilisateur actuel a une 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 "Toutes les ressources"
Énumération AzureAD
Par défaut, tout utilisateur devrait avoir suffisamment de permissions pour énumérer des éléments tels que les utilisateurs, les groupes, les rôles, les principaux de service... (vérifiez les permissions AzureAD par défaut). Vous pouvez trouver ici un guide :
pageAz - 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écouvrir 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.
Principal de service 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 attribuée à 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 service d'application utiliserait KeyVault pour récupérer des secrets et des certificats.
Il est donc utile d'explorer ces identités.
Console SCM du service d'application
Console Kudu pour se connecter au 'conteneur' du service d'application.
Shell Web
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 possède 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.
Outils de Reconnaissance Automatisée
Dernière mise à jour