Az - Container Instances

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

Información Básica

Azure Container Instances (ACI) es un servicio de contenedores sin servidor que te permite ejecutar contenedores individuales rápidamente sin gestionar ninguna infraestructura subyacente. Azure Container Apps (ACA) amplía esto al ofrecer un entorno completamente gestionado para ejecutar microservicios y aplicaciones web con características como escalado automático basado en eventos, integración Dapr incorporada y soporte para escenarios de orquestación complejos. Container App Jobs son una característica especializada dentro de ACA diseñada para ejecutar tareas de corta duración, por lotes o programadas que se ejecutan por un período finito y luego finalizan.

Diferencias:

  • ACI es ideal para cargas de trabajo de contenedores simples y autónomas donde se necesita una orquestación mínima.
  • ACA es más adecuada para construir microservicios escalables e interconectados con características avanzadas como escalado automático y descubrimiento de servicios.
  • Container App Jobs se centran en tareas únicas o programadas, proporcionando una forma simplificada de ejecutar trabajos en segundo plano o por lotes dentro del entorno ACA.

Configuraciones

Opciones especiales para ACI:

  • En cuanto a la red, es posible seleccionar una de estas 3 opciones:
  • Pública (predeterminado)
  • Privada (solo accesible desde la VNet)
  • Ninguna (sin acceso a la red)

Opciones especiales para ACA:

  • Es posible restringir el tráfico al contenedor al entorno de la aplicación de contenedor o dejarlo público.
  • Es posible usar un proveedor de identidad externo (Microsoft, Facebook, Google y Twitter) para la autenticación.
  • Es posible almacenar secretos de la aplicación (en texto claro la aplicación o como enlaces a un vault asignando un MI con acceso sobre él).
  • Es posible tener revisiones y réplicas de la aplicación.
  • Es posible desplegar desde un código fuente o artefacto específico en lugar de usar un contenedor. Para el código fuente, se debe dar acceso a GitHub. Para artefactos, es posible subirlo después de crear la aplicación.

Opciones especiales para jobs:

  • El tipo de activador puede ser manual, programado o basado en eventos (como la llegada de un mensaje en una cola).

Opciones comunes:

  • Para crear un contenedor, es posible usar una imagen pública, una imagen de contenedor de un Azure Container Registry o un repositorio externo, lo que podría requerir configurar una contraseña para acceder a él.
  • Esto significa que la configuración del contenedor podría contener información sensible.
  • También es posible configurar configuraciones comunes de docker como:
  • Variables de entorno (verificar información sensible)
  • Volúmenes (incluso de Azure Files)
  • Puertos a exponer
  • Límites de CPU y memoria
  • Política de reinicio
  • Ejecutar como privilegiado
  • Sobrescribir la línea de comandos del contenedor para ejecutar y argumentos (también se puede modificar en contenedores existentes)

Enumeración

Warning

Al enumerar, podrías revelar configuraciones sensibles como variables de entorno, detalles de red o identidades gestionadas.

# 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>

Escalación de Privilegios y Post Explotación

Az - Container Instances, Apps & Jobs Privesc

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks