Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation

This commit is contained in:
Translator
2025-01-04 03:47:40 +00:00
parent c69f1e970b
commit d0a566db68
2 changed files with 61 additions and 75 deletions

View File

@@ -23,7 +23,7 @@ az webapp ssh --name <name> --resource-group <res-group>
```bash
az webapp create-remote-connection --name <name> --resource-group <res-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
@@ -32,12 +32,12 @@ 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
```
- **Foutopsporing van die toepassing**:
- **Debug die toepassing**:
1. Installeer die Azure uitbreiding in VScode.
2. Teken in die uitbreiding met die Azure rekening.
3. Lys al die App dienste binne die intekening.
4. Kies die App diens wat jy wil foutopspoor, regsklik en kies "Begin Foutopsporing".
5. As die app nie foutopsporing geaktiveer het nie, sal die uitbreiding probeer om dit te aktiveer, maar jou rekening het die toestemming `Microsoft.Web/sites/config/write` nodig om dit te doen.
4. Kies die App diens wat jy wil debugeer, regsklik en kies "Begin Debugeer".
5. As die toepassing nie debuggings ingeskakel het nie, sal die uitbreiding probeer om dit in te skakel, maar jou rekening het die toestemming `Microsoft.Web/sites/config/write` nodig om dit te doen.
### Verkry SCM Kredensiale & Aktiveer Basiese Verifikasie
@@ -94,9 +94,9 @@ az webapp deployment list-publishing-profiles --name <app-name> --resource-group
}
]
```
Let wel dat die **gebruikersnaam altyd dieselfde is** (behalwe in FTP wat die naam van die app aan die begin voeg) maar die **wagwoord is dieselfde** vir almal.
Let wel dat die **gebruikersnaam altyd dieselfde is** (behalwe in FTP wat die naam van die app aan die begin voeg) maar die **wagwoord is dieselfde** vir al hulle.
Boonop is die **SCM URL `<app-name>.scm.azurewebsites.net`**.
Boonop is die **SCM URL is `<app-name>.scm.azurewebsites.net`**.
- Die toestemming **`Microsoft.Web/sites/config/list/action`** laat toe om te bel:
```bash
@@ -124,14 +124,14 @@ az webapp deployment user set \
--user-name hacktricks \
--password 'W34kP@ssw0rd123!'
```
Dan kan jy hierdie geloofsbriewe gebruik om **toegang tot die SCM en FTP platforms** te verkry. Dit is ook 'n uitstekende manier om volharding te handhaaf.
Dan kan jy hierdie inligting gebruik om **toegang te verkry tot die SCM en FTP platforms**. Dit is ook 'n uitstekende manier om volharding te handhaaf.
Onthou dat jy om toegang tot die SCM-platform vanaf die **web te verkry, moet jy toegang hê tot `<SCM-URL>/BasicAuth`**.
Onthou dat jy om toegang te verkry tot die SCM platform vanaf die **web, jy moet toegang hê tot `<SCM-URL>/BasicAuth`**.
> [!WARNING]
> Let daarop dat elke gebruiker sy eie geloofsbriewe kan konfigureer deur die vorige opdrag aan te roep, maar as die gebruiker nie genoeg regte het om toegang tot die SCM of FTP te verkry nie, sal die geloofsbriewe nie werk nie.
> Let daarop dat elke gebruiker sy eie inligting kan konfigureer deur die vorige opdrag aan te roep, maar as die gebruiker nie genoeg regte het om toegang tot die SCM of FTP te verkry nie, sal die inligting nie werk nie.
- As jy sien dat daardie geloofsbriewe **REDACTED** is, is dit omdat jy **die SCM basiese verifikasie opsie moet aktiveer** en daarvoor het jy die tweede toestemming (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write):`
- As jy sien dat daardie inligting **REDACTED** is, is dit omdat jy **die SCM basiese verifikasie opsie moet aktiveer** en daarvoor het jy die tweede toestemming nodig (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write`):
```bash
# Enable basic authentication for SCM
az rest --method PUT \
@@ -149,19 +149,19 @@ az rest --method PUT \
"properties": {
"allow": true
}
}
}'
```
### Publiseer kode met SCM-akkrediteerings
### Publiseer kode met SCM-akkrediteer
Net om geldige SCM-akkrediteerings te hê, is dit moontlik om **kode** na die App-diens te **publiseer**. Dit kan gedoen word met die volgende opdrag.
Net om geldige SCM-akkrediteer te hê, is dit moontlik om **kode** na die App-diens te **publiseer**. Dit kan gedoen word met die volgende opdrag.
Vir hierdie python voorbeeld kan jy die repo aflaai van https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart, enige **veranderinge** aanbring wat jy wil en dan **zip dit deur te loop: `zip -r app.zip .`**.
Vir hierdie python voorbeeld kan jy die repo aflaai van https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart, enige **veranderinge** maak wat jy wil en dan **zip dit deur: `zip -r app.zip .`**.
Dan kan jy die **kode** met die volgende opdrag **publiseer**:
Dan kan jy die **kode** in 'n webtoepassing publiseer met die volgende opdrag:
```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 geloofsbriewe
### Webjobs: Microsoft.Web/sites/publish/Action | SCM geloofsbriewe
Die genoemde Azure toestemming laat verskeie interessante aksies toe wat ook met die SCM geloofsbriewe uitgevoer kan word:
@@ -173,9 +173,9 @@ az rest --method GET --url "https://lol-b5fyaeceh4e9dce0.scm.canadacentral-01.az
# Using SCM username and password:
curl "<SCM-URL>/vfs/data/jobs/continuous/job_name/job_log.txt" \
--user '<username>:<password>>' -v
--user '<username>:<password>' -v
```
- Lees **Webjobs** bronnkode:
- Lees **Webjobs** bronnekode:
```bash
# Using SCM username and password:
# Find all the webjobs inside:
@@ -203,22 +203,22 @@ curl -X PUT \
--data-binary "@/Users/carlospolop/Downloads/rev.js" \
--user '<username>:<password>'
```
### Microsoft.Web/sites/config/list/action
Hierdie toestemming laat toe om die **verbindingstringe** en die **appsettings** van die App-diens te lys, wat sensitiewe inligting soos databasisakkrediteerbes kan bevat.
```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
Hierdie toestemmings laat toe om 'n **bestuurde identiteit** aan die App-diens toe te ken, so as 'n App-diens voorheen gecompromitteer was, sal dit die aanvaller in staat stel om nuwe bestuurde identiteite aan die App-diens toe te ken en **privileges te verhoog** na hulle.
```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>
```
### Microsoft.Web/sites/config/list/action
Hierdie toestemming laat toe om die **verbindingstringe** en die **appsettings** van die App-diens te lys wat sensitiewe inligting soos databasisakkrediteerbes te bevat.
```bash
az webapp config connection-string list --name <name> --resource-group <res-group>
az webapp config appsettings list --name <name> --resource-group <res-group>
```
### Lees Geconfigureerde Derdeparty Kredensiale
Deur die volgende opdrag uit te voer, is dit moontlik om **die derdeparty kredensiale** wat in die huidige rekening geconfigureer is, te lees. Let daarop dat as daar byvoorbeeld sommige Github-kredensiale in 'n ander gebruiker geconfigureer is, jy nie die token van 'n ander een sal kan toegang nie.
Deur die volgende opdrag uit te voer, is dit moontlik om **die derdeparty kredensiale** wat in die huidige rekening geconfigureer is, te lees. Let daarop dat as daar byvoorbeeld 'n paar Github-kredensiale in 'n ander gebruiker geconfigureer is, jy nie die token van 'n ander een sal kan toegang nie.
```bash
az rest --method GET \
--url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"
@@ -252,15 +252,15 @@ https://graph.microsoft.com/v1.0/me/drive/root/children
- As die gekonfigureerde bron 'n derdeparty verskaffer soos Github, BitBucket of 'n Azure Repository is, kan jy die **kode** van die App diens opdateer deur die bronkode in die repository te kompromitteer.
- As die app gekonfigureer is om 'n **remote git repository** (met gebruikersnaam en wagwoord) te gebruik, is dit moontlik om die **URL en basiese auth akrediteerlinge** te kry om te kloon en veranderinge te stoot met:
- Met die toestemming **`Microsoft.Web/sites/sourcecontrols/read`**: `az webapp deployment source show --name <app-name> --resource-group <res-group>`
- Met die toestemming **`Microsoft.Web/sites/config/list/action`**:
- Gebruik die toestemming **`Microsoft.Web/sites/sourcecontrols/read`**: `az webapp deployment source show --name <app-name> --resource-group <res-group>`
- Gebruik die toestemming **`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"`
- As die app gekonfigureer is om 'n **local git repository** te gebruik, is dit moontlik om die **repository** te **kloon** en **veranderinge** daaraan te stoot:
- Met die toestemming **`Microsoft.Web/sites/sourcecontrols/read`**: Jy kan die URL van die git repo kry met `az webapp deployment source show --name <app-name> --resource-group <res-group>`, maar dit gaan dieselfde wees as die SCM URL van die app met die pad `/<app-name>.git` (bv. `https://pythonwebapp-audeh9f5fzeyhhed.scm.canadacentral-01.azurewebsites.net:443/pythonwebapp.git`).
- As die app gekonfigureer is om 'n **local git repository** te gebruik, is dit moontlik om die **repository te kloon** en **veranderinge** daaraan te stoot:
- Gebruik die toestemming **`Microsoft.Web/sites/sourcecontrols/read`**: Jy kan die URL van die git repo kry met `az webapp deployment source show --name <app-name> --resource-group <res-group>`, maar dit gaan dieselfde wees as die SCM URL van die app met die pad `/<app-name>.git` (bv. `https://pythonwebapp-audeh9f5fzeyhhed.scm.canadacentral-01.azurewebsites.net:443/pythonwebapp.git`).
- Om die SCM akrediteerling te kry, het jy die toestemming nodig:
- **`Microsoft.Web/sites/publishxml/action`**: Dan voer `az webapp deployment list-publishing-profiles --resource-group <res-group> -n <name>` uit.
- **`Microsoft.Web/sites/config/list/action`**: Dan voer `az webapp deployment list-publishing-credentials --name <name> --resource-group <res-group>` uit.
- **`Microsoft.Web/sites/publishxml/action`**: Hardloop dan `az webapp deployment list-publishing-profiles --resource-group <res-group> -n <name>`.
- **`Microsoft.Web/sites/config/list/action`**: Hardloop dan `az webapp deployment list-publishing-credentials --name <name> --resource-group <res-group>`
> [!WARNING]
> Let daarop dat dit, met die toestemming `Microsoft.Web/sites/config/list/action` en die SCM akrediteerlinge, altyd moontlik is om in 'n webapp te ontplooi (selfs al is dit gekonfigureer om 'n derdeparty verskaffer te gebruik) soos in 'n vorige afdeling genoem.
@@ -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`
Dit is die stel toestemmings wat toelaat om die **houer wat gebruik word** deur 'n webapp te **wysig**. 'n Aanvaller kan dit misbruik om 'n webapp 'n kwaadwillige houer te laat uitvoer.
Dit is die stel toestemmings wat toelaat om die **houer wat deur 'n webapp gebruik word** te **wysig**. 'n Aanvaller kan dit misbruik om 'n webapp 'n kwaadwillige houer te laat uitvoer.
```bash
az webapp config container set \
--name <app-name> \

View File

@@ -13,7 +13,7 @@ Elke toepassing loop binne 'n sandbox, maar isolasie hang af van App Service pla
- Die Isolated vlakke loop op **toegewyde VM's op toegewyde virtuele netwerke**, wat die isolasie van die toepassings verbeter.
> [!WARNING]
> Let daarop dat **geen** van daardie isolasies **voorkom** dat ander algemene **web kwesbaarhede** (soos lêeroplaai, of inspuitings) plaasvind nie. En as 'n **bestuursidentiteit** gebruik word, kan dit in staat wees om **privileges na hulle te verhoog**.
> Let daarop dat **geen** van daardie isolasies **voorkom** dat ander algemene **web kwesbaarhede** (soos lêeroplaai, of inspuitings) voorkom nie. En as 'n **bestuursidentiteit** gebruik word, kan dit in staat wees om **privileges na hulle op te skaal**.
Toepassings het 'n paar interessante konfigurasies:
@@ -24,43 +24,43 @@ Toepassings het 'n paar interessante konfigurasies:
- **Web App + Databasis**: Die webkonsol laat jou toe om 'n Toepassing met 'n databasis te skep. In hierdie geval is dit moontlik om die databasis te kies (SQLAzure, PostgreSQL, MySQL, MongoDB) en dit laat jou ook toe om 'n Azure Cache vir Redis te skep.
- Die URL wat die geloofsbriewe vir die databasis en Redis bevat, sal in die **appsettings** gestoor word.
- **Container**: Dit is moontlik om 'n houer na die App Service te ontplooi deur die URL van die houer en die geloofsbriewe om toegang te verkry aan te dui.
- **Mounts**: Dit is moontlik om 5 mounts van Stoor rekeninge te skep, wat Azure Blob (Slegs Lees) of Azure Files is. Die konfigurasie sal die toegangsleutel oor die Stoor Rekening stoor.
- **Mounts**: Dit is moontlik om 5 mounts van Stoor rekeninge te skep, wat Azure Blob (Lees-Alleen) of Azure Files is. Die konfigurasie sal die toegangsleutel oor die Stoor Rekening stoor.
## Basiese Verifikasie
Wanneer 'n webtoepassing (en 'n Azure funksie gewoonlik) geskep word, is dit moontlik om aan te dui of jy wil hê **Basiese Verifikasie moet geaktiveer wees** (standaard gedeaktiveer). Dit **aktiveer SCM (Source Control Manager) en FTP (File Transfer Protocol)** vir die toepassing sodat dit moontlik sal wees om die toepassing met hierdie tegnologieë te ontplooi.
Wanneer 'n webtoepassing (en 'n Azure funksie gewoonlik) geskep word, is dit moontlik om aan te dui of jy wil hê **Basiese Verifikasie moet geaktiveer word** (standaard gedeaktiveer). Dit **aktiveer SCM (Source Control Manager) en FTP (File Transfer Protocol)** vir die toepassing sodat dit moontlik sal wees om die toepassing met hierdie tegnologieë te ontplooi.
Om toegang tot die SCM en die FTP bedieners te verkry, is 'n **gebruikersnaam en wagwoord** nodig. Daarom bied Azure 'n paar **API's om die URL's** na hierdie platforms en die geloofsbriewe te verkry.
Die **FTP bediener het geen spesiale magie nie**, net met die geldige URL, gebruikersnaam en wagwoord is dit moontlik om te koppel en lees- en skryfrechten oor die App omgewing te verkry.
Die **FTP bediener het geen spesiale magie nie**, net met die geldige URL, gebruikersnaam en wagwoord is dit moontlik om te koppel en lees- en skrywe toestemming oor die App omgewing te verkry.
Die SCM
Dit is moontlik om aan die SCM te koppel met 'n webblaaier in `https://<SMC-URL>/BasicAuth` en al die lêers en ontplooiings daar te kontroleer.
### Kudu
Kudu is die platform wat **beide die SCM en 'n web- en API-koppelvlak bestuur** om 'n App Service te bestuur, en bied Git-gebaseerde ontplooiings, afstandsdebuginstrumente, en lêerbestuursfunksies. Dit is toeganklik deur die SCM URL wat in die webtoepassing gedefinieer is.
Kudu is die platform wat **both die SCM en 'n web- en API-koppelvlak bestuur** om 'n App Service te bestuur, en bied Git-gebaseerde ontplooiings, afstandsdebuginstrumente, en lêerbestuursvermoëns. Dit is toeganklik deur die SCM URL wat in die webtoepassing gedefinieer is.
Let daarop dat die Kudu weergawes wat deur App Services en deur Funksie Apps gebruik word, verskillend is, met die weergawe van die Funksie apps baie meer beperk.
Sommige interessante eindpunte wat jy in Kudu kan vind, is:
- `/BasicAuth`: Jy moet hierdie pad toegang om **binne Kudu aan te meld**.
- `/DebugConsole`: 'n Konsol wat jou toelaat om opdragte in die omgewing waar Kudu loop uit te voer.
- `/BasicAuth`: Jy moet toegang tot hierdie pad om **binne Kudu aan te meld**.
- `/DebugConsole`: 'n Konsol wat jou toelaat om opdragte in die omgewing waar Kudu loop, uit te voer.
- Let daarop dat hierdie omgewing **nie toegang het** tot die metadata diens om tokens te verkry nie.
- `/webssh/host`: 'n Web-gebaseerde SSH-kliënt wat jou toelaat om binne die houer waar die toepassing loop te koppel.
- `/webssh/host`: 'n Web-gebaseerde SSH-kliënt wat jou toelaat om binne die houer waar die toepassing loop, te koppel.
- Hierdie omgewing **het toegang tot die metadata diens** om tokens van die toegewyde bestuurde identiteite te verkry.
- `/Env`: Verkry inligting oor die stelsel, app instellings, omgewing veranderlikes, verbinding stringe en HTTP koppe.
- `/wwwroot/`: Die wortelgids van die webtoepassing. Jy kan al die lêers hier aflaai.
- `/Env`: Kry inligting oor die stelsel, app instellings, omgewing veranderlikes, verbinding stringe en HTTP koppe.
- `/wwwroot/`: Die wortelgids van die webtoepassing. Jy kan al die lêers van hier aflaai.
Boonop was Kudu eens opensource in [https://github.com/projectkudu/kudu](https://github.com/projectkudu/kudu) maar die projek is gedeaktiveer en deur die gedrag van die huidige Kudu in Azure met die ou een te vergelyk, is dit moontlik om te sien dat **verskeie dinge reeds verander het**.
## Bronne
App Services laat toe om die kode as 'n zip-lêer standaard op te laai, maar dit laat ook toe om met 'n derdeparty diens te verbind en die kode daar te verkry.
App Services laat toe om die kode as 'n zip-lêer op te laai, maar dit laat ook toe om met 'n derdeparty diens te verbind en die kode daar te verkry.
- Die tans ondersteunde derdeparty bronne is **Github** en **Bitbucket**.
- Jy kan die verifikasietokens verkry deur `az rest --url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"` te loop.
- Azure sal standaard 'n **Github Aksie** opstel om die kode na die App Service te ontplooi elke keer as die kode opgedateer word.
- Azure sal standaard 'n **Github Action** opstel om die kode na die App Service te ontplooi elke keer as die kode opgedateer word.
- Dit is ook moontlik om 'n **afgeleë git-repo** (met gebruikersnaam en wagwoord) aan te dui om die kode daar te verkry.
- Jy kan die geloofsbriewe na die afgeleë repo verkry deur `az webapp deployment source show --name <app-name> --resource-group <res-group>` of `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"`.
- Dit is ook moontlik om 'n **Azure Repository** te gebruik.
@@ -70,26 +70,26 @@ App Services laat toe om die kode as 'n zip-lêer standaard op te laai, maar dit
## Webjobs
Azure WebJobs is **agtergrondtake wat in die Azure App Service omgewing loop**. Dit stel ontwikkelaars in staat om skripte of programme saam met hul webtoepassings uit te voer, wat dit makliker maak om asynchrone of tydsintensiewe operasies soos lêerverwerking, datahantering, of geskeduleerde take te hanteer.
Azure WebJobs is **agtergrondtake wat in die Azure App Service omgewing loop**. Hulle stel ontwikkelaars in staat om skripte of programme saam met hul webtoepassings uit te voer, wat dit makliker maak om asynchrone of tydsintensiewe operasies soos lêerverwerking, datahantering, of geskeduleerde take te hanteer.
Daar is 2 tipes web jobs:
- **Deurlopend**: Loop eindeloos in 'n lus en word geaktiveer sodra dit geskep word. Dit is ideaal vir take wat konstante verwerking vereis. As die toepassing egter stop loop omdat Always On gedeaktiveer is en dit nie 'n versoek in die afgelope 20 minute ontvang het nie, sal die web job ook stop.
- **Geaktiveer**: Loop op aanvraag of gebaseer op 'n skedule. Dit is die beste geskik vir periodieke take, soos batch data-opdaterings of onderhoudsroetines.
Webjobs is baie interessant vanuit 'n aanvallers perspektief, aangesien dit gebruik kan word om **kode** in die omgewing uit te voer en **privileges** na die aangehegte bestuurde identiteite te verhoog.
Webjobs is baie interessant vanuit 'n aanvallers perspektief, aangesien hulle gebruik kan word om **kode** in die omgewing uit te voer en **privileges** na die aangehegte bestuurde identiteite op te skaal.
Boonop is dit altyd interessant om die **logs** wat deur die Webjobs gegenereer word te kontroleer, aangesien dit **sensitiewe inligting** kan bevat.
Boonop is dit altyd interessant om die **logs** wat deur die Webjobs gegenereer word, na te gaan, aangesien hulle **sensitiewe inligting** kan bevat.
## Slots
Azure App Service Slots word gebruik om **verskillende weergawes van die toepassing** na dieselfde App Service te ontplooi. Dit stel ontwikkelaars in staat om nuwe funksies of veranderinge in 'n aparte omgewing te toets voordat hulle dit na die produksie omgewing ontplooi.
Boonop is dit moontlik om 'n **persentasie van die verkeer** na 'n spesifieke slot te lei, wat nuttig is vir A/B toetsing, en vir **agterdeurdoeleindes**.
Boonop is dit moontlik om 'n **persentasie van die verkeer** na 'n spesifieke slot te lei, wat nuttig is vir A/B-toetsing, en vir **agterdeurdoeleindes**.
## Azure Funksie Apps
## Azure Function Apps
Basies **Azure Funksie apps is 'n substel van Azure App Service** in die webkonsol en as jy na die webkonsol gaan en al die app dienste lys of `az webapp list` in az cli uitvoer, sal jy in staat wees om **die Funksie apps ook daar gelys te sien**.
Basies **Azure Function apps is 'n subset van Azure App Service** in die webkonsol en as jy na die webkonsol gaan en al die app dienste lys of `az webapp list` in az cli uitvoer, sal jy in staat wees om **die Funksie apps ook daar gelys te sien**.
Daarom het beide dienste eintlik meestal die **dieselfde konfigurasies, funksies en opsies in die az cli**, alhoewel hulle dit dalk 'n bietjie anders konfigureer (soos standaardwaardes van appsettings of die gebruik van 'n Stoor Rekening in die Funksie apps).
Daarom het beide dienste eintlik meestal die **dieselfde konfigurasies, funksies en opsies in die az cli**, alhoewel hulle dit dalk 'n bietjie anders kan konfigureer (soos standaardwaardes van appsettings of die gebruik van 'n Stoor Rekening in die Funksie apps).
## Enumerasie
@@ -156,6 +156,9 @@ 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 git URL to access the code
az webapp deployment source config-local-git --resource-group <res-group> -n <name>
# 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>
@@ -217,24 +220,7 @@ done
{{#endtab }}
{{#endtabs }}
#### Verkry geloofsbriewe & kry toegang tot die webapp kode
```bash
# Get connection strings that could contain credentials (with DBs for example)
az webapp config connection-string list --name <name> --resource-group <res-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 <res-group> -n <name>
# Get git URL to access the code
az webapp deployment source config-local-git --resource-group <res-group> -n <name>
# Access/Modify the code via git
git clone 'https://<username>:<password>@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}}
@@ -252,12 +238,12 @@ cd msdocs-python-flask-webapp-quickstart
# Create webapp from this code
az webapp up --runtime PYTHON:3.9 --sku B1 --logs
```
Inlog in die SCM-portaal of inlog via FTP, dit is moontlik om in `/wwwroot` die gecomprimeerde lêer `output.tar.gz` te sien wat die kode van die webapp bevat.
Logging in die SCM-portaal of aanmeld via FTP, is dit moontlik om in `/wwwroot` die gecomprimeerde lêer `output.tar.gz` te sien wat die kode van die webapp bevat.
> [!TIP]
> Net deur via FTP te verbind en die lêer `output.tar.gz` te wysig, is nie genoeg om die kode wat deur die webapp uitgevoer word, te verander nie.
> Net om via FTP te verbind en die lêer `output.tar.gz` te wysig, is nie genoeg om die kode wat deur die webapp uitgevoer word, te verander nie.
**'n Aanvaller kan hierdie lêer aflaai, dit wysig en weer oplaai om arbitrêre kode in die webapp uit te voer.**
**'n Aanvaller kan hierdie lêer aflaai, dit wysig, en dit weer oplaai om arbitrêre kode in die webapp uit te voer.**
### Python van Github
@@ -265,12 +251,12 @@ Hierdie tutoriaal is gebaseer op die vorige een, maar gebruik 'n Github-repo.
1. Fork die repo msdocs-python-flask-webapp-quickstart in jou Github-rekening.
2. Skep 'n nuwe python Web App in Azure.
3. In `Deployment Center` verander die bron, log in met Github, kies die geforkte repo en klik `Save`.
3. In `Deployment Center` verander die bron, meld aan met Github, kies die geforkte repo en klik `Save`.
Soos in die vorige geval, inlog in die SCM-portaal of inlog via FTP, dit is moontlik om in `/wwwroot` die gecomprimeerde lêer `output.tar.gz` te sien wat die kode van die webapp bevat.
Soos in die vorige geval, is dit moontlik om in die SCM-portaal of via FTP in `/wwwroot` die gecomprimeerde lêer `output.tar.gz` te sien wat die kode van die webapp bevat.
> [!TIP]
> Net deur via FTP te verbind en die lêer `output.tar.gz` te wysig en 'n implementering weer te aktiveer, is nie genoeg om die kode wat deur die webapp uitgevoer word, te verander nie.
> Net om via FTP te verbind en die lêer `output.tar.gz` te wysig en 'n implementering weer te aktiveer, is nie genoeg om die kode wat deur die webapp uitgevoer word, te verander nie.
## Privilege Escalation