Az - Container Registry
Reading time: 8 minutes
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Basic Information
Azure Container Registry (ACR) ni rejista salama, ya kibinafsi inayokuruhusu hifadhi, kusimamia, na kufikia picha za kontena katika wingu la Azure. Inajumuisha kwa urahisi na huduma kadhaa za Azure, ikitoa michakato ya kujenga na kutekeleza kiotomatiki kwa kiwango. Pamoja na vipengele kama geo-replication na uchambuzi wa udhaifu, ACR husaidia kuhakikisha usalama wa kiwango cha biashara na kufuata kanuni kwa programu zilizowekwa kwenye kontena.
Permissions
Hizi ni idhini tofauti kulingana na nyaraka ambazo zinaweza kutolewa juu ya Rejista ya Kontena:
- Upatikanaji wa Meneja wa Rasilimali
- Kuunda/kufuta rejista
- Kusukuma picha
- Kuvuta picha
- Kufuta data ya picha
- Kubadilisha sera
- Kusaini picha
Pia kuna majukumu yaliyojengwa ndani ambayo yanaweza kutolewa, na pia inawezekana kuunda majukumu ya kawaida.
Authentication
warning
Ni muhimu sana kwamba hata kama jina la rejista lina herufi kubwa, unapaswa kila wakati kutumia herufi ndogo kuingia, kusukuma na kuvuta picha.
Kuna njia 4 za kuthibitisha kwenye ACR:
- Kwa Entra ID: Hii ndiyo njia ya kawaida ya kuthibitisha kwenye ACR. Inatumia amri ya
az acr login
kuthibitisha kwenye ACR. Amri hii itahifadhi tahadhari katika faili ya~/.docker/config.json
. Zaidi ya hayo, ikiwa unakimbia amri hii kutoka kwenye mazingira yasiyo na upatikanaji wa soketi ya docker kama katika cloud shell, inawezekana kutumia bendera ya--expose-token
kupata token ya kuthibitisha kwenye ACR. Kisha ili kuthibitisha unahitaji kutumia kama jina la mtumiaji00000000-0000-0000-0000-000000000000
kama:docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN
- Kwa akaunti ya admin: Mtumiaji wa admin amezuiliwa kwa default lakini anaweza kuwezeshwa na kisha itakuwa inawezekana kufikia rejista kwa jina la mtumiaji na nenosiri la akaunti ya admin lenye ruhusa kamili kwa rejista. Hii bado inaungwa mkono kwa sababu huduma zingine za Azure zinazitumia. Kumbuka kwamba nenosiri 2 zinaundwa kwa mtumiaji huyu na zote ni halali. Unaweza kuziwezesha kwa
az acr update -n <acrName> --admin-enabled true
. Kumbuka kwamba jina la mtumiaji kwa kawaida ni jina la rejista (na siadmin
). - Kwa token: Inawezekana kuunda token na
scope map
maalum (ruhusa) ili kufikia rejista. Kisha, inawezekana kutumia jina la token hii kama jina la mtumiaji na baadhi ya nenosiri lililotengenezwa ili kuthibitisha kwenye rejista kwadocker login -u <registry-name> -p <password> aregistry-url>
- Kwa Service Principal: Inawezekana kuunda service principal na kutoa jukumu kama
AcrPull
ili kuvuta picha. Kisha, itakuwa inawezekana kuingia kwenye rejista kwa kutumia appId ya SP kama jina la mtumiaji na siri iliyotengenezwa kama nenosiri.
Mfano wa skripti kutoka kwa nyaraka za kuunda SP yenye upatikanaji juu ya rejista:
#!/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"
Encryption
Ni Premium SKU pekee inayounga mkono encryption at rest kwa picha na vitu vingine.
Networking
Ni Premium SKU pekee inayounga mkono private endpoints. Nyingine zinasaidia tu public access. Endpoint ya umma ina muundo <registry-name>.azurecr.io
na endpoint ya kibinafsi ina muundo <registry-name>.privatelink.azurecr.io
. Kwa sababu hii, jina la registry lazima liwe la kipekee katika Azure yote.
Microsoft Defender for Cloud
Hii inakuwezesha scan the images katika registry kwa vulnerabilities.
Soft-delete
Kipengele cha soft-delete kinakuwezesha recover a deleted registry ndani ya idadi iliyotajwa ya siku. Kipengele hiki kimezimwa kwa default.
Webhooks
Inawezekana create webhooks ndani ya registries. Katika webhook hii inahitajika kubainisha URL ambapo request itatumwa kila wakati hatua ya push au delete inafanywa. Aidha, Webhooks zinaweza kuashiria scope kuonyesha repositories (picha) ambazo zitakathiriwa. Kwa mfano, 'foo:*' inamaanisha matukio chini ya repository 'foo'.
Kutoka kwa mtazamo wa washambuliaji, ni muhimu kuangalia hii kabla ya kufanya hatua yoyote katika registry, na kuondoa kwa muda ikiwa inahitajika, ili kuepuka kugunduliwa.
Connected registries
Hii kimsingi inaruhusu mirror the images kutoka registry moja hadi nyingine, kwa kawaida iliyoko kwenye eneo.
Ina hali 2: ReadOnly na ReadWrite. Katika hali ya kwanza, picha zinachukuliwa tu pulled kutoka registry ya chanzo, na katika hali ya pili, picha zinaweza pia pushed kwa registry ya chanzo.
Ili wateja waweze kufikia registry kutoka Azure, token inatolewa wakati registry iliyounganishwa inatumika.
Runs & Tasks
Runs & Tasks inaruhusu kutekeleza katika Azure hatua zinazohusiana na kontena ambazo kawaida unahitaji kufanya kwa ndani au katika pipeline ya CI/CD. Kwa mfano, unaweza build, push, and run images in the registry.
Njia rahisi ya kujenga na kuendesha kontena ni kutumia Run ya kawaida:
# 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
Hata hivyo, hiyo itasababisha kukimbia ambazo si za kuvutia sana kutoka kwa mtazamo wa mshambuliaji kwa sababu hazina utambulisho wa usimamizi ulioambatanishwa nao.
Hata hivyo, tasks zinaweza kuwa na utambulisho wa usimamizi wa mfumo na mtumiaji ulioambatanishwa nazo. Tasks hizi ndizo zinazofaa kwa kuinua mamlaka katika kontena. Katika sehemu ya kuinua mamlaka, inawezekana kuona jinsi ya kutumia tasks kuinua mamlaka.
Cache
Kipengele cha cache kinaruhusu kupakua picha kutoka kwa hifadhi ya nje na kuhifadhi toleo jipya katika rejista. Inahitaji kuwa na nyaraka zilizowekwa kwa kuchagua nyaraka kutoka kwa Azure Vault.
Hii ni ya kuvutia sana kutoka kwa mtazamo wa mshambuliaji kwa sababu inaruhusu kuhamasisha kwenye jukwaa la nje ikiwa mshambuliaji ana ruhusa ya kutosha kufikia nyaraka, kupakua picha kutoka kwa hifadhi ya nje na kuunda cache pia inaweza kutumika kama mekanismu ya kudumu.
Enumeration
warning
Ni muhimu sana kwamba hata kama jina la rejista lina herufi kubwa, unapaswa kutumia herufi ndogo tu katika url ili kuweza kufikia.
# 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>
Kuinua Haki & Baada ya Utekelezaji
Az - Automation Accounts Privesc
Marejeleo
- https://learn.microsoft.com/en-us/azure/container-registry/container-registry-authentication?tabs=azure-cli
- https://learn.microsoft.com/en-us/azure/container-registry/container-registry-roles?tabs=azure-cli#access-resource-manager
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.