Az - Logic Apps

Reading time: 14 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks

Основна інформація

Azure Logic Apps - це хмарний сервіс, наданий Microsoft Azure, який дозволяє розробникам створювати та виконувати робочі процеси, що інтегрують різні сервіси, джерела даних та додатки. Ці робочі процеси призначені для автоматизації бізнес-процесів, оркестрації завдань та виконання інтеграцій даних між різними платформами.

Logic Apps надає візуальний конструктор для створення робочих процесів з широким спектром готових конекторів, що спрощує підключення та взаємодію з різними сервісами, такими як Office 365, Dynamics CRM, Salesforce та багатьма іншими. Ви також можете створювати власні конектори для своїх специфічних потреб.

При створенні Logic App ви повинні або створити, або зв'язати зовнішній обліковий запис зберігання, який зберігає стан робочого процесу, історію виконання та артефакти. Це зберігання можна налаштувати з діагностичними налаштуваннями для моніторингу та можна захистити обмеженнями доступу до мережі або інтегрувати в віртуальну мережу для контролю вхідного та вихідного трафіку.

Приклади

  • Автоматизація даних: Logic Apps можуть автоматизувати процеси передачі та трансформації даних у поєднанні з Azure Data Factory. Це корисно для створення масштабованих та надійних конвеєрів даних, які переміщують та трансформують дані між різними сховищами даних, такими як Azure SQL Database та Azure Blob Storage, що сприяє аналітиці та бізнес-інтелекту.
  • Інтеграція з Azure Functions: Logic Apps можуть працювати разом з Azure Functions для розробки складних, подієвих додатків, які масштабуються за потреби та безшовно інтегруються з іншими сервісами Azure. Прикладом використання є використання Logic App для виклику Azure Function у відповідь на певні події, такі як зміни в обліковому записі Azure Storage, що дозволяє динамічно обробляти дані.

Візуалізація LogicAPP

Можливо переглянути LogicApp з графікою:

або перевірити код у розділі "Перегляд коду Logic app".

Захист від SSRF

Навіть якщо ви знайдете Logic App вразливим до SSRF, ви не зможете отримати доступ до облікових даних з метаданих, оскільки Logic Apps цього не дозволяє.

Наприклад, щось на кшталт цього не поверне токен:

bash
# The URL belongs to a Logic App vulenrable to SSRF
curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e974123adf0b98159966644/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=_8_oqqsCXc0u2c7hNjtSZmT0uM4Xi3hktw6Uze0O34s' -d '{"url": "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"}' -H "Content-type: application/json" -v

Варіанти хостингу

Є кілька варіантів хостингу:

  • Споживання
  • Багатоорендний: надає спільні обчислювальні ресурси, працює в публічному хмарі та слідує моделі ціноутворення "плата за операцію". Це ідеально підходить для легких і економічних навантажень. Це розгортає "Один робочий процес".
  • Стандартний
  • План служби робочих процесів: виділені обчислювальні ресурси з інтеграцією VNET для мережі та стягує плату за екземпляр плану служби робочих процесів. Він підходить для більш вимогливих навантажень, які потребують більшого контролю.
  • Середовище служби додатків V3: виділені обчислювальні ресурси з повною ізоляцією та масштабованістю. Він також інтегрується з VNET для мережі та використовує модель ціноутворення на основі екземплярів служби додатків у середовищі.
  • Гібридний: призначений для локальної обробки та підтримки багатохмарних рішень. Він дозволяє керованим клієнтом обчислювальним ресурсам з доступом до локальної мережі та використовує Kubernetes Event-Driven Autoscaling (KEDA). Він покладається на середовище контейнерних додатків.

Ключові особливості

  • Сховище: Logic Apps вимагають зовнішнього облікового запису Azure Storage для зберігання стану робочого процесу, історії виконання… і повинні бути в тій же групі ресурсів, що й Logic App.
  • Мережа та безпека: Logic Apps можуть бути налаштовані з публічним або приватним доступом. За замовчуванням додаток відкритий для Інтернету, але може бути інтегрований з Azure Virtual Network для ізольованого з'єднання.
  • Application Insights: Управління продуктивністю додатків (APM) через Azure Monitor Application Insights може бути активовано для відстеження продуктивності, виявлення аномалій та надання аналітики.
  • Контроль доступу: Logic Apps підтримують системні керовані ідентичності та ідентичності, керовані користувачем.

"Один" робочий процес

Робочий процес - це структурована послідовність автоматизованих кроків або завдань, які виконують певний процес або мету. Він визначає, як різні дії, умови та рішення взаємодіють для досягнення бажаного результату, спрощуючи операції та зменшуючи ручні зусилля. Робочі процеси можуть інтегрувати кілька систем, викликати події та правила, забезпечуючи узгодженість і ефективність у процесах.

