Az - Container Registry

Reading time: 8 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

Osnovne informacije

Azure Container Registry (ACR) je sigurna, privatna registracija koja vam omogućava da čuvate, upravljate i pristupate slikama kontejnera u Azure oblaku. Besprekorno se integriše sa nekoliko Azure usluga, pružajući automatizovane tokove izgradnje i implementacije na velikoj skali. Sa funkcijama kao što su geo-replikacija i skeniranje ranjivosti, ACR pomaže da se obezbedi sigurnost i usklađenost na nivou preduzeća za aplikacije u kontejnerima.

Dozvole

Ovo su različite dozvole prema dokumentaciji koje se mogu dodeliti preko Container Registry:

  • Pristup Resource Manager-u
  • Kreiranje/brisanje registracije
  • Postavljanje slike
  • Preuzimanje slike
  • Brisanje podataka o slici
  • Promena politika
  • Potpisivanje slika

Takođe postoje neke ugrađene uloge koje se mogu dodeliti, a moguće je i kreirati prilagođene uloge.

Autentifikacija

warning

Veoma je važno da, čak i ako ime registracije sadrži neka velika slova, uvek koristite mala slova za prijavu, postavljanje i preuzimanje slika.

Postoje 4 načina za autentifikaciju na ACR:

  • Sa Entra ID: Ovo je podrazumevani način autentifikacije na ACR. Koristi az acr login komandu za autentifikaciju na ACR. Ova komanda će čuvati akreditive u ~/.docker/config.json datoteci. Štaviše, ako pokrećete ovu komandu iz okruženja bez pristupa docker socket-u, kao u cloud shell, moguće je koristiti --expose-token flag za dobijanje tokena za autentifikaciju na ACR. Zatim, da biste se autentifikovali, treba da koristite kao korisničko ime 00000000-0000-0000-0000-000000000000 kao: docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN
  • Sa administratorskim nalogom: Administratorski korisnik je podrazumevano onemogućen, ali može biti omogućen i tada će biti moguće pristupiti registru sa korisničkim imenom i lozinkom administratorskog naloga sa punim dozvolama za registar. Ovo je još uvek podržano jer neke Azure usluge to koriste. Imajte na umu da su za ovog korisnika kreirane 2 lozinke i obe su važeće. Možete ga omogućiti sa az acr update -n <acrName> --admin-enabled true. Imajte na umu da je korisničko ime obično ime registracije (a ne admin).
  • Sa tokenom: Moguće je kreirati token sa specifičnom scope map (dozvole) za pristup registru. Zatim, moguće je koristiti ime tokena kao korisničko ime i bilo koju od generisanih lozinki za autentifikaciju na registar sa docker login -u <registry-name> -p <password> <registry-url>
  • Sa Service Principal: Moguće je kreirati service principal i dodeliti ulogu kao AcrPull za preuzimanje slika. Zatim, biće moguće prijaviti se u registar koristeći SP appId kao korisničko ime i generisanu tajnu kao lozinku.

Primer skripte iz dokumentacije za generisanje SP sa pristupom preko registra:

bash
#!/bin/bash
ACR_NAME=$containerRegistry
SERVICE_PRINCIPAL_NAME=$servicePrincipal

# Obtain the full registry ID
ACR_REGISTRY_ID=$(az acr show --name $ACR_NAME --query "id" --output tsv)

PASSWORD=$(az ad sp create-for-rbac --name $SERVICE_PRINCIPAL_NAME --scopes $ACR_REGISTRY_ID --role acrpull --query "password" --output tsv)
USER_NAME=$(az ad sp list --display-name $SERVICE_PRINCIPAL_NAME --query "[].appId" --output tsv)

echo "Service principal ID: $USER_NAME"
echo "Service principal password: $PASSWORD"

Enkripcija

Samo Premium SKU podržava enkripciju u mirovanju za slike i druge artefakte.

Mreža

Samo Premium SKU podržava privatne krajnje tačke. Ostali samo podržavaju javne pristupe. Javna krajnja tačka ima format <registry-name>.azurecr.io, a privatna krajnja tačka ima format <registry-name>.privatelink.azurecr.io. Iz tog razloga, ime registra mora biti jedinstveno u celoj Azure.

