Az - Container Registry
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
Temel Bilgiler
Azure Container Registry (ACR), Azure bulutunda konteyner görüntülerini depolamanıza, yönetmenize ve erişmenize olanak tanıyan güvenli, özel bir kayıttır. Birçok Azure hizmetiyle sorunsuz bir şekilde entegre olur ve ölçeklenebilir otomatik yapı ve dağıtım iş akışları sağlar. Coğrafi çoğaltma ve güvenlik açığı taraması gibi özelliklerle, ACR, konteynerleştirilmiş uygulamalar için kurumsal düzeyde güvenlik ve uyumluluk sağlamaya yardımcı olur.
İzinler
Container Registry üzerinde verilebilecek farklı izinler belgelere göre:
- Erişim Kaynak Yöneticisi
- Kayıt oluşturma/silme
- Görüntü yükleme
- Görüntü indirme
- Görüntü verilerini silme
- Politika değiştirme
- Görüntü imzalama
Ayrıca atanabilecek bazı yerleşik roller vardır ve özel roller oluşturmak da mümkündür.

Kimlik Doğrulama
Warning
Kayıt adı büyük harfler içeriyorsa bile, her zaman küçük harfler kullanarak giriş yapmanız, görüntü yüklemeniz ve indirmeniz çok önemlidir.
ACR’ye kimlik doğrulamak için 4 yol vardır:
- Entra ID ile: Bu, ACR’ye kimlik doğrulamak için varsayılan yoldur. ACR’ye kimlik doğrulamak için
az acr loginkomutunu kullanır. Bu komut,~/.docker/config.jsondosyasında kimlik bilgilerini saklar. Ayrıca, bu komutu bir bulut kabuğu gibi bir docker soketine erişimi olmayan bir ortamda çalıştırıyorsanız, ACR’ye kimlik doğrulamak için--expose-tokenbayrağını kullanarak token almanız mümkündür. Ardından kimlik doğrulamak için kullanıcı adı olarak00000000-0000-0000-0000-000000000000kullanmalısınız:docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN - Bir yönetici hesabı ile: Yönetici kullanıcı varsayılan olarak devre dışıdır, ancak etkinleştirilebilir ve ardından kayıt defterine tam izinlerle yönetici hesabının kullanıcı adı ve şifresi ile erişim sağlanabilir. Bazı Azure hizmetleri bunu kullandığı için bu hala desteklenmektedir. Bu kullanıcı için 2 şifre oluşturulur ve her ikisi de geçerlidir. Bunu
az acr update -n <acrName> --admin-enabled trueile etkinleştirebilirsiniz. Kullanıcı adının genellikle kayıt adı olduğunu unutmayın (veadmindeğildir). - Bir token ile: Kayıt defterine erişmek için belirli bir
scope map(izinler) ile bir token oluşturmak mümkündür. Ardından, token adını kullanıcı adı olarak ve oluşturulan şifrelerden birini kullanarak kayıt defterine kimlik doğrulamak içindocker login -u <registry-name> -p <password> <registry-url>komutunu kullanabilirsiniz. - Bir Hizmet Prensibi ile: Bir hizmet prensibi oluşturmak ve görüntüleri indirmek için
AcrPullgibi bir rol atamak mümkündür. Ardından, SP appId’sini kullanıcı adı olarak ve oluşturulan bir sırrı şifre olarak kullanarak kayıt defterine giriş yapmak mümkün olacaktır.
Kayıt defterine erişim sağlayan bir SP oluşturmak için belgelerden örnek bir betik:
#!/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"
Şifreleme
Sadece Premium SKU görüntüler ve diğer nesneler için veri dinleniminde şifreleme desteği sunar.
Ağ
Sadece Premium SKU özel uç noktalar destekler. Diğerleri sadece genel erişim destekler. Genel bir uç nokta <registry-name>.azurecr.io formatındadır ve özel bir uç nokta <registry-name>.privatelink.azurecr.io formatındadır. Bu nedenle, kayıt defterinin adı tüm Azure genelinde benzersiz olmalıdır.
Microsoft Defender for Cloud
Bu, kayıt defterindeki görüntüleri zafiyetler için taramanıza olanak tanır.
Yumuşak silme
Yumuşak silme özelliği, belirtilen gün sayısı içinde silinmiş bir kayıt defterini geri yüklemenize olanak tanır. Bu özellik varsayılan olarak devre dışıdır.
Webhook’lar
Kayıt defterleri içinde webhook’lar oluşturmak mümkündür. Bu webhook’ta, bir push veya silme işlemi gerçekleştirildiğinde bir isteğin gönderileceği URL’yi belirtmek gerekir. Ayrıca, Webhook’lar etkilenecek depoları (görüntüleri) belirtmek için bir kapsam gösterebilir. Örneğin, ‘foo:*’ ‘foo’ deposu altındaki olayları ifade eder.
Saldırganlar açısından, kayıt defterinde herhangi bir işlem gerçekleştirmeden önce bunu kontrol etmek ve gerekirse geçici olarak kaldırmak ilginçtir, böylece tespit edilmekten kaçınılabilir.
Bağlı kayıt defterleri
Bu, bir kayıt defterinden diğerine, genellikle yerel olarak bulunan bir kayıt defterine görüntüleri yansıtmanıza olanak tanır.
2 modu vardır: Sadece Okuma ve Okuma-Yazma. İlkinde, görüntüler yalnızca kaynak kayıt defterinden çekilir, ikincisinde ise görüntüler kaynak kayıt defterine de itilebilir.
Müşterilerin Azure’dan kayıt defterine erişmesi için, bağlı kayıt defteri kullanıldığında bir token oluşturulur.
Çalışmalar & Görevler
Çalışmalar & Görevler, Azure’da genellikle yerel olarak veya bir CI/CD boru hattında yapmanız gereken konteynerle ilgili eylemleri gerçekleştirmenizi sağlar. Örneğin, kayıt defterinde görüntüleri oluşturabilir, itebilir ve çalıştırabilirsiniz.
Bir konteyneri oluşturmanın ve çalıştırmanın en kolay yolu, normal bir Çalışma kullanmaktır:
# 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
Ancak, bu, saldırganlar açısından çok ilginç olmayan çalışmaları tetikleyecektir çünkü onlara bağlı herhangi bir yönetilen kimlik yoktur.
Ancak, görevler bir sistem ve kullanıcı yönetilen kimliği ile ilişkilendirilebilir. Bu görevler, konteynerde yetki yükseltmek için faydalıdır. Yetki yükseltme bölümünde, görevlerin nasıl kullanılacağını görebilirsiniz.
Önbellek
Önbellek özelliği, harici bir depodan görüntüleri indirmeye ve yeni sürümleri kayıt defterinde saklamaya olanak tanır. Bunun için, Azure Vault’tan kimlik bilgilerini seçerek bazı kimlik bilgileri yapılandırılmış olmalıdır.
Bu, saldırganlar açısından çok ilginçtir çünkü yeterli izinlere sahiplerse harici bir platforma geçiş yapmalarına olanak tanır, harici bir depodan görüntüleri indirmek ve bir önbellek yapılandırmak da kalıcılık mekanizması olarak kullanılabilir.
Sayım
Warning
Kayıt defteri adı bazı büyük harfler içerse bile, ona erişmek için url’de yalnızca küçük harfler kullanmanız çok önemlidir.
# 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>
Kimlik Doğrulaması Olmadan Erişim
Az - Container Registry Unauth
Yetki Yükseltme & Sonrası İstismar
Az - Container Registry Privesc
Referanslar
- 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
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
HackTricks Cloud

