Translated ['src/pentesting-cloud/azure-security/az-services/az-static-w

This commit is contained in:
Translator
2025-01-09 08:16:53 +00:00
parent b46f46b673
commit f9497ca518

View File

@@ -4,29 +4,33 @@
## Static Web Apps Basic Information
Azure Static Web Apps - це хмарний сервіс для хостингу **статичних веб-додатків з автоматичним CI/CD з репозиторіїв, таких як GitHub**. Він пропонує глобальну доставку контенту, безсерверні бекенди та вбудований HTTPS, що робить його безпечним і масштабованим. Однак ризики включають неправильно налаштований CORS, недостатню аутентифікацію та підробку контенту, що може піддати додатки атакам, таким як XSS та витік даних, якщо їх не управляти належним чином.
Azure Static Web Apps - це хмарний сервіс для хостингу **статичних веб-додатків з автоматичним CI/CD з репозиторіїв, таких як GitHub**. Він пропонує глобальну доставку контенту, безсерверні бекенди та вбудований HTTPS, що робить його безпечним і масштабованим. Однак, навіть якщо сервіс називається "статичним", це не означає, що він повністю безпечний. Ризики включають неправильно налаштований CORS, недостатню аутентифікацію та підробку контенту, що може піддати додатки атакам, таким як XSS та витік даних, якщо їх не належним чином управляти.
### Deployment Authentication
> [!TIP]
> Коли створюється статичний додаток, ви можете вибрати **політику авторизації розгортання** між **токеном розгортання** та **робочим процесом GitHub Actions**.
- **Токен розгортання**: Токен генерується і використовується для аутентифікації процесу розгортання. Будь-хто з **цим токеном достатньо, щоб розгорнути нову версію додатку**. **Github Action автоматично розгортається** в репозиторії з токеном у секреті для розгортання нової версії додатку щоразу, коли репозиторій оновлюється.
- **Робочий процес GitHub Actions**: У цьому випадку дуже схожий Github Action також розгортається в репозиторії, і **токен також зберігається в секреті**. Однак, цей Github Action має відмінність, він використовує **`actions/github-script@v6`** для отримання IDToken репозиторію та використання його для розгортання додатку.
- Навіть якщо в обох випадках використовується дія **`Azure/static-web-apps-deploy@v1`** з токеном у параметрі `azure_static_web_apps_api_token`, у цьому другому випадку випадковий токен з форматом, що підходить, як `12345cbb198a77a092ff885781a62a15d51ef5e3654ca11234509ab54547270704-4140ccee-e04f-424f-b4ca-3d4dd123459c00f0702071d12345`, є достатнім для розгортання додатку, оскільки авторизація здійснюється за допомогою IDToken у параметрі `github_id_token`.
### Web App Authentication
### Web App Basic Authentication
Можливо **налаштувати пароль** для доступу до веб-додатку. Веб-консоль дозволяє налаштувати його для захисту лише тестових середовищ або обох - тестового та виробничого.
Можна **налаштувати пароль** для доступу до веб-додатку. Веб-консоль дозволяє налаштувати його для захисту лише середовищ стадії або обох - стадії та виробничого.
Ось як на момент написання виглядає веб-додаток з паролем:
<figure><img src="../../../images/azure_static_password.png" alt=""><figcaption></figcaption></figure>
Можливо побачити **чи використовується якийсь пароль** і які середовища захищені за допомогою:
Можна побачити **чи використовується якийсь пароль** і які середовища захищені за допомогою:
```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"
```
Однак це **не покаже пароль у відкритому вигляді**, лише щось на кшталт: `"password": "**********************"`.
### Маршрути
### Маршрути та ролі
Маршрути визначають **як обробляються вхідні HTTP запити** в статичному веб-додатку. Налаштовані у файлі **`staticwebapp.config.json`**, вони контролюють переписування URL, перенаправлення, обмеження доступу та авторизацію на основі ролей, забезпечуючи належну обробку ресурсів та безпеку.
@@ -58,6 +62,19 @@ az rest --method GET \
}
}
```
Зверніть увагу, як можна **захистити шлях за допомогою ролі**, тоді користувачам потрібно буде автентифікуватися в додатку та отримати цю роль для доступу до шляху. Також можливо **створити запрошення**, надаючи конкретні ролі конкретним користувачам, які входять через EntraID, Facebook, GitHub, Google, Twitter, що може бути корисно для ескалації привілеїв у додатку.
> [!TIP]
> Зверніть увагу, що можливо налаштувати додаток так, щоб **зміни у файлі `staticwebapp.config.json`** не приймалися. У цьому випадку може бути недостатньо просто змінити файл з Github, але також потрібно **змінити налаштування в додатку**.
URL для стадії має цей формат: `https://<app-subdomain>-<PR-num>.<region>.<res-of-app-domain>`, наприклад: `https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net`
### Керовані ідентичності
Azure Static Web Apps можна налаштувати для використання **керованих ідентичностей**, однак, як зазначено в [цьому FAQ](https://learn.microsoft.com/en-gb/azure/static-web-apps/faq#does-static-web-apps-support-managed-identity-), вони підтримуються лише для **витягування секретів з Azure Key Vault для цілей автентифікації, а не для доступу до інших ресурсів Azure**.
Для отримання додаткової інформації ви можете знайти посібник Azure про використання секрету сховища в статичному додатку за адресою https://learn.microsoft.com/en-us/azure/static-web-apps/key-vault-secrets.
## Перерахування
```bash
# List Static Webapps
@@ -86,6 +103,9 @@ az rest --method GET \
## 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"
# Check connected backends
az staticwebapp backends show --name <name> --resource-group <res-group>
```
## Приклади для створення веб-додатків
@@ -95,10 +115,12 @@ az rest --method POST \
2. У порталі Azure створіть Static Web App, налаштувавши доступ до Github і вибравши раніше форкнутий новий репозиторій
3. Створіть його, почекайте кілька хвилин і перевірте вашу нову сторінку!
## Постексплуатація
## Підвищення привілеїв та постексплуатація
Вся інформація про підвищення привілеїв та постексплуатацію в Azure Static Web Apps може бути знайдена за наступним посиланням:
{{#ref}}
../az-privilege-escalation/az-static-web-apps-post-exploitation.md
../az-privilege-escalation/az-static-web-apps-privesc.md
{{#endref}}
## Посилання