Microsoft Defender za Cloud

Ovo vam omogućava da skenirate slike u registru za ranjivosti.

Soft-delete

Funkcija soft-delete vam omogućava da opravite obrisani registar unutar naznačenog broja dana. Ova funkcija je onemogućena po defaultu.

Webhook-ovi

Moguće je kreirati webhook-ove unutar registara. U ovom webhook-u je potrebno navesti URL na koji će zahtev biti poslat svaki put kada se izvrši push ili delete akcija. Štaviše, Webhook-ovi mogu označiti opseg kako bi ukazali na repozitorijume (slike) koji će biti pogođeni. Na primer, 'foo:*' znači događaje pod repozitorijumom 'foo'.

Sa stanovišta napadača, zanimljivo je proveriti ovo pre nego što se izvrši bilo kakva akcija u registru, i privremeno ga ukloniti ako je potrebno, kako bi se izbeglo otkrivanje.

Povezani registri

Ovo u suštini omogućava ogledanje slika iz jednog registra u drugi, obično smešten u lokalnoj mreži.

Ima 2 moda: ReadOnly i ReadWrite. U prvom, slike se samo preuzimaju iz izvornog registra, a u drugom, slike se takođe mogu gurnuti u izvorni registar.

Kako bi klijenti pristupili registru iz Azure, token se generiše kada se koristi povezani registar.

Izvršenja i zadaci

Izvršenja i zadaci omogućavaju izvršavanje akcija vezanih za kontejnere u Azure koje ste obično morali raditi lokalno ili u CI/CD pipeline-u. Na primer, možete izgraditi, gurnuti i pokrenuti slike u registru.

Najlakši način za izgradnju i pokretanje kontejnera je korišćenje redovnog izvršenja:

bash
# Build
echo "FROM mcr.microsoft.com/hello-world" > Dockerfile
az acr build --image sample/hello-world:v1 --registry mycontainerregistry008 --file Dockerfile .

# Run
az acr run --registry mycontainerregistry008 --cmd '$Registry/sample/hello-world:v1' /dev/null

Međutim, to će pokrenuti izvršenja koja nisu previše zanimljiva iz perspektive napadača jer nemaju nijednu upravljanu identitet pridruženu njima.

Međutim, tasks mogu imati sistemsku i korisničku upravljanu identitet pridruženu njima. Ovi zadaci su korisni za escalate privileges u kontejneru. U odeljku o eskalaciji privilegija moguće je videti kako koristiti zadatke za eskalaciju privilegija.

Cache

Funkcija keširanja omogućava download images from an external repository i čuvanje novih verzija u registru. Zahteva da se konfigurišu neki credentials odabirom kredencijala iz Azure Vault-a.

Ovo je veoma zanimljivo iz perspektive napadača jer omogućava pivot to an external platform ako napadač ima dovoljno dozvola za pristup kredencijalima, download images from an external repository i konfigurisanje keša može se takođe koristiti kao persistence mechanism.

Enumeration

warning

Veoma je važno da, čak i ako ime registra sadrži neka velika slova, treba koristiti samo mala slova u URL-u za pristup.

bash
# List of all the registries
# Check the network, managed identities, adminUserEnabled, softDeletePolicy, url...
az acr list

# Get the details of a registry
az acr show --name <registry-name>

# List tokens of a registry
az acr token list --registry <registry-name> --resource-group <res-group>

# List repositories in a registry
az acr repository list --name <registry-name> --resource-group <res-group>

# List the tags of a repository
az acr repository show-tags --repository <repository-name> --name <registry-name> --resource-group <res-group>

# List deleted repository tags
## At the time of this writing there isn't yet any command to restore it
az acr repository list-deleted --name <registry-name>

# List tasks
## Check the git URL or the command
az acr task list --registry <registry-name>

# List tasks runs
az acr task list-runs --registry <registry-name>

# List connected registries
az acr connected-registry list --registry <registry-name>

# List cache
az acr cache list --registry <registry-name>

# Get cache details
az acr cache show --name <cache-name> --registry <registry-name>

Neautentifikovani Pristup

Az - Container Registry Unauth

Eskalacija Privilegija & Post Eksploatacija

Az - Container Registry Privesc

Reference

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