Translated ['src/pentesting-cloud/azure-security/az-persistence/az-cloud

This commit is contained in:
Translator
2025-01-26 17:59:45 +00:00
parent 4f2d76a46e
commit 3701fac710
11 changed files with 30 additions and 28 deletions

View File

@@ -77,6 +77,8 @@ def ref(matchobj):
logger.error(f'Error getting chapter title: {path.normpath(path.join(dir,href))}')
sys.exit(1)
if href.endswith("/README.md"):
href = href.replace("/README.md", "/index.html")
template = f"""<a class="content_ref" href="{href}"><span class="content_ref_label">{title}</span></a>"""

View File

@@ -398,8 +398,8 @@
- [Az - Enumeration Tools](pentesting-cloud/azure-security/az-enumeration-tools.md)
- [Az - Unauthenticated Enum & Initial Entry](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/README.md)
- [Az - OAuth Apps Phishing](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-oauth-apps-phishing.md)
- [Az - Storage Unath](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-storage-unauth.md)
- [Az - VMs Unath](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-vms-unauth.md)
- [Az - Storage Unauth](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-storage-unauth.md)
- [Az - VMs Unauth](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-vms-unauth.md)
- [Az - Device Code Authentication Phishing](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
- [Az - Password Spraying](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
- [Az - Services](pentesting-cloud/azure-security/az-services/README.md)

View File

@@ -50,7 +50,7 @@ Aprenda e pratique Hacking GCP: <img src="../../../.gitbook/assets/image (2) (1)
* 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).
* **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 %}

View File

@@ -24,7 +24,7 @@ Para mais informações sobre SQL Database, confira:
### ("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.
Com esta permissão, você pode criar ou atualizar, fluxos de trabalho do Azure Logic Apps. Fluxos de trabalho definem processos automatizados e integrações entre vários sistemas e serviços.
{% code overflow="wrap" %}
```bash

View File

@@ -21,14 +21,14 @@ Os aplicativos têm algumas configurações interessantes:
- 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.
- **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 + 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.
- **Web App + Banco de Dados**: O console web permite criar um aplicativo 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**.
- **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.
## 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** (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.
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 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.
@@ -72,7 +72,7 @@ Os App Services permitem fazer upload do código como um arquivo zip por padrão
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:
- **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á desabilitado 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.
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.
@@ -81,7 +81,7 @@ Além disso, é sempre interessante verificar os **logs** gerados pelos Webjobs,
## Slots
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.
Os Slots do Azure App Service 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**.

View File

@@ -23,7 +23,7 @@ Não há permissões atribuídas a este serviço, portanto, não há técnicas d
### 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.
**Ambiente**: O Azure Cloud Shell fornece um ambiente seguro, executando no Azure Linux, a própria distribuição Linux 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.

View File

@@ -12,9 +12,9 @@
### Planos Diferentes
- **Flex Consumption Plan**: Oferece **escalonamento dinâmico e orientado a eventos** com preços pay-as-you-go, adicionando ou removendo instâncias de função com base na demanda. Suporta **rede virtual** e **instâncias pré-provisionadas** para reduzir inícios a frio, tornando-o adequado para **cargas de trabalho variáveis** que não requerem suporte a contêineres.
- **Traditional Consumption Plan**: A opção sem servidor padrão, onde você **paga apenas pelos recursos de computação quando as funções são executadas**. Ele escala automaticamente com base nos eventos recebidos e inclui **otimizações de início a frio**, mas não suporta implantações de contêiner. Ideal para **cargas de trabalho intermitentes** que requerem escalonamento automático.
- **Traditional Consumption Plan**: A opção sem servidor padrão, onde você **paga apenas pelos recursos de computação quando as funções são executadas**. Escala automaticamente com base em eventos recebidos e inclui **otimizações de início a frio**, mas não suporta implantações de contêiner. Ideal para **cargas de trabalho intermitentes** que requerem escalonamento automático.
- **Premium Plan**: Projetado para **desempenho consistente**, com **trabalhadores pré-aquecidos** para eliminar inícios a frio. Oferece **tempos de execução estendidos, rede virtual** e suporta **imagens personalizadas do Linux**, tornando-o perfeito para **aplicações críticas** que necessitam de alto desempenho e recursos avançados.
- **Dedicated Plan**: Executa em máquinas virtuais dedicadas com **faturamento previsível** e suporta escalonamento manual ou automático. Permite executar várias apps no mesmo plano, fornece **isolamento de computação** e garante **acesso seguro à rede** por meio de App Service Environments, tornando-o ideal para **aplicações de longa duração** que necessitam de alocação consistente de recursos.
- **Dedicated Plan**: Executa em máquinas virtuais dedicadas com **faturamento previsível** e suporta escalonamento manual ou automático. Permite executar várias apps no mesmo plano, fornece **isolamento de computação** e garante **acesso seguro à rede** através de App Service Environments, tornando-o ideal para **aplicações de longa duração** que necessitam de alocação consistente de recursos.
- **Container Apps**: Permite implantar **function apps containerizadas** em um ambiente gerenciado, juntamente com microsserviços e APIs. Suporta bibliotecas personalizadas, migração de aplicativos legados e **processamento GPU**, eliminando a necessidade de gerenciamento de clusters Kubernetes. Ideal para **aplicações escaláveis e orientadas a eventos**.
### **Buckets de Armazenamento**
@@ -58,7 +58,7 @@ 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.
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**.
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**.
> [!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.
@@ -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:
- **ANONYMOUS**: **Todos** podem acessar a função pela URL.
- **FUNCTION**: O endpoint é acessível apenas a usuários usando uma **chave de função, host ou mestre**.
- **ADMIN**: O endpoint é acessível apenas a usuários com uma **chave mestre**.
- **FUNCTION**: O endpoint é acessível apenas para usuários usando uma **chave de função, host ou mestre**.
- **ADMIN**: O endpoint é acessível apenas para usuários com uma **chave mestre**.
**Tipo de chaves:**
@@ -104,7 +104,7 @@ az-app-services.md
### 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 em 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 python se parece com isso:
<details>

View File

@@ -19,7 +19,7 @@ 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>
ou verificar o código na seção "**Visualização do código do Logic App**".
ou verificar o código na seção "**Visualização do código do Logic app**".
### Proteção SSRF

View File

@@ -9,7 +9,7 @@ Azure Service Bus é um **serviço de mensagens** baseado em nuvem projetado par
### Conceitos Chave
1. **Filas:** seu propósito é armazenar mensagens até que o receptor esteja pronto.
- As mensagens são ordenadas, carimbadas com data/hora e armazenadas de forma durável.
- As mensagens são ordenadas, com timestamp e armazenadas de forma durável.
- Entregues em modo pull (recuperação sob demanda).
- Suporta comunicação ponto a ponto.
2. **Tópicos:** Mensagens de publicação-assinatura para transmissão.
@@ -23,9 +23,9 @@ Azure Service Bus é um **serviço de mensagens** baseado em nuvem projetado par
Alguns recursos avançados são:
- **Sessões de Mensagens**: Garante processamento FIFO e suporta padrões de solicitação-resposta.
- **Encaminhamento Automático**: Transfere mensagens entre filas ou tópicos no mesmo namespace.
- **Auto-Encaminhamento**: Transfere mensagens entre filas ou tópicos no mesmo namespace.
- **Dead-Lettering**: Captura mensagens não entregáveis para revisão.
- **Entrega Programada**: Retarda o processamento de mensagens para tarefas futuras.
- **Entrega Agendada**: Retarda o processamento de mensagens para tarefas futuras.
- **Atraso de Mensagens**: Adia a recuperação de mensagens até que esteja pronto.
- **Transações**: Agrupa operações em execução atômica.
- **Filtros e Ações**: Aplica regras para filtrar ou anotar mensagens.

View File

@@ -15,11 +15,11 @@ Azure Static Web Apps é um serviço de nuvem para hospedar **aplicativos web es
- **Fluxo de trabalho do GitHub Actions**: Neste caso, uma Ação do Github muito semelhante também é implantada no repositório e o **token também é armazenado em um segredo**. No entanto, esta Ação do Github tem uma diferença, ela usa a **`actions/github-script@v6`** para obter o IDToken do repositório e usá-lo para implantar o aplicativo.
- Mesmo que em ambos os casos a ação **`Azure/static-web-apps-deploy@v1`** seja usada com um token no parâmetro `azure_static_web_apps_api_token`, neste segundo caso, um token aleatório com um formato válido como `12345cbb198a77a092ff885781a62a15d51ef5e3654ca11234509ab54547270704-4140ccee-e04f-424f-b4ca-3d4dd123459c00f0702071d12345` é suficiente para implantar o aplicativo, pois a autorização é feita com o IDToken no parâmetro `github_id_token`.
### Autenticação Básica de Aplicativos Web
### Autenticação Básica do Aplicativo Web
É 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 da web permite configurá-la para proteger apenas ambientes de staging ou tanto o staging quanto o de produção.
É assim que, no momento da escrita, um aplicativo web protegido por senha se parece:
É assim que, no momento da redação, um aplicativo web protegido por senha se parece:
<figure><img src="../../../images/azure_static_password.png" alt=""><figcaption></figcaption></figure>
@@ -69,13 +69,13 @@ 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`
### Identidades Gerenciadas
### Managed Identities
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**.
Azure Static Web Apps pode ser configurado para usar **managed identities**, no entanto, como mencionado em [this 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.
## Enumeração
## Enumeration
{% tabs %}
{% tab title="az cli" %}

View File

@@ -12,17 +12,17 @@ Não **existe um mecanismo de backup embutido** para o armazenamento de tabelas.
#### **PartitionKey**
- 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.
- A **PartitionKey agrupa entidades em partições lógicas**. Entidades com a mesma 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, `PartitionKey` pode representar um departamento, por exemplo, `"RH"` ou `"TI"`.
#### **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.
- A **RowKey é o identificador único** para uma entidade dentro de uma partição. Quando combinada com a PartitionKey, garante que cada entidade na tabela tenha um identificador globalmente único.
- Exemplo: Para a partição `"RH"`, `RowKey` pode ser um ID de funcionário, por exemplo, `"12345"`.
#### **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 da 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**.
- Exemplo: `Nome`, `Idade`, `Título` poderiam ser propriedades personalizadas para um funcionário.