Az - Container Instances

Reading time: 6 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Informações Básicas

Azure Container Instances (ACI) é um serviço de contêiner sem servidor que permite executar contêineres individuais rapidamente sem gerenciar qualquer infraestrutura subjacente. Azure Container Apps (ACA) estende isso oferecendo um ambiente totalmente gerenciado para executar microsserviços e aplicativos da web com recursos como escalonamento automático baseado em eventos, integração Dapr embutida e suporte para cenários de orquestração complexos. Container App Jobs são um recurso especializado dentro do ACA projetado para executar tarefas de curta duração, em lote ou agendadas que são executadas por um período finito e, em seguida, saem.

Diferenças:

  • ACI é ideal para cargas de trabalho de contêiner simples e autônomas, onde uma orquestração mínima é necessária.
  • ACA é mais adequado para construir microsserviços escaláveis e interconectados com recursos avançados como escalonamento automático e descoberta de serviços.
  • Container App Jobs se concentram em tarefas únicas ou agendadas, proporcionando uma maneira simplificada de executar trabalhos em segundo plano ou em lote dentro do ambiente ACA.

Configurações

Opções especiais para ACI:

  • Em relação à rede, é possível selecionar uma dessas 3 opções:
  • Público (padrão)
  • Privado (acessível apenas a partir da VNet)
  • Nenhum (sem acesso à rede)

Opções especiais para ACA:

  • É possível restringir o tráfego para o contêiner ao ambiente do aplicativo de contêiner ou deixá-lo público.
  • É possível usar um provedor de identidade externo (Microsoft, Facebook, Google e Twitter) para autenticação.
  • É possível armazenar segredos do App (em texto claro no aplicativo ou como links para um cofre atribuindo um MI com acesso a ele).
  • É possível ter revisões e réplicas do aplicativo.
  • É possível implantar a partir de um código-fonte ou artefato específico em vez de usar um contêiner. Para o código-fonte, deve-se conceder acesso ao GitHub. Para artefatos, é possível fazer o upload após criar o aplicativo.

Opções especiais para jobs:

  • O tipo de gatilho pode ser manual, agendado ou baseado em eventos (como uma mensagem chegando em uma fila).

Opções comuns:

  • Para criar um contêiner, é possível usar uma imagem pública, uma imagem de contêiner de um Azure Container Registry ou um repositório externo, que pode exigir a configuração de uma senha para acessá-lo.
  • Isso significa que a configuração do contêiner pode conter informações sensíveis.
  • Também é possível configurar configurações comuns do docker, como:
  • Variáveis de ambiente (verifique informações sensíveis)
  • Volumes (mesmo de Azure Files)
  • Portas a expor
  • Limites de CPU e memória
  • Política de reinício
  • Executar como privilegiado
  • Sobrescrever a linha de comando do contêiner para executar e argumentos (pode ser modificado em contêineres existentes também)
  • ...

Enumeração

warning

Ao enumerar, você pode revelar configurações sensíveis, como variáveis de ambiente, detalhes da rede ou identidades gerenciadas.

bash
# ACI
## List all container instances in the subscription
az container list

## Show detailed information about a specific container instance
az container show --name <container-name> --resource-group <res-group>

## Fetch logs from a container
az container logs --name <container-name> --resource-group <res-group>

## Execute a command in a running container and get the output
az container exec --name <container-name> --resource-group <res-group> --exec-command "/bin/sh" # Get a shell

## Get yaml configuration of the container group
az container export  --name <container-name> --resource-group <res-group> --file </path/local/file.yml>

# ACA
## List all container apps in the subscription
az containerapp list

## Show detailed information about a specific container app
az containerapp show --name <app-name> --resource-group <res-group>

## List app environments
az containerapp env list --resource-group <res-group>

## Fetch logs from a container app
az containerapp logs show --name <app-name> --resource-group <res-group>

## Get configured secrets
az containerapp secret list --name <app-name> --resource-group <res-group>
### Get value
az containerapp secret show --name <app-name> --resource-group <res-group> --secret-name <secret-name>

## Get authentication options
az containerapp auth  show --name <app-name> --resource-group <res-group>

## Get a shell
az containerapp exec --name <app-name> --resource-group <res-group> --command "sh"

## Get debugging shell
az containerapp debug --name <app-name> --resource-group <res-group>

# Jobs
## List all container apps jobs in a resource group
az containerapp job list --resource-group <res-group>

## Show detailed information about a specific container app job
az containerapp job show --name <job-name> --resource-group <res-group>

## Fetch logs from a container app job
az containerapp job logs show --name <job-name> --resource-group <res-group>

## Fetch executions from a container app job
az containerapp job execution list --name <job-name> --resource-group <res-group>
az containerapp job execution show --name <job-name> --resource-group <res-group> --job-execution-name <job-execution>

## Start a job execution (for manual jobs)
az containerapp job start --name <job-name> --resource-group <res-group>

Escalação de Privilégios & Pós-Exploração

Az - Container Instances, Apps & Jobs Privesc

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks