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:
@@ -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>"""
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 %}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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**.
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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" %}
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user