mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-14 22:03:11 -08:00
Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation
This commit is contained in:
@@ -10,11 +10,11 @@
|
||||
../az-services/az-automation-accounts.md
|
||||
{{#endref}}
|
||||
|
||||
### Hybrid Workers
|
||||
### Hybrid Workers Group
|
||||
|
||||
Пам'ятайте, що якщо зловмисник зможе виконати довільний runbook (довільний код) у гібридному робітнику, він **перейде до місця розташування VM**. Це може бути локальна машина, VPC іншого хмари або навіть Azure VM.
|
||||
|
||||
Більше того, якщо гібридний робітник працює в Azure з іншими прикріпленими керованими ідентичностями, runbook зможе отримати доступ до **керованої ідентичності runbook та всіх керованих ідентичностей VM з сервісу метаданих**.
|
||||
Більше того, якщо гібридний робітник працює в Azure з іншими прикріпленими керованими ідентичностями, runbook зможе отримати доступ до **керованої ідентичності runbook та всіх керованих ідентичностей VM з метаданих сервісу**.
|
||||
|
||||
> [!TIP]
|
||||
> Пам'ятайте, що **сервіс метаданих** має іншу URL-адресу (**`http://169.254.169.254`**), ніж сервіс, з якого отримують токен керованих ідентичностей облікового запису автоматизації (**`IDENTITY_ENDPOINT`**).
|
||||
@@ -36,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 <res-group> \
|
||||
@@ -80,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
|
||||
@@ -194,9 +194,9 @@ az automation source-control create \
|
||||
--token-type PersonalAccessToken \
|
||||
--access-token github_pat_11AEDCVZ<rest-of-the-token>
|
||||
```
|
||||
Це автоматично імпортує runbooks з репозиторію Github до Облікового запису автоматизації, і з деякими іншими дозволами для їх запуску буде **можливо підвищити привілеї**.
|
||||
Це автоматично імпортує runbooks з репозиторію Github до Облікового запису автоматизації, і з деякими іншими дозволами для їх запуску **можливо підвищити привілеї**.
|
||||
|
||||
Більше того, пам'ятайте, що для роботи контролю версій в Облікових записах автоматизації він повинен мати керовану ідентичність з роллю **`Contributor`**, і якщо це керована користувачем ідентичність, ідентифікатор клієнта MI повинен бути вказаний у змінній **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**.
|
||||
Більше того, пам'ятайте, що для роботи контролю версій в Облікових записах автоматизації він повинен мати керовану ідентичність з роллю **`Contributor`**, і якщо це ідентичність, керована користувачем, ідентифікатор клієнта MI повинен бути вказаний у змінній **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**.
|
||||
|
||||
> [!TIP]
|
||||
> Зверніть увагу, що неможливо змінити URL репозиторію контролю версій після його створення.
|
||||
@@ -241,7 +241,7 @@ Compress-Archive -Path .\reverse_shell_config.ps1 -DestinationPath .\reverse_she
|
||||
```
|
||||
- Крок 3 — Встановлення контексту зберігання та завантаження
|
||||
|
||||
Стиснутий файл конфігурації завантажується в заздалегідь визначений контейнер Azure Storage, azure-pentest, за допомогою cmdlet Set-AzStorageBlobContent від Azure.
|
||||
Стиснутий файл конфігурації завантажується в заздалегідь визначений контейнер Azure Storage, azure-pentest, за допомогою cmdlet Set-AzStorageBlobContent Azure.
|
||||
```powershell
|
||||
Set-AzStorageBlobContent -File "reverse_shell_config.ps1.zip" -Container "azure-pentest" -Blob "reverse_shell_config.ps1.zip" -Context $ctx
|
||||
```
|
||||
@@ -251,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 — Хостинг корисного навантаження та налаштування прослуховувача
|
||||
|
||||
|
||||
@@ -8,19 +8,17 @@ Azure Automation Accounts - це хмарні сервіси в Microsoft Azure,
|
||||
|
||||
### Settings
|
||||
|
||||
- **Credentials**: Пароль доступний лише в рамках runbook всередині облікового запису автоматизації, вони використовуються для **безпечного зберігання імен користувачів та паролів**.
|
||||
- **Variables**: Використовуються для зберігання **даних конфігурації**, які можуть бути використані в runbooks. Це також можуть бути чутливі дані, такі як API ключі. Якщо змінна **зберігається в зашифрованому вигляді**, вона доступна лише в рамках runbook всередині облікового запису автоматизації.
|
||||
- **Credentials**: Пароль доступний лише в рамках runbook всередині облікового запису автоматизації, вони використовуються для **зберігання імен користувачів та паролів у безпечному вигляді**.
|
||||
- **Variables**: Використовуються для зберігання **даних конфігурації**, які можуть бути використані в runbooks. Це також може бути чутлива інформація, така як API ключі. Якщо змінна **зберігається в зашифрованому вигляді**, вона доступна лише в рамках runbook всередині облікового запису автоматизації.
|
||||
- **Certificates**: Використовуються для зберігання **сертифікатів**, які можуть бути використані в runbooks.
|
||||
- **Connections**: Використовуються для зберігання **інформації про з'єднання** з зовнішніми сервісами. Це може містити **чутливу інформацію**.
|
||||
- **Network Access**: Може бути встановлено на **публічний** або **приватний**.
|
||||
|
||||
## Runbooks & Jobs
|
||||
### Runbooks & Jobs
|
||||
|
||||
Runbook в Azure Automation - це **скрипт, який автоматично виконує завдання** у вашому хмарному середовищі. Runbooks можуть бути написані на PowerShell, Python або графічних редакторах. Вони допомагають автоматизувати адміністративні завдання, такі як управління ВМ, патчинг або перевірки відповідності.
|
||||
|
||||
У **коді**, розташованому всередині **Runbooks**, можуть міститися **чутливі дані** (такі як креденціали).
|
||||
|
||||
Перейдіть до `Automation Accounts` --> `<Select Automation Account>` --> `Runbooks/Jobs/Hybrid worker groups/Watcher tasks/credentials/variables/certificates/connections`
|
||||
У **коді**, розташованому всередині **Runbooks**, можуть міститися **чутливі дані** (такі як облікові дані).
|
||||
|
||||
**Job - це екземпляр виконання Runbook**. Коли ви запускаєте Runbook, створюється Job для відстеження цього виконання. Кожен job включає:
|
||||
|
||||
@@ -35,18 +33,18 @@ Job містить **вихідні дані** виконання **Runbook**.
|
||||
Існує 3 основні способи виконання Runbook:
|
||||
|
||||
- **Schedules**: Використовуються для **тригера** Runbooks у **вказаний час** або **інтервал**.
|
||||
- **Webhooks**: Це **HTTP кінцеві точки**, які можуть бути використані для **тригера** Runbooks з **зовнішніх сервісів**. Зверніть увагу, що URL вебхука **не видимий** після створення.
|
||||
- **Webhooks**: Це **HTTP кінцеві точки**, які можуть бути використані для **тригера** Runbooks з **зовнішніх сервісів**. Зверніть увагу, що URL вебхука **не видно** після створення.
|
||||
- **Manual Trigger**: Ви можете **вручну запустити** Runbook з Azure Portal та з CLI.
|
||||
|
||||
### Source Control
|
||||
|
||||
Дозволяє імпортувати Runbooks з **Github, Azure Devops (Git) та Azure Devops (TFVC)**. Можна вказати, щоб опублікувати Runbooks з репозиторію в обліковий запис автоматизації Azure, а також можна вказати, щоб **синхронізувати зміни з репозиторію** в обліковий запис автоматизації Azure.
|
||||
Це дозволяє імпортувати Runbooks з **Github, Azure Devops (Git) та Azure Devops (TFVC)**. Можна вказати, щоб опублікувати Runbooks з репозиторію в обліковий запис автоматизації Azure, а також можна вказати, щоб **синхронізувати зміни з репозиторію** в обліковий запис автоматизації Azure.
|
||||
|
||||
Коли синхронізація увімкнена, у **репозиторії Github створюється вебхук** для тригера синхронізації щоразу, коли відбувається подія push. Приклад URL вебхука: `https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-automation.net/webhooks?token=DRjQyFiOrUtz%2fw7o23XbDpOlTe1%2bUqPQm4pQH2WBfJg%3d`
|
||||
|
||||
Зверніть увагу, що ці вебхуки **не будуть видимі** при переліку вебхуків у пов'язаних runbooks до репозиторію Github. Також зверніть увагу, що **не можливо змінити URL репозиторію** джерела контролю після його створення.
|
||||
Зверніть увагу, що ці вебхуки **не будуть видимі** при переліку вебхуків у пов'язаних runbooks до репозиторію Github. Також зверніть увагу, що **не можна змінити URL репозиторію** джерела контролю після його створення.
|
||||
|
||||
Для того, щоб налаштований контроль джерела працював, **Azure Automation Account** повинен мати керовану ідентичність (системну або користувацьку) з роллю **`Contributor`**. Більше того, щоб призначити користувацьку керовану ідентичність обліковому запису автоматизації, потрібно вказати ідентифікатор клієнта користувацької MI в змінній **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**.
|
||||
Для того, щоб налаштований контроль джерела працював, **Azure Automation Account** повинен мати керовану ідентичність (системну або користувацьку) з роллю **`Contributor`**. Більше того, щоб призначити користувацьку керовану ідентичність обліковому запису автоматизації, потрібно вказати ідентифікатор клієнта користувацької MI у змінній **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**.
|
||||
|
||||
### Runtime Environments
|
||||
|
||||
@@ -59,20 +57,20 @@ Job містить **вихідні дані** виконання **Runbook**.
|
||||
- **Python 3.8**
|
||||
- **Python 2.7**
|
||||
|
||||
Однак також можливо **створити свої власні середовища**, використовуючи одне з цих як основу. У випадку з Python можливо завантажити `.whl` пакети в середовище, яке буде використовуватися. У випадку з PowerShell можливо завантажити `.zip` пакети з модулями, які потрібно мати в середовищі виконання.
|
||||
Однак також можливо **створити свої власні середовища**, використовуючи одне з цих як основу. У випадку з Python можливо завантажити пакети `.whl` в середовище, яке буде використовуватися. У випадку з PowerShell можливо завантажити пакети `.zip` з модулями, які потрібно мати в середовищі виконання.
|
||||
|
||||
### Hybrid Worker Groups
|
||||
|
||||
В Azure Automation стандартним середовищем виконання для runbooks є **Azure Sandbox**, хмарна платформа, керована Azure, що підходить для завдань, пов'язаних з ресурсами Azure. Однак цей пісочниця має обмеження, такі як обмежений доступ до локальних ресурсів та обмеження на час виконання та використання ресурсів. Щоб подолати ці обмеження, використовуються Групи гібридних працівників. Група гібридних працівників складається з **одного або кількох Гібридних працівників Runbook, встановлених на ваших власних машинах**, будь то локально, в інших хмарних середовищах або ВМ Azure. Ця конфігурація дозволяє runbooks виконуватися безпосередньо на цих машинах, надаючи прямий доступ до локальних ресурсів, можливість виконувати триваліші та більш ресурсомісткі завдання, а також гнучкість для взаємодії з середовищами, які виходять за межі безпосереднього доступу Azure.
|
||||
В Azure Automation стандартним середовищем виконання для runbooks є **Azure Sandbox**, хмарна платформа, керована Azure, що підходить для завдань, пов'язаних з ресурсами Azure. Однак цей пісочниця має обмеження, такі як обмежений доступ до локальних ресурсів та обмеження на час виконання та використання ресурсів. Щоб подолати ці обмеження, використовуються Групи гібридних працівників. Група гібридних працівників складається з **одного або кількох Гібридних працівників Runbook, встановлених на ваших власних машинах**, будь то локально, в інших хмарних середовищах або ВМ Azure. Ця конфігурація дозволяє runbooks виконуватися безпосередньо на цих машинах, надаючи прямий доступ до локальних ресурсів, можливість виконувати довші та більш ресурсомісткі завдання, а також гнучкість для взаємодії з середовищами, які виходять за межі безпосереднього доступу Azure.
|
||||
|
||||
Коли створюється група гібридних працівників, потрібно вказати **креденціали** для використання. Є 2 варіанти:
|
||||
Коли створюється група гібридних працівників, потрібно вказати **облікові дані** для використання. Є 2 варіанти:
|
||||
|
||||
- **Default credentials**: Вам не потрібно надавати креденціали, і runbooks будуть виконуватися всередині ВМ як **System**.
|
||||
- **Specific credentials**: Вам потрібно вказати ім'я об'єкта креденціалів всередині облікового запису автоматизації, який буде використовуватися для виконання **runbooks всередині ВМ**. Тому в цьому випадку може бути можливим **викрасти дійсні креденціали** для ВМ.
|
||||
- **Default credentials**: Вам не потрібно надавати облікові дані, і runbooks будуть виконуватися всередині ВМ як **System**.
|
||||
- **Specific credentials**: Вам потрібно надати ім'я об'єкта облікових даних всередині облікового запису автоматизації, який буде використовуватися для виконання **runbooks всередині ВМ**. Тому в цьому випадку може бути можливим **викрадення дійсних облікових даних** для ВМ.
|
||||
|
||||
Отже, якщо ви можете вибрати виконання **Runbook** в **Windows Hybrid Worker**, ви будете виконувати **произвольні команди** всередині зовнішньої машини як **System** (гарна техніка повороту).
|
||||
Отже, якщо ви можете вибрати виконання **Runbook** у **Гібридному працівнику**, ви будете виконувати **произвольні команди** всередині зовнішньої машини як **System** (гарна техніка повороту).
|
||||
|
||||
Більше того, якщо гібридний працівник працює в Azure з іншими прикріпленими керованими ідентичностями, runbook зможе отримати доступ до **керованої ідентичності runbook та всіх керованих ідентичностей ВМ з сервісу метаданих**.
|
||||
Більше того, якщо гібридний працівник працює в Azure з іншими прикріпленими керованими ідентичностями, runbook зможе отримати доступ до **керованої ідентичності runbook та всіх керованих ідентичностей ВМ з метаданих сервісу**.
|
||||
|
||||
> [!TIP]
|
||||
> Пам'ятайте, що **сервіс метаданих** має інший URL (**`http://169.254.169.254`**), ніж сервіс, з якого отримують токен керованих ідентичностей облікового запису автоматизації (**`IDENTITY_ENDPOINT`**).
|
||||
@@ -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"
|
||||
@@ -228,7 +226,7 @@ Get-AzAutomationAccount | Get-AzAutomationPython3Package
|
||||
# List hybrid workers
|
||||
Get-AzAutomationHybridWorkerGroup -AutomationAccountName <AUTOMATION-ACCOUNT> -ResourceGroupName <RG-NAME>
|
||||
```
|
||||
## Підвищення привілеїв та постексплуатація
|
||||
## Підвищення Привілеїв та Постексплуатація
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-automation-accounts-privesc.md
|
||||
|
||||
Reference in New Issue
Block a user