diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md index fa7b4917a..052088908 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md @@ -19,11 +19,11 @@ Azure App सेवाओं के बारे में अधिक जा # Direct option az webapp ssh --name --resource-group ``` -- **टनेल बनाएं और फिर SSH से कनेक्ट करें**: +- **टनल बनाएं और फिर SSH से कनेक्ट करें**: ```bash az webapp create-remote-connection --name --resource-group -## If successfull you will get a message such as: +## If successful you will get a message such as: #Verifying if app is running.... #App is running. Trying to establish tunnel connection... #Opening tunnel on port: 39895 @@ -94,7 +94,7 @@ az webapp deployment list-publishing-profiles --name --resource-group } ] ``` -ध्यान दें कि **उपयोगकर्ता नाम हमेशा समान होता है** (सिवाय FTP के, जो ऐप का नाम शुरुआत में जोड़ता है) लेकिन **पासवर्ड सभी के लिए समान होता है**। +ध्यान दें कि **उपयोगकर्ता नाम हमेशा एक जैसा होता है** (सिवाय FTP के, जो ऐप का नाम शुरुआत में जोड़ता है) लेकिन **पासवर्ड सभी के लिए एक जैसा होता है**। इसके अलावा, **SCM URL है `.scm.azurewebsites.net`**। @@ -118,7 +118,7 @@ az webapp deployment list-publishing-credentials --name --resource-gr ``` ध्यान दें कि **क्रेडेंशियल्स वही हैं** जो पिछले कमांड में थे। -- एक और विकल्प होगा कि **आप अपने खुद के क्रेड्स सेट करें** और उनका उपयोग करें: +- एक और विकल्प होगा **अपने खुद के क्रेड्स सेट करना** और उनका उपयोग करना: ```bash az webapp deployment user set \ --user-name hacktricks \ @@ -126,12 +126,12 @@ az webapp deployment user set \ ``` फिर, आप इन क्रेडेंशियल्स का उपयोग करके **SCM और FTP प्लेटफार्मों** तक पहुँच सकते हैं। यह स्थिरता बनाए रखने का एक शानदार तरीका भी है। -याद रखें कि **वेब से SCM प्लेटफार्म तक पहुँचने के लिए आपको `/BasicAuth`** पर पहुँचने की आवश्यकता है। +याद रखें कि **वेब से SCM प्लेटफॉर्म तक पहुँचने के लिए आपको `/BasicAuth`** पर पहुँचने की आवश्यकता है। > [!WARNING] -> ध्यान दें कि प्रत्येक उपयोगकर्ता पिछले कमांड को कॉल करके अपने स्वयं के क्रेडेंशियल्स कॉन्फ़िगर कर सकता है, लेकिन यदि उपयोगकर्ता के पास SCM या FTP तक पहुँचने के लिए पर्याप्त अनुमतियाँ नहीं हैं, तो क्रेडेंशियल्स काम नहीं करेंगे। +> ध्यान दें कि हर उपयोगकर्ता पिछले कमांड को कॉल करके अपने स्वयं के क्रेडेंशियल्स कॉन्फ़िगर कर सकता है, लेकिन यदि उपयोगकर्ता के पास SCM या FTP तक पहुँचने के लिए पर्याप्त अनुमतियाँ नहीं हैं, तो क्रेडेंशियल्स काम नहीं करेंगे। -- यदि आप देखते हैं कि ये क्रेडेंशियल्स **REDACTED** हैं, तो इसका मतलब है कि आपको **SCM बेसिक ऑथेंटिकेशन विकल्प को सक्षम करने की आवश्यकता है** और इसके लिए आपको दूसरी अनुमति (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write):` की आवश्यकता है। +- यदि आप देखते हैं कि वे क्रेडेंशियल्स **REDACTED** हैं, तो इसका मतलब है कि आपको **SCM बेसिक ऑथेंटिकेशन विकल्प को सक्षम करने की आवश्यकता है** और इसके लिए आपको दूसरी अनुमति (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write`) की आवश्यकता है: ```bash # Enable basic authentication for SCM az rest --method PUT \ @@ -149,23 +149,23 @@ az rest --method PUT \ "properties": { "allow": true } -} +}' ``` -### SCM क्रेडेंशियल्स का उपयोग करके कोड प्रकाशित करें +### Publish code using SCM credentials -सिर्फ मान्य SCM क्रेडेंशियल्स होने से **कोड प्रकाशित करना** संभव है App सेवा पर। यह निम्नलिखित कमांड का उपयोग करके किया जा सकता है। +सिर्फ वैध SCM क्रेडेंशियल्स होने पर **कोड प्रकाशित करना** संभव है App सेवा में। यह निम्नलिखित कमांड का उपयोग करके किया जा सकता है। -इस पायथन उदाहरण के लिए, आप https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart से रेपो डाउनलोड कर सकते हैं, कोई भी **परिवर्तन** कर सकते हैं और फिर **इसे ज़िप करें: `zip -r app.zip .`**। +इस पायथन उदाहरण के लिए, आप https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart से रेपो डाउनलोड कर सकते हैं, कोई भी **परिवर्तन** कर सकते हैं और फिर **ज़िप कर सकते हैं: `zip -r app.zip .`**। -फिर आप निम्नलिखित कमांड के साथ **कोड प्रकाशित कर सकते हैं**: +फिर आप निम्नलिखित कमांड का उपयोग करके एक वेब ऐप में **कोड प्रकाशित कर सकते हैं**: ```bash curl -X POST "/api/publish?type=zip" --data-binary "@./app.zip" -u ':' -H "Content-Type: application/octet-stream" ``` -### Microsoft.Web/sites/publish/Action | SCM क्रेडेंशियल्स +### Webjobs: Microsoft.Web/sites/publish/Action | SCM credentials उल्लेखित Azure अनुमति कई दिलचस्प क्रियाएँ करने की अनुमति देती है जो SCM क्रेडेंशियल्स के साथ भी की जा सकती हैं: -- **Webjobs** लॉग पढ़ें: +- पढ़ें **Webjobs** लॉग: ```bash # Using Azure credentials az rest --method GET --url "/vfs/data/jobs//rev5/job_log.txt" --resource "https://management.azure.com/" @@ -173,7 +173,7 @@ az rest --method GET --url "https://lol-b5fyaeceh4e9dce0.scm.canadacentral-01.az # Using SCM username and password: curl "/vfs/data/jobs/continuous/job_name/job_log.txt" \ ---user ':>' -v +--user ':' -v ``` - **Webjobs** स्रोत कोड पढ़ें: ```bash @@ -203,22 +203,22 @@ curl -X PUT \ --data-binary "@/Users/carlospolop/Downloads/rev.js" \ --user ':' ``` -### Microsoft.Web/sites/config/list/action - -यह अनुमति **कनेक्शन स्ट्रिंग्स** और App सेवा के **ऐपसेटिंग्स** को सूचीबद्ध करने की अनुमति देती है, जिसमें संवेदनशील जानकारी जैसे डेटाबेस क्रेडेंशियल्स हो सकते हैं। -```bash -az webapp config connection-string list --name --resource-group -az webapp config appsettings list --name --resource-group -``` ### Microsoft.Web/sites/write, Microsoft.Web/sites/read, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action ये अनुमतियाँ **एक प्रबंधित पहचान** को ऐप सेवा में **सौंपने** की अनुमति देती हैं, इसलिए यदि कोई ऐप सेवा पहले से ही समझौता की गई थी, तो यह हमलावर को ऐप सेवा में नई प्रबंधित पहचानों को सौंपने और **अधिकारों को बढ़ाने** की अनुमति देगा। ```bash az webapp identity assign --name --resource-group --identities /subscriptions//resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/ ``` +### Microsoft.Web/sites/config/list/action + +यह अनुमति **connection strings** और App सेवा के **appsettings** को सूचीबद्ध करने की अनुमति देती है, जिसमें संवेदनशील जानकारी जैसे डेटाबेस क्रेडेंशियल्स हो सकते हैं। +```bash +az webapp config connection-string list --name --resource-group +az webapp config appsettings list --name --resource-group +``` ### कॉन्फ़िगर की गई तीसरी पार्टी क्रेडेंशियल्स पढ़ें -निम्नलिखित कमांड चलाकर **तीसरी पार्टी क्रेडेंशियल्स** पढ़ना संभव है जो वर्तमान खाते में कॉन्फ़िगर की गई हैं। ध्यान दें कि यदि उदाहरण के लिए कुछ Github क्रेडेंशियल्स किसी अन्य उपयोगकर्ता में कॉन्फ़िगर किए गए हैं, तो आप किसी अन्य से टोकन तक पहुँच नहीं पाएंगे। +Running the following command it's possible to **read the third party credentials** configured in the current account. Note that if for example some Github credentials are configured in a different user, you won't be able to access the token from a different one. ```bash az rest --method GET \ --url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01" @@ -250,14 +250,14 @@ https://graph.microsoft.com/v1.0/me/drive/root/children ``` ### App कोड को स्रोत से अपडेट करें -- यदि कॉन्फ़िगर किया गया स्रोत एक तृतीय-पक्ष प्रदाता है जैसे Github, BitBucket या Azure Repository, तो आप **कोड को अपडेट** कर सकते हैं App सेवा का स्रोत कोड को समझौता करके। +- यदि कॉन्फ़िगर किया गया स्रोत एक तृतीय-पक्ष प्रदाता है जैसे Github, BitBucket या Azure Repository, तो आप **कोड अपडेट** कर सकते हैं App सेवा का स्रोत कोड को समझौता करके। - यदि ऐप को **रिमोट गिट रिपॉजिटरी** (यूजरनेम और पासवर्ड के साथ) का उपयोग करके कॉन्फ़िगर किया गया है, तो **URL और बेसिक ऑथ क्रेडेंशियल्स** प्राप्त करना संभव है ताकि क्लोन और परिवर्तन पुश किए जा सकें: - अनुमति का उपयोग करते हुए **`Microsoft.Web/sites/sourcecontrols/read`**: `az webapp deployment source show --name --resource-group ` - अनुमति का उपयोग करते हुए **`Microsoft.Web/sites/config/list/action`**: - `az webapp deployment list-publishing-credentials --name --resource-group ` - `az rest --method POST --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//config/metadata/list?api-version=2022-03-01" --resource "https://management.azure.com"` -- यदि ऐप को **लोकल गिट रिपॉजिटरी** का उपयोग करने के लिए कॉन्फ़िगर किया गया है, तो **रिपॉजिटरी को क्लोन करना** और **परिवर्तन पुश करना** संभव है: -- अनुमति का उपयोग करते हुए **`Microsoft.Web/sites/sourcecontrols/read`**: आप गिट रिपॉजिटरी का URL प्राप्त कर सकते हैं `az webapp deployment source show --name --resource-group `, लेकिन यह ऐप के SCM URL के समान होगा जिसमें पथ `/.git` होगा (जैसे `https://pythonwebapp-audeh9f5fzeyhhed.scm.canadacentral-01.azurewebsites.net:443/pythonwebapp.git`)। +- यदि ऐप को **स्थानीय गिट रिपॉजिटरी** का उपयोग करने के लिए कॉन्फ़िगर किया गया है, तो इसे **रिपॉजिटरी क्लोन करना** और **परिवर्तन पुश करना** संभव है: +- अनुमति का उपयोग करते हुए **`Microsoft.Web/sites/sourcecontrols/read`**: आप गिट रिपॉजिटरी का URL प्राप्त कर सकते हैं `az webapp deployment source show --name --resource-group `, लेकिन यह ऐप के SCM URL के समान होगा जिसमें पथ `/.git` है (जैसे `https://pythonwebapp-audeh9f5fzeyhhed.scm.canadacentral-01.azurewebsites.net:443/pythonwebapp.git`)। - SCM क्रेडेंशियल प्राप्त करने के लिए आपको अनुमति की आवश्यकता है: - **`Microsoft.Web/sites/publishxml/action`**: फिर चलाएँ `az webapp deployment list-publishing-profiles --resource-group -n `। - **`Microsoft.Web/sites/config/list/action`**: फिर चलाएँ `az webapp deployment list-publishing-credentials --name --resource-group ` @@ -270,7 +270,7 @@ https://graph.microsoft.com/v1.0/me/drive/root/children ### `Microsoft.Web/sites/config/Write`, `Microsoft.Web/sites/config/Read`, `Microsoft.Web/sites/config/list/Action`, `Microsoft.Web/sites/Read` -यह अनुमतियों का सेट है जो **कंटेनर को संशोधित करने** की अनुमति देता है जिसका उपयोग एक वेब ऐप द्वारा किया जाता है। एक हमलावर इसका दुरुपयोग करके एक वेब ऐप को एक मैलिशियस कंटेनर निष्पादित करने के लिए मजबूर कर सकता है। +यह अनुमतियों का सेट है जो **कंटेनर को संशोधित करने** की अनुमति देता है जिसका उपयोग एक वेब ऐप द्वारा किया जाता है। एक हमलावर इसका दुरुपयोग करके एक वेब ऐप को एक दुर्भावनापूर्ण कंटेनर निष्पादित करने के लिए मजबूर कर सकता है। ```bash az webapp config container set \ --name \ diff --git a/src/pentesting-cloud/azure-security/az-services/az-app-services.md b/src/pentesting-cloud/azure-security/az-services/az-app-services.md index 6ca5c3de7..8cf621ee7 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-app-services.md +++ b/src/pentesting-cloud/azure-security/az-services/az-app-services.md @@ -9,39 +9,39 @@ Azure App Services डेवलपर्स को **वेब एप्लि प्रत्येक ऐप एक सैंडबॉक्स के अंदर चलता है लेकिन अलगाव App Service योजनाओं पर निर्भर करता है: - फ्री और शेयर किए गए स्तरों में ऐप्स **शेयर किए गए VMs** पर चलते हैं -- स्टैंडर्ड और प्रीमियम स्तरों में ऐप्स **विशेष VMs पर चलते हैं जो केवल उसी App Service योजना में ऐप्स द्वारा साझा किए जाते हैं**। -- आइसोलेटेड स्तर **विशेष VMs पर विशेष वर्चुअल नेटवर्क्स पर चलते हैं**, जो ऐप्स के अलगाव में सुधार करते हैं। +- स्टैंडर्ड और प्रीमियम स्तरों में ऐप्स **विशिष्ट VMs पर चलते हैं जो केवल उसी App Service योजना में ऐप्स द्वारा साझा किए जाते हैं**। +- आइसोलेटेड स्तर **विशिष्ट VMs पर चलते हैं जो विशिष्ट वर्चुअल नेटवर्क पर होते हैं**, ऐप्स के अलगाव में सुधार करते हैं। > [!WARNING] > ध्यान दें कि **कोई भी** उन अलगावों में से **अन्य सामान्य** **वेब कमजोरियों** (जैसे फ़ाइल अपलोड, या इंजेक्शन) को **रोकता नहीं है**। और यदि एक **प्रबंधन पहचान** का उपयोग किया जाता है, तो यह **उन पर विशेषाधिकार बढ़ा सकता है**। -ऐप्स में कुछ दिलचस्प कॉन्फ़िगरेशन हैं: +ऐप्स में कुछ दिलचस्प कॉन्फ़िगरेशन होते हैं: -- **हमेशा चालू**: सुनिश्चित करता है कि ऐप हमेशा चल रहा है। यदि सक्षम नहीं है, तो ऐप 20 मिनट की निष्क्रियता के बाद चलना बंद कर देगा और एक अनुरोध प्राप्त होने पर फिर से शुरू होगा। -- यदि आपके पास एक वेबजॉब है जिसे लगातार चलने की आवश्यकता है तो यह आवश्यक है क्योंकि यदि ऐप रुक जाता है तो वेबजॉब भी रुक जाएगा। +- **हमेशा चालू**: सुनिश्चित करता है कि ऐप हमेशा चल रहा है। यदि सक्षम नहीं किया गया है, तो ऐप 20 मिनट की निष्क्रियता के बाद चलना बंद कर देगा और जब एक अनुरोध प्राप्त होगा तो फिर से शुरू होगा। +- यदि आपके पास एक वेबजॉब है जिसे लगातार चलने की आवश्यकता है तो यह आवश्यक है क्योंकि यदि ऐप रुकता है तो वेबजॉब भी रुक जाएगा। - **SSH**: यदि सक्षम है, तो पर्याप्त अनुमतियों वाला एक उपयोगकर्ता SSH का उपयोग करके ऐप से कनेक्ट कर सकता है। - **डीबगिंग**: यदि सक्षम है, तो पर्याप्त अनुमतियों वाला एक उपयोगकर्ता ऐप को डीबग कर सकता है। हालाँकि, यह हर 48 घंटे में स्वचालित रूप से बंद हो जाता है। - **वेब ऐप + डेटाबेस**: वेब कंसोल एक डेटाबेस के साथ एक ऐप बनाने की अनुमति देता है। इस मामले में, उपयोग करने के लिए डेटाबेस का चयन करना संभव है (SQLAzure, PostgreSQL, MySQL, MongoDB) और यह आपको Redis के लिए एक Azure Cache बनाने की भी अनुमति देता है। - डेटाबेस और Redis के लिए क्रेडेंशियल्स वाला URL **appsettings** में संग्रहीत किया जाएगा। -- **कंटेनर**: कंटेनर के URL और इसे एक्सेस करने के लिए क्रेडेंशियल्स को इंगित करके ऐप सेवा में एक कंटेनर तैनात करना संभव है। -- **माउंट्स**: स्टोरेज खातों से 5 माउंट बनाना संभव है, ये Azure Blob (पढ़ने के लिए केवल) या Azure Files हो सकते हैं। कॉन्फ़िगरेशन स्टोरेज अकाउंट पर एक्सेस कुंजी को संग्रहीत करेगा। +- **कंटेनर**: कंटेनर के URL और इसे एक्सेस करने के लिए क्रेडेंशियल्स को इंगित करके App Service पर एक कंटेनर तैनात करना संभव है। +- **माउंट्स**: स्टोरेज खातों से 5 माउंट्स बनाना संभव है, ये Azure Blob (पढ़ने के लिए केवल) या Azure Files हो सकते हैं। कॉन्फ़िगरेशन स्टोरेज अकाउंट पर एक्सेस कुंजी को संग्रहीत करेगा। ## Basic Authentication जब एक वेब ऐप (और एक Azure फ़ंक्शन आमतौर पर) बनाया जाता है, तो यह संकेत देना संभव है कि आप **बुनियादी प्रमाणीकरण सक्षम करना चाहते हैं** (डिफ़ॉल्ट रूप से बंद)। यह मूल रूप से **SCM (स्रोत नियंत्रण प्रबंधक) और FTP (फाइल ट्रांसफर प्रोटोकॉल)** को एप्लिकेशन के लिए सक्षम करता है ताकि उन तकनीकों का उपयोग करके एप्लिकेशन को तैनात करना संभव हो सके। -SCM और FTP सर्वरों तक पहुँचने के लिए, एक **उपयोगकर्ता नाम और पासवर्ड** की आवश्यकता होती है। इसलिए, Azure कुछ **APIs प्रदान करता है जो इन प्लेटफार्मों के लिए URLs** और क्रेडेंशियल्स प्राप्त करने के लिए हैं। +SCM और FTP सर्वरों तक पहुँचने के लिए, एक **उपयोगकर्ता नाम और पासवर्ड** की आवश्यकता होती है। इसलिए, Azure कुछ **API प्रदान करता है ताकि इन प्लेटफार्मों के लिए URLs और क्रेडेंशियल्स प्राप्त किए जा सकें**। **FTP सर्वर में कोई विशेष जादू नहीं है**, बस मान्य URL, उपयोगकर्ता नाम और पासवर्ड के साथ कनेक्ट करना और ऐप वातावरण पर पढ़ने और लिखने की अनुमति प्राप्त करना संभव है। SCM -आप एक वेब ब्राउज़र का उपयोग करके `https:///BasicAuth` पर SCM से कनेक्ट कर सकते हैं और वहां सभी फ़ाइलों और तैनातियों की जांच कर सकते हैं। +आप एक वेब ब्राउज़र का उपयोग करके SCM से कनेक्ट कर सकते हैं `https:///BasicAuth` और वहां सभी फ़ाइलों और तैनातियों की जांच कर सकते हैं। ### Kudu -Kudu वह प्लेटफ़ॉर्म है जो **SCM और एक वेब और API इंटरफ़ेस दोनों का प्रबंधन करता है** ताकि एक ऐप सेवा का प्रबंधन किया जा सके, और Git-आधारित तैनातियों, दूरस्थ डीबगिंग, और फ़ाइल प्रबंधन क्षमताएँ प्रदान करता है। यह वेब ऐप में परिभाषित SCM URL के माध्यम से सुलभ है। +Kudu वह प्लेटफ़ॉर्म है जो **SCM और एक वेब और API इंटरफ़ेस दोनों का प्रबंधन करता है** ताकि एक App Service का प्रबंधन किया जा सके, और Git-आधारित तैनातियों, दूरस्थ डीबगिंग, और फ़ाइल प्रबंधन क्षमताएँ प्रदान करता है। यह वेब ऐप में परिभाषित SCM URL के माध्यम से सुलभ है। -ध्यान दें कि ऐप सेवाओं और फ़ंक्शन ऐप्स द्वारा उपयोग किए जाने वाले Kudu संस्करण भिन्न हैं, फ़ंक्शन ऐप्स का संस्करण बहुत अधिक सीमित है। +ध्यान दें कि App Services और Function Apps द्वारा उपयोग किए जाने वाले Kudu संस्करण भिन्न होते हैं, Function apps का संस्करण बहुत अधिक सीमित होता है। Kudu में आप कुछ दिलचस्प एंडपॉइंट पा सकते हैं: - `/BasicAuth`: आपको Kudu के अंदर **लॉगिन करने के लिए इस पथ तक पहुँचने** की आवश्यकता है। @@ -52,15 +52,15 @@ Kudu में आप कुछ दिलचस्प एंडपॉइंट - `/Env`: सिस्टम, ऐप सेटिंग्स, env वेरिएबल्स, कनेक्शन स्ट्रिंग्स और HTTP हेडर के बारे में जानकारी प्राप्त करें। - `/wwwroot/`: वेब ऐप का रूट डायरेक्टरी। आप यहाँ से सभी फ़ाइलें डाउनलोड कर सकते हैं। -इसके अलावा, Kudu पहले [https://github.com/projectkudu/kudu](https://github.com/projectkudu/kudu) में ओपनसोर्स था लेकिन प्रोजेक्ट को डिप्रिकेट कर दिया गया और Azure में वर्तमान Kudu के व्यवहार की तुलना पुराने के साथ करने पर यह देखा जा सकता है कि **कई चीजें पहले से ही बदल चुकी हैं**। +इसके अलावा, Kudu पहले [https://github.com/projectkudu/kudu](https://github.com/projectkudu/kudu) पर ओपनसोर्स था लेकिन प्रोजेक्ट को डिप्रिकेट कर दिया गया और Azure में वर्तमान Kudu के व्यवहार की तुलना पुराने के साथ करने पर यह देखा जा सकता है कि **कई चीजें पहले से ही बदल चुकी हैं**। ## Sources -ऐप सेवाएँ डिफ़ॉल्ट रूप से कोड को ज़िप फ़ाइल के रूप में अपलोड करने की अनुमति देती हैं, लेकिन यह एक तृतीय पक्ष सेवा से कनेक्ट करने और वहां से कोड प्राप्त करने की भी अनुमति देती है। +App Services डिफ़ॉल्ट रूप से कोड को एक ज़िप फ़ाइल के रूप में अपलोड करने की अनुमति देते हैं, लेकिन यह एक तृतीय पक्ष सेवा से कनेक्ट करने और वहां से कोड प्राप्त करने की भी अनुमति देता है। - वर्तमान में समर्थित तृतीय पक्ष स्रोत **Github** और **Bitbucket** हैं। - आप `az rest --url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"` चलाकर प्रमाणीकरण टोकन प्राप्त कर सकते हैं। -- Azure डिफ़ॉल्ट रूप से हर बार कोड अपडेट होने पर ऐप सेवा में कोड तैनात करने के लिए एक **Github Action** सेटअप करेगा। +- Azure डिफ़ॉल्ट रूप से हर बार कोड अपडेट होने पर App Service पर कोड तैनात करने के लिए एक **Github Action** सेटअप करेगा। - यह वहाँ से कोड प्राप्त करने के लिए एक **दूरस्थ git रिपॉजिटरी** (उपयोगकर्ता नाम और पासवर्ड के साथ) को इंगित करना भी संभव है। - आप `az webapp deployment source show --name --resource-group ` या `az rest --method POST --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//config/metadata/list?api-version=2022-03-01" --resource "https://management.azure.com"` चलाकर दूरस्थ रिपॉजिटरी के लिए क्रेडेंशियल्स प्राप्त कर सकते हैं। - एक **Azure Repository** का उपयोग करना भी संभव है। @@ -71,23 +71,23 @@ Kudu में आप कुछ दिलचस्प एंडपॉइंट ## Webjobs Azure WebJobs **Azure App Service वातावरण में चलने वाले बैकग्राउंड कार्य** हैं। वे डेवलपर्स को अपने वेब एप्लिकेशनों के साथ स्क्रिप्ट या प्रोग्राम चलाने की अनुमति देते हैं, जिससे फ़ाइल प्रसंस्करण, डेटा हैंडलिंग, या अनुसूचित कार्यों जैसे असिंक्रोनस या समय-गहन संचालन को संभालना आसान हो जाता है। -वेब जॉब के 2 प्रकार हैं: +WebJobs के 2 प्रकार होते हैं: - **निरंतर**: यह अनंत काल तक एक लूप में चलता है और इसे तुरंत बनाया जाने पर ट्रिगर किया जाता है। यह उन कार्यों के लिए आदर्श है जिन्हें निरंतर प्रसंस्करण की आवश्यकता होती है। हालाँकि, यदि ऐप चलना बंद कर देता है क्योंकि हमेशा चालू बंद है और इसे पिछले 20 मिनट में कोई अनुरोध नहीं मिला है, तो वेब जॉब भी रुक जाएगा। - **ट्रिगर किया गया**: यह मांग पर या एक शेड्यूल के आधार पर चलता है। यह आवधिक कार्यों, जैसे बैच डेटा अपडेट या रखरखाव दिनचर्या के लिए सबसे उपयुक्त है। -वेबजॉब्स हमलावरों के दृष्टिकोण से बहुत दिलचस्प हैं क्योंकि उनका उपयोग **पर्यावरण में कोड निष्पादित करने** और **संलग्न प्रबंधित पहचानों** के लिए विशेषाधिकार बढ़ाने के लिए किया जा सकता है। +WebJobs हमलावरों के दृष्टिकोण से बहुत दिलचस्प होते हैं क्योंकि उनका उपयोग **पर्यावरण में कोड निष्पादित करने** और **संलग्न प्रबंधित पहचानों के लिए विशेषाधिकार बढ़ाने** के लिए किया जा सकता है। -इसके अलावा, यह हमेशा दिलचस्प होता है कि वेबजॉब्स द्वारा उत्पन्न **लॉग्स** की जांच करें क्योंकि वे **संवेदनशील जानकारी** हो सकती हैं। +इसके अलावा, WebJobs द्वारा उत्पन्न **लॉग** की जांच करना हमेशा दिलचस्प होता है क्योंकि वे **संवेदनशील जानकारी** रख सकते हैं। ## Slots -Azure App Service Slots का उपयोग **एक ही ऐप सेवा में एप्लिकेशन के विभिन्न संस्करणों को तैनात करने** के लिए किया जाता है। यह डेवलपर्स को उत्पादन वातावरण में तैनात करने से पहले एक अलग वातावरण में नई सुविधाओं या परिवर्तनों का परीक्षण करने की अनुमति देता है। +Azure App Service Slots का उपयोग **एक ही App Service पर एप्लिकेशन के विभिन्न संस्करणों को तैनात करने** के लिए किया जाता है। यह डेवलपर्स को उत्पादन वातावरण में तैनात करने से पहले एक अलग वातावरण में नई सुविधाओं या परिवर्तनों का परीक्षण करने की अनुमति देता है। -इसके अलावा, एक विशेष स्लॉट के लिए **ट्रैफ़िक का एक प्रतिशत** रूट करना संभव है, जो A/B परीक्षण के लिए उपयोगी है, और **बैकडोर उद्देश्यों** के लिए। +इसके अलावा, एक विशिष्ट स्लॉट के लिए **ट्रैफ़िक का प्रतिशत** रूट करना संभव है, जो A/B परीक्षण के लिए उपयोगी है, और **बैकडोर उद्देश्यों** के लिए। ## Azure Function Apps -बुनियादी रूप से **Azure Function ऐप्स Azure App Service का एक उपसमुच्चय हैं** वेब कंसोल में और यदि आप वेब कंसोल पर जाते हैं और सभी ऐप सेवाओं की सूची बनाते हैं या `az webapp list` को az cli में निष्पादित करते हैं, तो आप **वहाँ सूचीबद्ध फ़ंक्शन ऐप्स को भी देख पाएंगे**। +बुनियादी रूप से **Azure Function apps Azure App Service का एक उपसमुच्चय हैं** वेब कंसोल में और यदि आप वेब कंसोल पर जाते हैं और सभी ऐप सेवाओं की सूची बनाते हैं या az cli में `az webapp list` निष्पादित करते हैं, तो आप **वहाँ सूचीबद्ध फ़ंक्शन ऐप्स को भी देख पाएंगे**। इसलिए, दोनों सेवाओं में वास्तव में ज्यादातर **एक समान कॉन्फ़िगरेशन, सुविधाएँ और विकल्प होते हैं az cli में**, हालाँकि वे उन्हें थोड़ा अलग तरीके से कॉन्फ़िगर कर सकते हैं (जैसे appsettings के डिफ़ॉल्ट मान या फ़ंक्शन ऐप्स में स्टोरेज अकाउंट का उपयोग)। @@ -156,6 +156,9 @@ az webapp config storage-account list --name --resource-group # Get configured container (if any) in the webapp, it could contain credentials az webapp config container show --name --resource-group +# Get git URL to access the code +az webapp deployment source config-local-git --resource-group -n + # Get Webjobs az webapp webjob continuous list --resource-group --name az webapp webjob triggered list --resource-group --name @@ -217,31 +220,14 @@ done {{#endtab }} {{#endtabs }} -#### क्रेडेंशियल प्राप्त करें और वेब ऐप कोड तक पहुंच प्राप्त करें -```bash -# Get connection strings that could contain credentials (with DBs for example) -az webapp config connection-string list --name --resource-group -## Check how to use the DBs connection strings in the SQL page -# Get credentials to access the code and DB credentials if configured. -az webapp deployment list-publishing-profiles --resource-group -n - - -# Get git URL to access the code -az webapp deployment source config-local-git --resource-group -n - -# Access/Modify the code via git -git clone 'https://:@name.scm.azurewebsites.net/repo-name.git' -## In my case the username was: $nameofthewebapp and the password some random chars -## If you change the code and do a push, the app is automatically redeployed -``` {{#ref}} ../az-privilege-escalation/az-app-services-privesc.md {{#endref}} -## वेब ऐप्स बनाने के उदाहरण +## Web Apps बनाने के उदाहरण -### स्थानीय से पायथन +### स्थानीय से Python यह ट्यूटोरियल [https://learn.microsoft.com/en-us/azure/app-service/quickstart-python](https://learn.microsoft.com/en-us/azure/app-service/quickstart-python?tabs=flask%2Cwindows%2Cazure-cli%2Cazure-cli-deploy%2Cdeploy-instructions-azportal%2Cterminal-bash%2Cdeploy-instructions-zip-azcli) से आधारित है। ```bash @@ -261,7 +247,7 @@ SCM पोर्टल में लॉगिन करने या FTP के ### Github से Python -यह ट्यूटोरियल पिछले वाले पर आधारित है लेकिन एक Github रिपॉजिटरी का उपयोग कर रहा है। +यह ट्यूटोरियल पिछले वाले पर आधारित है लेकिन एक Github रिपॉजिटरी का उपयोग करते हुए। 1. अपने Github खाते में msdocs-python-flask-webapp-quickstart रिपॉजिटरी को फोर्क करें। 2. Azure में एक नया Python वेब ऐप बनाएं। @@ -270,7 +256,7 @@ SCM पोर्टल में लॉगिन करने या FTP के जैसे पिछले मामले में, SCM पोर्टल में लॉगिन करने या FTP के माध्यम से लॉगिन करने पर `/wwwroot` में `output.tar.gz` नामक संकुचित फ़ाइल देखी जा सकती है, जिसमें वेब ऐप का कोड होता है। > [!TIP] -> केवल FTP के माध्यम से कनेक्ट करना और फ़ाइल `output.tar.gz` को संशोधित करना और एक डिप्लॉयमेंट को फिर से ट्रिगर करना वेब ऐप द्वारा निष्पादित कोड को बदलने के लिए पर्याप्त नहीं है। +> केवल FTP के माध्यम से कनेक्ट करना और फ़ाइल `output.tar.gz` को संशोधित करना और एक डिप्लॉयमेंट को फिर से सक्रिय करना वेब ऐप द्वारा निष्पादित कोड को बदलने के लिए पर्याप्त नहीं है। ## Privilege Escalation