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

This commit is contained in:
Translator
2025-01-10 17:42:13 +00:00
parent 59291779b0
commit 493ec5dee1
2 changed files with 23 additions and 25 deletions
@@ -10,14 +10,14 @@ Aby uzyskać więcej informacji, sprawdź:
../az-services/az-automation-accounts.md
{{#endref}}
### Hybrid Workers
### Hybrid Workers Group
Pamiętaj, że jeśli w jakiś sposób atakujący może wykonać dowolny runbook (dowolny kod) w hybrydowym workerze, to **przejdzie do lokalizacji VM**. Może to być maszyna lokalna, VPC innej chmury lub nawet VM w Azure.
Ponadto, jeśli hybrydowy worker działa w Azure z innymi przypisanymi tożsamościami zarządzanymi, runbook będzie mógł uzyskać dostęp do **tożsamości zarządzanej runbooka oraz wszystkich tożsamości zarządzanych VM z usługi metadanych**.
Ponadto, jeśli hybrydowy worker działa w Azure z innymi przypisanymi tożsamościami zarządzanymi, runbook będzie miał dostęp do **tożsamości zarządzanej runbooka oraz wszystkich tożsamości zarządzanych VM z usługi metadanych**.
> [!TIP]
> Pamiętaj, że **usługa metadanych** ma inny adres URL (**`http://169.254.169.254`**) niż usługa, z której uzyskuje się token tożsamości zarządzanej konta automatyzacji (**`IDENTITY_ENDPOINT`**).
> Pamiętaj, że **usługa metadanych** ma inny adres URL (**`http://169.254.169.254`**) niż usługa, z której pobierany jest token tożsamości zarządzanej konta automatyzacji (**`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`)
@@ -38,7 +38,7 @@ $creds.GetNetworkCredential().password'
```
Zauważ, jak poprzedni skrypt może być użyty do **wycieku nazwy użytkownika i hasła** poświadczenia oraz wartości **zaszyfrowanej zmiennej** przechowywanej w Koncie Automatyzacji.
Uprawnienie **`Microsoft.Automation/automationAccounts/runbooks/publish/action`** pozwala użytkownikowi na publikowanie Runbooka w Koncie Automatyzacji, aby zmiany zostały zastosowane:
Uprawnienie **`Microsoft.Automation/automationAccounts/runbooks/publish/action`** pozwala użytkownikowi na publikację Runbooka w Koncie Automatyzacji, aby zmiany zostały zastosowane:
```bash
az automation runbook publish \
--resource-group <res-group> \
@@ -58,13 +58,13 @@ Uprawnienie **`Microsoft.Automation/automationAccounts/jobs/output/read`** pozwa
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"
```
Jeśli nie ma utworzonych Runbooków, lub chcesz stworzyć nowy, będziesz potrzebować **uprawnień `Microsoft.Resources/subscriptions/resourcegroups/read` oraz `Microsoft.Automation/automationAccounts/runbooks/write`** aby to zrobić za pomocą:
Jeśli nie ma utworzonych Runbooków lub chcesz utworzyć nowy, będziesz potrzebować **uprawnień `Microsoft.Resources/subscriptions/resourcegroups/read` oraz `Microsoft.Automation/automationAccounts/runbooks/write`** aby to zrobić za pomocą:
```bash
az automation runbook create --automation-account-name <account-name> --resource-group <res-group> --name <runbook-name> --type PowerShell
```
### `Microsoft.Automation/automationAccounts/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
To uprawnienie pozwala użytkownikowi na **przypisanie zarządzanej tożsamości użytkownika** do Konta Automatyzacji za pomocą:
To uprawnienie pozwala użytkownikowi na **przypisanie tożsamości zarządzanej przez użytkownika** do Konta Automatyzacji za pomocą:
```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" \
@@ -129,7 +129,7 @@ az rest --method PUT \
Dzięki uprawnieniu **`Microsoft.Automation/automationAccounts/webhooks/write`** możliwe jest utworzenie nowego Webhooka dla Runbooka w ramach konta Automatyzacji za pomocą następującego polecenia.
Zauważ, że będziesz musi **wskazać URI webhooka** z tokenem do użycia.
Zauważ, że musisz **wskazać URI webhooka** z tokenem do użycia.
```bash
az rest --method PUT \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automantion-account-name>/webhooks/<webhook-name>?api-version=2018-06-30" \
@@ -217,23 +217,23 @@ az rest --method PUT \
}
}'
```
### Niestandardowe Środowiska Uruchomieniowe
### Custom Runtime Environments
Jeśli konto automatyzacji używa niestandardowego środowiska uruchomieniowego, może być możliwe nadpisanie niestandardowego pakietu środowiska złośliwym kodem (takim jak **backdoor**). W ten sposób, za każdym razem, gdy uruchamiany jest runbook korzystający z tego niestandardowego środowiska, a niestandardowy pakiet jest ładowany, złośliwy kod zostanie wykonany.
Jeśli konto automatyzacji używa niestandardowego środowiska uruchomieniowego, może być możliwe nadpisanie niestandardowego pakietu środowiska uruchomieniowego złośliwym kodem (takim jak **backdoor**). W ten sposób, za każdym razem, gdy uruchamiany jest runbook korzystający z tego niestandardowego środowiska, a niestandardowy pakiet jest ładowany, złośliwy kod zostanie wykonany.
### Kompromitacja Konfiguracji Stanu
### Compromising State Configuration
**Sprawdź pełny post w:** [**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)
- Krok 1 — Utwórz Pliki
- Krok 1 — Utwórz pliki
**Wymagane Pliki:** Potrzebne są dwa skrypty PowerShell:
**Wymagane pliki:** Potrzebne są dwa skrypty PowerShell:
1. `reverse_shell_config.ps1`: Plik Desired State Configuration (DSC), który pobiera i wykonuje ładunek. Można go uzyskać z [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1).
2. `push_reverse_shell_config.ps1`: Skrypt do publikacji konfiguracji na VM, dostępny na [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/push_reverse_shell_config.ps1).
**Dostosowanie:** Zmienne i parametry w tych plikach muszą być dostosowane do specyficznego środowiska użytkownika, w tym nazwy zasobów, ścieżki plików oraz identyfikatory serwera/ładunku.
- Krok 2 — Spakuj Plik Konfiguracyjny
- Krok 2 — Spakuj plik konfiguracyjny
Plik `reverse_shell_config.ps1` jest kompresowany do pliku `.zip`, co czyni go gotowym do transferu do Azure Storage Account.
```powershell
@@ -4,7 +4,7 @@
## Podstawowe Informacje
Konta Automatyzacji Azure to usługi w chmurze w Microsoft Azure, które pomagają **automatyzować zadania** takie jak zarządzanie zasobami, konfiguracja i aktualizacje w środowiskach Azure i lokalnych. Oferują **Runbooki** (skrypty do automatyzacji, które są wykonywane), **harmonogramy** oraz **grupy pracowników hybrydowych** do uruchamiania automatycznych **zadań**, umożliwiając infrastrukturę jako kod (IaC) oraz automatyzację procesów w celu poprawy efektywności i spójności w zarządzaniu zasobami w chmurze.
Konta Automatyzacji Azure to usługi w chmurze w Microsoft Azure, które pomagają **automatyzować zadania** takie jak zarządzanie zasobami, konfiguracja i aktualizacje w środowiskach Azure i lokalnych. Oferują **Runbooki** (skrypty do automatyzacji, które są wykonywane), **harmonogramy** oraz **grupy pracowników hybrydowych** do uruchamiania automatycznych **zadań**, umożliwiając infrastrukturę jako kod (IaC) oraz automatyzację procesów w celu poprawy efektywności i spójności w zarządzaniu zasobami chmurowymi.
### Ustawienia
@@ -14,17 +14,15 @@ Konta Automatyzacji Azure to usługi w chmurze w Microsoft Azure, które pomagaj
- **Połączenia**: Służą do przechowywania **informacji o połączeniach** z zewnętrznymi usługami. Mogą zawierać **wrażliwe informacje**.
- **Dostęp do sieci**: Może być ustawiony na **publiczny** lub **prywatny**.
## Runbooki i Zadania
### Runbooki i Zadania
Runbook w Azure Automation to **skrypt, który automatycznie wykonuje zadania** w Twoim środowisku chmurowym. Runbooki mogą być pisane w PowerShell, Pythonie lub edytorach graficznych. Pomagają automatyzować zadania administracyjne, takie jak zarządzanie VM, łatanie lub kontrole zgodności.
W **kodzie** znajdującym się w **Runbookach** mogą znajdować się **wrażliwe informacje** (takie jak poświadczenia).
Przejdź do `Konta Automatyzacji` --> `<Wybierz Konto Automatyzacji>` --> `Runbooki/Zadania/Grupy pracowników hybrydowych/Zadania obserwatora/poświadczenia/zmienne/certyfikaty/połączenia`
**Zadanie to instancja wykonania Runbooka**. Gdy uruchamiasz Runbook, tworzone jest Zadanie, aby śledzić to wykonanie. Każde zadanie zawiera:
**Zadanie to instancja wykonania Runbooka**. Kiedy uruchamiasz Runbook, tworzone jest Zadanie, aby śledzić to wykonanie. Każde zadanie zawiera:
- **Status**: W kolejce, W trakcie, Zakończone, Nieudane, Wstrzymane.
- **Status**: W kolejce, W trakcie, Zakończone, Niepowodzenie, Wstrzymane.
- **Wynik**: Rezultat wykonania Runbooka.
- **Czas rozpoczęcia i zakończenia**: Kiedy zadanie się rozpoczęło i zakończyło.
@@ -40,7 +38,7 @@ Istnieją 3 główne sposoby na wykonanie Runbooka:
### Kontrola Źródła
Umożliwia importowanie Runbooków z **Github, Azure Devops (Git) i Azure Devops (TFVC)**. Możliwe jest wskazanie, aby publikować Runbooki repozytorium do konta automatyzacji Azure, a także możliwe jest wskazanie, aby **synchronizować zmiany z repozytorium** do konta automatyzacji Azure.
Umożliwia importowanie Runbooków z **Github, Azure Devops (Git) i Azure Devops (TFVC)**. Możliwe jest wskazanie, aby publikować Runbooki z repozytorium do konta automatyzacji Azure, a także możliwe jest wskazanie, aby **synchronizować zmiany z repozytorium** do konta automatyzacji Azure.
Gdy synchronizacja jest włączona, w **repozytorium Github tworzony jest webhook** do wyzwalania synchronizacji za każdym razem, gdy wystąpi zdarzenie push. Przykład adresu URL webhooka: `https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-automation.net/webhooks?token=DRjQyFiOrUtz%2fw7o23XbDpOlTe1%2bUqPQm4pQH2WBfJg%3d`
@@ -59,18 +57,18 @@ Podczas tworzenia Runbooka można wybrać środowisko uruchomieniowe. Domyślnie
- **Python 3.8**
- **Python 2.7**
Jednak możliwe jest również **tworzenie własnych środowisk**, używając jednego z tych jako bazy. W przypadku Pythona możliwe jest przesyłanie pakietów `.whl` do środowiska, które będą używane. W przypadku PowerShell możliwe jest przesyłanie pakietów `.zip` z modułami, które mają być dostępne w czasie uruchomienia.
Jednak możliwe jest również **utworzenie własnych środowisk**, używając jednego z tych jako bazy. W przypadku Pythona możliwe jest przesyłanie pakietów `.whl` do środowiska, które będą używane. W przypadku PowerShella możliwe jest przesyłanie pakietów `.zip` z modułami, które mają być dostępne w czasie uruchomienia.
### Grupy Pracowników Hybrydowych
W Azure Automation domyślnym środowiskiem wykonawczym dla runbooków jest **Azure Sandbox**, platforma w chmurze zarządzana przez Azure, odpowiednia do zadań związanych z zasobami Azure. Jednak to środowisko ma ograniczenia, takie jak ograniczony dostęp do zasobów lokalnych oraz ograniczenia dotyczące czasu wykonania i wykorzystania zasobów. Aby przezwyciężyć te ograniczenia, stosowane są Grupy Pracowników Hybrydowych. Grupa Pracowników Hybrydowych składa się z **jednego lub więcej Hybrydowych Pracowników Runbooków zainstalowanych na Twoich własnych maszynach**, czy to lokalnych, w innych środowiskach chmurowych, czy na VM Azure. Taka konfiguracja pozwala na wykonywanie runbooków bezpośrednio na tych maszynach, zapewniając bezpośredni dostęp do lokalnych zasobów, możliwość uruchamiania dłuższych i bardziej zasobożernych zadań oraz elastyczność w interakcji z środowiskami poza bezpośrednim zasięgiem Azure.
W Azure Automation domyślnym środowiskiem wykonawczym dla runbooków jest **Azure Sandbox**, platforma chmurowa zarządzana przez Azure, odpowiednia do zadań związanych z zasobami Azure. Jednak to środowisko ma ograniczenia, takie jak ograniczony dostęp do zasobów lokalnych oraz ograniczenia dotyczące czasu wykonania i wykorzystania zasobów. Aby przezwyciężyć te ograniczenia, stosuje s Grupy Pracowników Hybrydowych. Grupa Pracowników Hybrydowych składa się z **jednego lub więcej Hybrydowych Pracowników Runbooków zainstalowanych na Twoich własnych maszynach**, czy to lokalnych, w innych środowiskach chmurowych, czy na VM Azure. Taka konfiguracja pozwala na wykonywanie runbooków bezpośrednio na tych maszynach, zapewniając bezpośredni dostęp do lokalnych zasobów, możliwość uruchamiania dłuższych i bardziej zasobożernych zadań oraz elastyczność w interakcji z środowiskami poza bezpośrednim zasięgiem Azure.
Gdy tworzona jest grupa pracowników hybrydowych, należy wskazać **poświadczenia** do użycia. Istnieją 2 opcje:
- **Domyślne poświadczenia**: Nie musisz podawać poświadczeń, a runbooki będą wykonywane wewnątrz VM jako **System**.
- **Specyficzne poświadczenia**: Musisz podać nazwę obiektu poświadczeń w koncie automatyzacji, które będą używane do wykonywania **runbooków wewnątrz VM**. W związku z tym w tym przypadku możliwe jest **kradzież ważnych poświadczeń** dla VM.
Dlatego, jeśli możesz wybrać uruchomienie **Runbooka** w **Windows Hybrid Worker**, będziesz wykonywać **dowolne polecenia** wewnątrz zewnętrznej maszyny jako **System** (fajna technika pivotowania).
Dlatego, jeśli możesz wybrać uruchomienie **Runbooka** w **Hybrydowym Pracowniku**, będziesz wykonywać **dowolne polecenia** wewnątrz zewnętrznej maszyny jako **System** (fajna technika pivotowania).
Ponadto, jeśli hybrydowy pracownik działa w Azure z innymi zarządzanymi tożsamościami, runbook będzie mógł uzyskać dostęp do **zarządzanej tożsamości runbooka oraz wszystkich zarządzanych tożsamości VM z usługi metadanych**.
@@ -80,7 +78,7 @@ Ponadto, jeśli hybrydowy pracownik działa w Azure z innymi zarządzanymi tożs
### Konfiguracja Stanu (SC)
>[!WARNING]
> Jak wskazano w [dokumentacji](https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview), Konfiguracja Stanu Automatyzacji Azure zostanie wycofana 30 września 2027 roku i zastąpiona przez [Azure Machine Configuration](https://learn.microsoft.com/en-us/azure/governance/machine-configuration/overview).
> Jak wskazano w [dokumentacji](https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview), Konfiguracja Stanu Automatyzacji Azure zostanie wycofana 30 września 2027 roku i zastąpiona przez [Konfigurację Maszyn Azure](https://learn.microsoft.com/en-us/azure/governance/machine-configuration/overview).
Konta Automatyzacji również wspierają **Konfigurację Stanu (SC)**, która jest funkcją pomagającą w **konfigurowaniu** i **utrzymywaniu** **stanu** Twoich VM. Możliwe jest **tworzenie** i **stosowanie** konfiguracji DSC do **maszyn Windows** i **Linux**.
@@ -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"