Az - Container Instances

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks

Podstawowe informacje

Azure Container Instances (ACI) to bezserwerowa usługa kontenerowa, która pozwala na szybkie uruchamianie pojedynczych kontenerów bez zarządzania jakąkolwiek infrastrukturą. Azure Container Apps (ACA) rozszerza to, oferując w pełni zarządzane środowisko do uruchamiania mikroserwisów i aplikacji internetowych z funkcjami takimi jak automatyczne skalowanie oparte na zdarzeniach, wbudowana integracja Dapr oraz wsparcie dla złożonych scenariuszy orkiestracji. Container App Jobs to specjalizowana funkcja w ACA zaprojektowana do uruchamiania krótkotrwałych, wsadowych lub zaplanowanych zadań, które wykonują się przez określony czas, a następnie kończą.

Różnice:

  • ACI jest idealne dla prosty, samodzielnych obciążeń kontenerowych, gdzie potrzebna jest minimalna orkiestracja.
  • ACA najlepiej nadaje się do budowania skalowalnych, połączonych mikroserwisów z zaawansowanymi funkcjami, takimi jak automatyczne skalowanie i odkrywanie usług.
  • Container App Jobs koncentrują się na jednorazowych lub zaplanowanych zadaniach, zapewniając uproszczony sposób uruchamiania zadań w tle lub wsadowych w środowisku ACA.

Konfiguracje

Specjalne opcje dla ACI:

  • W odniesieniu do sieci możliwe jest wybranie jednej z tych 3 opcji:
  • Publiczny (domyślny)
  • Prywatny (dostępny tylko z VNet)
  • Brak (brak dostępu do sieci)

Specjalne opcje dla ACA:

  • Możliwe jest ograniczenie ruchu do kontenera do środowiska aplikacji kontenerowej lub pozostawienie go publicznym.
  • Możliwe jest użycie zewnętrznego dostawcy tożsamości (Microsoft, Facebook, Google i Twitter) do uwierzytelniania.
  • Możliwe jest przechowywanie sekretów aplikacji (w postaci jawnej lub jako linki do skarbca przypisując MI z dostępem do niego).
  • Możliwe jest posiadanie rewizji i replik aplikacji.
  • Możliwe jest wdrożenie z konkretnego kodu źródłowego lub artefaktu zamiast używania kontenera. W przypadku kodu źródłowego należy zapewnić dostęp do GitHub. W przypadku artefaktów możliwe jest ich przesłanie po utworzeniu aplikacji.

Specjalne opcje dla zadań:

  • Typ wyzwalacza może być ręczny, zaplanowany lub oparty na zdarzeniach (np. przybycie wiadomości do kolejki).

Wspólne opcje:

  • Aby utworzyć kontener, można użyć publicznego obrazu, obrazu kontenera z Azure Container Registry lub zewnętrznego repozytorium, co może wymagać skonfigurowania hasła do uzyskania dostępu.
  • Oznacza to, że konfiguracja kontenera może zawierać wrażliwe informacje.
  • Możliwe jest również skonfigurowanie wspólnych ustawień dockera, takich jak:
  • Zmienne środowiskowe (sprawdź pod kątem wrażliwych informacji)
  • Wolumeny (nawet z Azure Files)
  • Porty do wystawienia
  • Limity CPU i pamięci
  • Polityka ponownego uruchamiania
  • Uruchom jako uprzywilejowany
  • Nadpisz wiersz poleceń kontenera do uruchomienia i argumenty (można modyfikować również w istniejących kontenerach)

Enumeracja

Warning

Podczas enumeracji możesz ujawnić wrażliwe konfiguracje, takie jak zmienne środowiskowe, szczegóły sieci lub zarządzane tożsamości.

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

Eskalacja Uprawnień i Po Eksploatacji

Az - Container Instances, Apps & Jobs Privesc

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks