diff --git a/src/pentesting-cloud/azure-security/az-services/az-static-web-apps.md b/src/pentesting-cloud/azure-security/az-services/az-static-web-apps.md index 43f3fb1d9..faf121483 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-static-web-apps.md +++ b/src/pentesting-cloud/azure-security/az-services/az-static-web-apps.md @@ -4,31 +4,35 @@ ## Osnovne informacije o statičkim web aplikacijama -Azure Static Web Apps je cloud usluga za hostovanje **statičkih web aplikacija sa automatskim CI/CD iz repozitorijuma kao što je GitHub**. Pruža globalnu isporuku sadržaja, serverless backend-e i ugrađeni HTTPS, čineći ga sigurnim i skalabilnim. Međutim, rizici uključuju pogrešno konfigurisane CORS, nedovoljnu autentifikaciju i manipulaciju sadržajem, što može izložiti aplikacije napadima poput XSS i curenja podataka ako se ne upravlja pravilno. +Azure Static Web Apps je cloud usluga za hostovanje **statičkih web aplikacija sa automatskim CI/CD iz repozitorijuma kao što je GitHub**. Pruža globalnu isporuku sadržaja, serverless backend i ugrađeni HTTPS, čineći ga sigurnim i skalabilnim. Međutim, čak i ako se usluga naziva "statičkom", to ne znači da je potpuno sigurna. Rizici uključuju pogrešno konfigurisane CORS, nedovoljnu autentifikaciju i manipulaciju sadržajem, što može izložiti aplikacije napadima poput XSS i curenja podataka ako se ne upravlja pravilno. + +### Autentifikacija prilikom implementacije > [!TIP] -> Kada se kreira statička aplikacija, možete odabrati **politiku autorizacije za implementaciju** između **tokena za implementaciju** i **GitHub Actions radnog toka**. +> Kada se kreira statička aplikacija, možete odabrati **politiku autorizacije implementacije** između **tokena za implementaciju** i **GitHub Actions radnog toka**. +- **Token za implementaciju**: Token se generiše i koristi za autentifikaciju procesa implementacije. Svako ko ima **ovaj token je dovoljno da implementira novu verziju aplikacije**. **Github Action se automatski implementira** u repozitorijumu sa tokenom u tajni kako bi se implementirala nova verzija aplikacije svaki put kada se repozitorijum ažurira. +- **GitHub Actions radni tok**: U ovom slučaju, vrlo sličan Github Action se takođe implementira u repozitorijumu i **token se takođe čuva u tajni**. Međutim, ovaj Github Action ima razliku, koristi **`actions/github-script@v6`** akciju da dobije IDToken repozitorijuma i koristi ga za implementaciju aplikacije. +- Čak i ako se u oba slučaja koristi akcija **`Azure/static-web-apps-deploy@v1`** sa tokenom u `azure_static_web_apps_api_token` parametru, u ovom drugom slučaju, nasumični token sa validnim formatom kao što je `12345cbb198a77a092ff885781a62a15d51ef5e3654ca11234509ab54547270704-4140ccee-e04f-424f-b4ca-3d4dd123459c00f0702071d12345` je samo dovoljno da se implementira aplikacija jer se autorizacija vrši sa IDToken-om u `github_id_token` parametru. -### Autentifikacija web aplikacije +### Osnovna autentifikacija web aplikacije -Moguće je **konfigurisati lozinku** za pristup web aplikaciji. Web konzola omogućava da se ona konfiguriše da štiti samo staging okruženja ili i staging i produkcijsko. +Moguće je **konfigurisati lozinku** za pristup web aplikaciji. Web konzola omogućava da se konfiguriše tako da štiti samo staging okruženja ili i staging i produkcijsko. Ovako izgleda web aplikacija zaštićena lozinkom u trenutku pisanja:
- -Moguće je videti **da li se koristi neka lozinka** i koja okruženja su zaštićena sa: +Moguće je videti **da li se koristi neka lozinka** i koja su okruženja zaštićena sa: ```bash az rest --method GET \ --url "/subscriptions//resourceGroups/Resource_Group_1/providers/Microsoft.Web/staticSites//config/basicAuth?api-version=2024-04-01" ``` Međutim, ovo **neće prikazati lozinku u čistom tekstu**, već nešto poput: `"password": "**********************"`. -### Rute +### Rute i Uloge -Rute definišu **kako se obrađuju dolazni HTTP zahtevi** unutar statičke web aplikacije. Konfigurisane u **`staticwebapp.config.json`** datoteci, kontrolišu preusmeravanje URL-a, preusmeravanja, ograničenja pristupa i autorizaciju zasnovanu na rolama, osiguravajući pravilno rukovanje resursima i bezbednost. +Rute definišu **kako se obrađuju dolazni HTTP zahtevi** unutar statičke web aplikacije. Konfigurisane u **`staticwebapp.config.json`** datoteci, kontrolišu preusmeravanje URL-a, preusmeravanja, ograničenja pristupa i autorizaciju zasnovanu na ulogama, obezbeđujući pravilno rukovanje resursima i bezbednost. Neki primeri: ```json @@ -58,6 +62,19 @@ Neki primeri: } } ``` +Napomena kako je moguće **zaštititi putanju sa ulogom**, tada će korisnici morati da se autentifikuju u aplikaciju i dobiju tu ulogu da bi pristupili putanji. Takođe je moguće **napraviti pozivnice** koje dodeljuju specifične uloge specifičnim korisnicima koji se prijavljuju putem EntraID, Facebook-a, GitHub-a, Google-a, Twitter-a, što može biti korisno za eskalaciju privilegija unutar aplikacije. + +> [!TIP] +> Imajte na umu da je moguće konfigurisati aplikaciju tako da **promene u `staticwebapp.config.json`** datoteci nisu prihvaćene. U ovom slučaju, možda neće biti dovoljno samo promeniti datoteku sa GitHub-a, već i **promeniti podešavanje u aplikaciji**. + +URL za testiranje ima ovaj format: `https://-..` kao: `https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net` + +### Upravljane identitete + +Azure Static Web Apps mogu biti konfigurisane da koriste **upravljane identitete**, međutim, kao što je pomenuto u [ovom FAQ](https://learn.microsoft.com/en-gb/azure/static-web-apps/faq#does-static-web-apps-support-managed-identity-), oni su podržani samo za **izvlačenje tajni iz Azure Key Vault-a u svrhe autentifikacije, a ne za pristup drugim Azure resursima**. + +Za više informacija možete pronaći Azure vodič o korišćenju tajne iz trezora u statičkoj aplikaciji na https://learn.microsoft.com/en-us/azure/static-web-apps/key-vault-secrets. + ## Enumeracija ```bash # List Static Webapps @@ -86,19 +103,24 @@ az rest --method GET \ ## Once you have the database connection name ("default" by default) you can get the connection string with the credentials az rest --method POST \ --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/staticSites//databaseConnections/default/show?api-version=2021-03-01" + +# Check connected backends +az staticwebapp backends show --name --resource-group ``` ## Primeri za generisanje veb aplikacija Možete pronaći lep primer za generisanje veb aplikacije na sledećem linku: [https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github](https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github) 1. Forkujte repozitorijum https://github.com/staticwebdev/react-basic/generate na vaš GitHub nalog i nazovite ga `my-first-static-web-app` -2. U Azure portalu kreirajte Static Web App konfigurišući pristup GitHub-u i birajući prethodno forkovani novi repozitorijum +2. U Azure portalu kreirajte Static Web App konfigurišući pristup Github-u i birajući prethodno forkovani novi repozitorijum 3. Kreirajte ga, sačekajte nekoliko minuta i proverite vašu novu stranicu! -## Post Eksploatacija +## Eskalacija privilegija i post eksploatacija + +Sve informacije o eskalaciji privilegija i post eksploataciji u Azure Static Web Apps mogu se pronaći na sledećem linku: {{#ref}} -../az-privilege-escalation/az-static-web-apps-post-exploitation.md +../az-privilege-escalation/az-static-web-apps-privesc.md {{#endref}} ## Reference