Azure Logic Apps надає функціональність створення одного робочого процесу без необхідності в самому Logic App.

Кожен робочий процес має різні тригери. Ці тригери - це кроки, які виконує робочий процес. Кожен тригер має свої параметри, які можуть варіюватися в залежності від типу тригера:

  • Ім'я з'єднання
  • Тип аутентифікації, який може бути, Access Key, Microsoft Entra ID, інтегрована аутентифікація службового облікового запису та керована ідентичність Logic Apps.

Тригери також мають різні налаштування:

  • Перевірка схеми: забезпечує, щоб вхідні дані відповідали попередньо визначеній структурі.
  • Контроль паралельності: обмежує кількість паралельних виконань.
  • Умови тригера: умови, які повинні бути виконані перед спрацьовуванням тригера.
  • Мережа: налаштовує розмір частини для передачі даних і дозволяє подавляти заголовки робочого процесу у відповідях.
  • Безпека: дозволяє Безпечні Входи/Виходи для приховування чутливих даних у журналах та виходах.

Налаштування та API з'єднання:

Робочий процес має різні налаштування, такі як:

  • Дозволені вхідні IP-адреси: це налаштування дозволяє обмежити, хто може викликати або запускати ваш Logic App. Варіанти: будь-яка IP-адреса, лише інші Logic Apps та конкретні діапазони IP.
  • Інтеграційний обліковий запис: тут ви можете зв'язати свій Logic App з інтеграційним обліковим записом.
  • Висока пропускна здатність: це налаштування дозволяє вашому Logic App швидше обробляти більше запитів.
  • Збереження історії виконання: на який термін зберігається історія виконання вашого Logic App.

Ви можете бачити різні API з'єднання, які має робочий процес. Усередині кожного з цих з'єднань є різні властивості та можливість редагувати API з'єднання, де тип аутентифікації може бути змінений.

Історія та версії: Є можливість доступу до історії різних виконань, вона показує Налаштування, Вихід, Параметри та Код.

Також є можливість доступу до різних версій робочого процесу, де ви можете перевірити код і змінити поточний робочий процес на старішу версію.

Авторизація: Azure Logic Apps підтримують політики авторизації з Entra ID для захисту тригерів на основі запитів, вимагаючи дійсний токен доступу. Цей токен повинен містити специфічні вимоги:

  • Видавець (iss) для перевірки постачальника ідентичності
  • Аудиторія (aud) для забезпечення того, що токен призначений для Logic App
  • Суб'єкт (sub) для ідентифікації виклику
  • JWT ID (ідентифікатор JSON Web Token)
  • Користувацький запит

Коли запит отримується, Logic Apps перевіряє токен на відповідність цим вимогам і дозволяє виконання лише у разі їх відповідності налаштованій політиці. Це може бути використано для дозволу іншому орендарю викликати робочий процес або відмови у виклику з інших джерел, наприклад, дозволяючи тригер лише у разі, якщо він надходить з https://login.microsoftonline.com/.

Ключі доступу: Коли ви вперше зберігаєте тригер на основі запиту, Logic Apps автоматично створює унікальну кінцеву точку з підписом SAS (створеним з Access Key), який надає дозвіл на виклик робочого процесу. Цей підпис SAS вбудований в URL тригера. Цей ключ може бути згенерований заново, і він надасть новий підпис SAS, але ключі не можуть бути перераховані.

URL для виклику з Access Key:

https://.logic.azure.com:443/workflows//triggers//paths/invoke?api-version=&sp=%2Ftriggers%2F%2Frun&sv=&sig=

Перерахування

bash
# List
az logic workflow list --resource-group <ResourceGroupName>
# Get info
az logic workflow show --name <LogicAppName> --resource-group <ResourceGroupName>

# Get details of a specific Logic App workflow, including its connections and parameters
az rest \
--method GET \
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}?api-version=2016-10-01&$expand=connections.json,parameters.json" \
--headers "Content-Type=application/json"

# Get details about triggers for a specific Logic App
az rest --method GET \
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{logicAppName}/triggers?api-version=2016-06-01"

# Get the callback URL for a specific trigger in a Logic App
az rest --method POST \
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{logicAppName}/triggers/{triggerName}/listCallbackUrl?api-version=2016-06-01"

# Get the history of a specific trigger in a Logic App
az rest --method GET \
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{logicAppName}/triggers/{triggerName}/histories?api-version=2016-06-01"

# List all runs of a specific Logic App workflow
az rest \
--method GET \
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs?api-version=2016-06-01" \
--headers "Content-Type=application/json"

# Get all actions within a specific run of a Logic App workflow
az rest \
--method GET \
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs/{runName}/actions?api-version=2016-06-01" \
--headers "Content-Type=application/json"

# List all versions of a specific Logic App workflow
az rest \
--method GET \
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/versions?api-version=2016-06-01" \
--headers "Content-Type=application/json"

# Get details of a specific version of a Logic App workflow
az rest \
--method GET \
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/versions/{versionName}?api-version=2016-06-01" \
--headers "Content-Type=application/json"

# List all Logic Apps in the specified resource group
az logicapp list --resource-group <ResourceGroupName>

# Show detailed information about a specific Logic App
az logicapp show --name <LogicAppName> --resource-group <ResourceGroupName>

# List all application settings for a specific Logic App
az logicapp config appsettings list --name <LogicAppName> --resource-group <ResourceGroupName>

# Get a Parameters from an Azure App Service using Azure REST API
az rest --method GET --url "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{app-service-name}/hostruntime/admin/vfs/parameters.json?api-version=2018-11-01&relativepath=1"

# Get webhook-triggered workflows from an Azure Logic App using Azure REST API
az rest --method GET --url "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{logic-app-name}/hostruntime/runtime/webhooks/workflow/api/management/workflows?api-version=2018-11-01"

# Get workflows from an Azure Logic App using Azure REST API
az rest --method GET --url "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{logic-app-name}/workflows?api-version=2018-11-01"

# Get details of a specific workflow including its connections and parameters in Azure Logic Apps using Azure REST API
az rest --method GET --uri "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{logic-app-name}/workflows/{workflow-name}?api-version=2018-11-01&\$expand=connections.json,parameters.json"


Інтеграційні облікові записи

Інтеграційні облікові записи - це функція Azure Logic Apps. Інтеграційні облікові записи використовуються для полегшення інтеграцій на рівні підприємства, забезпечуючи розширені можливості B2B, такі як EDI, AS2 та управління XML-схемами. Інтеграційні облікові записи є контейнером в Azure, який зберігає наступні артефакти, що використовуються для Logic Apps:

  • Схеми: Управління XML-схемами для валідації та обробки повідомлень у вашому інтеграційному обліковому записі.
  • Карти: Налаштування трансформацій на основі XSLT для перетворення форматів даних у ваших інтеграційних робочих процесах.
  • Збірки: Управління збірками інтеграційного облікового запису для оптимізації логіки та обробки даних.
  • Сертифікати: Обробка сертифікатів для шифрування та підписування повідомлень, забезпечуючи безпечну комунікацію.
  • Партнери: Управління інформацією про торгових партнерів для B2B-транзакцій, що забезпечує безперебійну інтеграцію.
  • Угоди: Налаштування правил і параметрів для обміну даними з торговими партнерами (наприклад, EDI, AS2).
  • Конфігурації пакетної обробки: Управління конфігураціями пакетної обробки для групування та ефективної обробки повідомлень.
  • RosettaNet PIP: Налаштування процесів інтерфейсу партнерів RosettaNet (PIP) для стандартизації B2B-комунікації.

Перерахування

bash
# Integration account
az logic integration-account list --resource-group <resource-group-name>
az logic integration-account show --resource-group <resource-group-name> --name <integration-account-name>
az logic integration-account list-callback-url --resource-group <resource-group-name> --integration-account-name <integration-account-name>

# Batch-configuration
az logic integration-account batch-configuration list \
--resource-group <resource-group-name> \
--integration-account-name <integration-account-name>

az logic integration-account batch-configuration show \
--resource-group <resource-group-name> \
--integration-account-name <integration-account-name> \
--batch-configuration-name <batch-configuration-name>

# Map
az logic integration-account map list \
--resource-group <resource-group-name> \
--integration-account <integration-account-name>

az logic integration-account map show \
--resource-group <resource-group-name> \
--integration-account <integration-account-name> \
--map-name <map-name>

# Partner
az logic integration-account partner list \
--resource-group <resource-group-name> \
--integration-account <integration-account-name>

az logic integration-account partner show \
--resource-group <resource-group-name> \
--integration-account <integration-account-name> \
--name <partner-name>

# Session
az logic integration-account session list \
--resource-group <resource-group-name> \
--integration-account <integration-account-name>

az logic integration-account session show \
--resource-group <resource-group-name> \
--integration-account <integration-account-name> \
--name <session-name>

# Assembly
# Session
az logic integration-account assembly list \
--resource-group <resource-group-name> \
--integration-account <integration-account-name>

az logic integration-account assembly show \
--resource-group <resource-group-name> \
--integration-account <integration-account-name> \
--assembly-artifact-name <assembly-name>


Підвищення Привілеїв

Те ж саме, що і privesc логічних додатків:

Az - Logic Apps Privesc

Після Експлуатації

Az - Logic Apps Post Exploitation

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks