mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-15 14:23:16 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
Для отримання додаткової інформації про Azure App services перегляньте:
|
||||
|
||||
{{#ref}}
|
||||
../az-services/az-app-service.md
|
||||
../az-services/az-app-services.md
|
||||
{{#endref}}
|
||||
|
||||
### Microsoft.Web/sites/publish/Action, Microsoft.Web/sites/basicPublishingCredentialsPolicies/read, Microsoft.Web/sites/config/read, Microsoft.Web/sites/read
|
||||
@@ -94,7 +94,7 @@ az webapp deployment list-publishing-profiles --name <app-name> --resource-group
|
||||
}
|
||||
]
|
||||
```
|
||||
Зверніть увагу, що **ім'я користувача завжди однакове** (за винятком FTP, яке додає назву програми на початку), але **пароль однаковий** для всіх.
|
||||
Зверніть увагу, що **ім'я користувача завжди однакове** (за винятком FTP, де на початку додається назва програми), але **пароль однаковий** для всіх.
|
||||
|
||||
Крім того, **SCM URL є `<app-name>.scm.azurewebsites.net`**.
|
||||
|
||||
@@ -205,20 +205,20 @@ curl -X PUT \
|
||||
```
|
||||
### Microsoft.Web/sites/write, Microsoft.Web/sites/read, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action
|
||||
|
||||
Ці дозволи дозволяють **призначити керовану ідентичність** для служби App, тому якщо служба App була раніше скомпрометована, це дозволить зловмиснику призначити нові керовані ідентичності для служби App і **підвищити привілеї** до них.
|
||||
Ці дозволи дозволяють **призначити керовану ідентичність** для служби App, тому якщо служба App була раніше скомпрометована, це дозволить зловмиснику призначити нові керовані ідентичності для служби App і **ескалювати привілеї** до них.
|
||||
```bash
|
||||
az webapp identity assign --name <app-name> --resource-group <res-group> --identities /subscriptions/<subcripttion-id>/resourceGroups/<res_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managed-identity-name>
|
||||
```
|
||||
### Microsoft.Web/sites/config/list/action
|
||||
|
||||
Ця дозволяє перераховувати **рядки з'єднання** та **appsettings** служби додатків, які можуть містити чутливу інформацію, таку як облікові дані бази даних.
|
||||
Ця дозволяє перераховувати **рядки з'єднання** та **налаштування додатка** служби App, які можуть містити чутливу інформацію, таку як облікові дані бази даних.
|
||||
```bash
|
||||
az webapp config connection-string list --name <name> --resource-group <res-group>
|
||||
az webapp config appsettings list --name <name> --resource-group <res-group>
|
||||
```
|
||||
### Читання налаштованих облікових даних третьої сторони
|
||||
|
||||
Запустивши наступну команду, можна **прочитати облікові дані третьої сторони**, налаштовані в поточному обліковому записі. Зверніть увагу, що якщо, наприклад, деякі облікові дані Github налаштовані для іншого користувача, ви не зможете отримати доступ до токена з іншого.
|
||||
Запустивши наступну команду, можна **прочитати облікові дані третьої сторони**, налаштовані в поточному обліковому записі. Зверніть увагу, що якщо, наприклад, деякі облікові дані Github налаштовані в іншому користувачеві, ви не зможете отримати доступ до токена з іншого.
|
||||
```bash
|
||||
az rest --method GET \
|
||||
--url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"
|
||||
@@ -263,7 +263,7 @@ https://graph.microsoft.com/v1.0/me/drive/root/children
|
||||
- **`Microsoft.Web/sites/config/list/action`**: Потім виконайте `az webapp deployment list-publishing-credentials --name <name> --resource-group <res-group>`
|
||||
|
||||
> [!WARNING]
|
||||
> Зверніть увагу, що наявність дозволу `Microsoft.Web/sites/config/list/action` та облікових даних SCM завжди дозволяє розгорнути веб-додаток (навіть якщо він був налаштований на використання стороннього постачальника), як зазначено в попередньому розділі.
|
||||
> Зверніть увагу, що наявність дозволу `Microsoft.Web/sites/config/list/action` та облікових даних SCM завжди дозволяє розгорнути в веб-додатку (навіть якщо він був налаштований на використання стороннього постачальника), як зазначено в попередньому розділі.
|
||||
|
||||
> [!WARNING]
|
||||
> Зверніть увагу, що наявність наведених нижче дозволів також **дозволяє виконати довільний контейнер**, навіть якщо веб-додаток був налаштований інакше.
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
- **Traditional Consumption Plan**: За замовчуванням безсерверний варіант, де ви **платите лише за обчислювальні ресурси, коли функції виконуються**. Він автоматично масштабується на основі вхідних подій і включає **оптимізації холодного старту**, але не підтримує розгортання контейнерів. Ідеально підходить для **періодичних навантажень**, які потребують автоматичного масштабування.
|
||||
- **Premium Plan**: Призначений для **послідовної продуктивності**, з **попередньо прогрітими працівниками**, щоб усунути холодні старти. Пропонує **подовжені часи виконання, віртуальну мережу** та підтримує **кастомізовані образи Linux**, що робить його ідеальним для **додатків критичного призначення**, які потребують високої продуктивності та розширених функцій.
|
||||
- **Dedicated Plan**: Виконується на виділених віртуальних машинах з **передбачуваним білінгом** і підтримує ручне або автоматичне масштабування. Дозволяє запускати кілька додатків на одному плані, забезпечує **ізоляцію обчислень** і гарантує **безпечний доступ до мережі** через App Service Environments, що робить його ідеальним для **додатків з тривалим виконанням**, які потребують послідовного виділення ресурсів.
|
||||
- **Container Apps**: Дозволяє розгортати **контейнеризовані функціональні додатки** в керованому середовищі, поряд з мікросервісами та API. Підтримує кастомні бібліотеки, міграцію спадкових додатків та **обробку GPU**, усуваючи управління кластерами Kubernetes. Ідеально підходить для **масштабованих контейнеризованих додатків, орієнтованих на події**.
|
||||
- **Container Apps**: Дозволяє розгортати **контейнеризовані функціональні додатки** в керованому середовищі, поряд з мікросервісами та API. Підтримує кастомні бібліотеки, міграцію спадкових додатків та **обробку GPU**, усуваючи управління кластерами Kubernetes. Ідеально підходить для **додатків, орієнтованих на події, масштабованих контейнеризованих додатків**.
|
||||
|
||||
### **Сховища**
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
- Також можливо **надати або обмежити доступ** до Function App з **внутрішньої мережі (VPC)**.
|
||||
|
||||
> [!CAUTION]
|
||||
> Це дуже цікаво з точки зору атакуючого, оскільки може бути можливим **перемикання на внутрішні мережі** з вразливої функції, виставленої в Інтернет.
|
||||
> Це дуже цікаво з точки зору атакуючого, оскільки може бути можливим **перемикання на внутрішні мережі** з вразливої функції, відкритої для Інтернету.
|
||||
|
||||
### **Налаштування Function App та змінні середовища**
|
||||
|
||||
@@ -56,20 +56,20 @@
|
||||
|
||||
### **Керовані ідентичності та метадані**
|
||||
|
||||
Так само, як і [**VMs**](vms/), функції можуть мати **керовані ідентичності** двох типів: системно призначені та призначені користувачем.
|
||||
Так само, як і [**VMs**](vms/index.html), функції можуть мати **керовані ідентичності** двох типів: системно призначені та призначені користувачем.
|
||||
|
||||
**Системно призначена** ідентичність буде керованою ідентичністю, яку **тільки функція**, якій вона призначена, зможе використовувати, тоді як **призначені користувачем** керовані ідентичності - це керовані ідентичності, які **будь-яка інша служба Azure зможе використовувати**.
|
||||
|
||||
> [!NOTE]
|
||||
> Так само, як і в [**VMs**](vms/), функції можуть мати **1 системно призначену** керовану ідентичність і **кілька призначених користувачем**, тому завжди важливо намагатися знайти всі з них, якщо ви компрометуєте функцію, оскільки ви можете підвищити привілеї до кількох керованих ідентичностей з однієї функції.
|
||||
> Так само, як і в [**VMs**](vms/index.html), функції можуть мати **1 системно призначену** керовану ідентичність і **кілька призначених користувачем**, тому завжди важливо намагатися знайти всі з них, якщо ви компрометуєте функцію, оскільки ви можете підвищити привілеї до кількох керованих ідентичностей з однієї функції.
|
||||
>
|
||||
> Якщо не використовується системно призначена керована ідентичність, але одна або кілька призначених користувачем ідентичностей прикріплені до функції, за замовчуванням ви не зможете отримати жоден токен.
|
||||
> Якщо не використовується системно призначена ідентичність, але одна або кілька призначених користувачем ідентичностей прикріплені до функції, за замовчуванням ви не зможете отримати жоден токен.
|
||||
|
||||
Можливо використовувати [**PEASS скрипти**](https://github.com/peass-ng/PEASS-ng) для отримання токенів з за замовчуванням керованої ідентичності з кінцевої точки метаданих. Або ви можете отримати їх **вручну**, як пояснено в:
|
||||
|
||||
{% embed url="https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#azure-vm" %}
|
||||
|
||||
Зверніть увагу, що вам потрібно знайти спосіб **перевірити всі керовані ідентичності, які функція має прикріпленими**, оскільки якщо ви цього не вкажете, кінцева точка метаданих **використовуватиме лише за замовчуванням** (перевірте попереднє посилання для отримання додаткової інформації).
|
||||
Зверніть увагу, що вам потрібно знайти спосіб **перевірити всі керовані ідентичності, прикріплені до функції**, оскільки якщо ви цього не вкажете, кінцева точка метаданих **використовуватиме лише за замовчуванням** (перевірте попереднє посилання для отримання додаткової інформації).
|
||||
|
||||
## Ключі доступу
|
||||
|
||||
@@ -84,9 +84,9 @@
|
||||
|
||||
**Типи ключів:**
|
||||
|
||||
- **Ключі функцій:** Ключі функцій можуть бути або за замовчуванням, або визначеними користувачем і призначені для надання доступу виключно до **конкретних кінцевих точок функцій** в рамках Function App, що дозволяє більш детальний доступ до кінцевих точок.
|
||||
- **Ключі функцій:** Ключі функцій можуть бути або за замовчуванням, або визначеними користувачем і призначені для надання доступу виключно до **конкретних кінцевих точок функцій** в рамках Function App, що дозволяє більш детально контролювати доступ до кінцевих точок.
|
||||
- **Ключі хоста:** Ключі хоста, які також можуть бути за замовчуванням або визначеними користувачем, надають доступ до **всіх кінцевих точок функцій в рамках Function App з рівнем доступу FUNCTION**.
|
||||
- **Ключ майстра:** Ключ майстра (`_master`) слугує адміністративним ключем, який пропонує підвищені права, включаючи доступ до всіх кінцевих точок функцій (включаючи рівень доступу ADMIN). Цей **ключ не може бути відкликаний.**
|
||||
- **Ключ майстра:** Ключ майстра (`_master`) слугує адміністративним ключем, який пропонує підвищені права доступу, включаючи доступ до всіх кінцевих точок функцій (включаючи рівень доступу ADMIN). Цей **ключ не може бути відкликаний.**
|
||||
- **Системні ключі:** Системні ключі **керуються конкретними розширеннями** і потрібні для доступу до кінцевих точок вебхуків, які використовуються внутрішніми компонентами. Прикладами є тригер Event Grid та Durable Functions, які використовують системні ключі для безпечної взаємодії зі своїми відповідними API.
|
||||
|
||||
> [!TIP]
|
||||
@@ -94,12 +94,12 @@
|
||||
>
|
||||
> `https://<function_uniq_name>.azurewebsites.net/api/<endpoint_name>?code=<access_key>`
|
||||
|
||||
### Базова аутентифікація
|
||||
### Основна аутентифікація
|
||||
|
||||
Так само, як і в App Services, функції також підтримують базову аутентифікацію для підключення до **SCM** та **FTP** для розгортання коду, використовуючи **ім'я користувача та пароль у URL**, наданому Azure. Більше інформації про це в:
|
||||
Так само, як і в App Services, функції також підтримують основну аутентифікацію для підключення до **SCM** та **FTP** для розгортання коду, використовуючи **ім'я користувача та пароль у URL**, наданому Azure. Більше інформації про це в:
|
||||
|
||||
{{#ref}}
|
||||
az-app-service.md
|
||||
az-app-services.md
|
||||
{{#endref}}
|
||||
|
||||
### Розгортання на основі Github
|
||||
@@ -192,7 +192,7 @@ package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
|
||||
```
|
||||
</details>
|
||||
|
||||
Більше того, **Managed Identity** також створюється, щоб Github Action з репозиторію міг увійти в Azure з його допомогою. Це робиться шляхом генерації Федеративних облікових даних через **Managed Identity**, що дозволяє **Issuer** `https://token.actions.githubusercontent.com` та **Subject Identifier** `repo:<org-name>/<repo-name>:ref:refs/heads/<branch-name>`.
|
||||
Більше того, **Managed Identity** також створюється, щоб Github Action з репозиторію міг увійти в Azure з його допомогою. Це робиться шляхом генерації федеративних облікових даних через **Managed Identity**, що дозволяє **Issuer** `https://token.actions.githubusercontent.com` та **Subject Identifier** `repo:<org-name>/<repo-name>:ref:refs/heads/<branch-name>`.
|
||||
|
||||
> [!CAUTION]
|
||||
> Отже, будь-хто, хто скомпрометує цей репозиторій, зможе скомпрометувати функцію та пов'язані з нею Managed Identities.
|
||||
|
||||
Reference in New Issue
Block a user