Az - Container Instances

Reading time: 8 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

基本情報

Azure Container Instances (ACI) は、基盤となるインフラストラクチャを管理することなく、個々のコンテナを迅速に実行できるサーバーレスコンテナサービスです。 Azure Container Apps (ACA) は、イベント駆動のオートスケーリング、組み込みのDapr統合、複雑なオーケストレーションシナリオのサポートなどの機能を備えたマイクロサービスやWebアプリを実行するための完全管理型環境を提供します。 Container App Jobs は、有限の期間実行されてから終了する短命のバッチまたはスケジュールされたタスクを実行するために設計されたACA内の特別な機能です。

違い:

  • ACIは、最小限のオーケストレーションが必要なシンプルなスタンドアロンコンテナワークロードに最適です。
  • ACAは、オートスケーリングやサービスディスカバリなどの高度な機能を備えたスケーラブルで相互接続されたマイクロサービスの構築に最適です。
  • Container App Jobsは、一回限りまたはスケジュールされたタスクに焦点を当てており、ACA環境内でバックグラウンドまたはバッチジョブを実行するための効率的な方法を提供します。

設定

ACIの特別なオプション:

  • ネットワーキングに関しては、次の3つのオプションのいずれかを選択できます:
  • Public (デフォルト)
  • Private (VNetからのみアクセス可能)
  • None (ネットワークアクセスなし)

ACAの特別なオプション:

  • コンテナへのトラフィックを制限することができ、コンテナアプリ環境内に留めるか、公開のままにすることができます。
  • 認証のために外部アイデンティティプロバイダー(Microsoft、Facebook、Google、Twitter)を使用することができます。
  • アプリのシークレットを保存することが可能です(アプリ内のクリアテキストまたはMIにアクセス権を付与したボールトへのリンクとして)。
  • アプリのリビジョンとレプリカを持つことができます。
  • コンテナを使用する代わりに特定のソースコードまたはアーティファクトからデプロイすることができます。ソースコードの場合、GitHubへのアクセスが必要です。アーティファクトの場合、アプリを作成した後にアップロードすることが可能です。

ジョブの特別なオプション:

  • トリガータイプは手動、スケジュール、またはイベントベース(キューにメッセージが到着するなど)にすることができます。

共通オプション:

  • コンテナを作成するために、パブリックイメージ、Azure Container Registryからのコンテナイメージ、または外部リポジトリを使用することができ、これにはアクセスするためのパスワードの設定が必要な場合があります。
  • これは、コンテナの設定に機密情報が含まれる可能性があることを意味します。
  • また、次のような一般的なDocker設定を構成することも可能です:
  • 環境変数(機密情報を確認)
  • ボリューム(Azure Filesからも)
  • 公開するポート
  • CPUおよびメモリ制限
  • 再起動ポリシー
  • 特権として実行
  • コンテナのコマンドラインを上書きして実行し、引数を指定(既存のコンテナでも変更可能)
  • ...

列挙

warning

列挙する際には、環境変数ネットワークの詳細、または管理されたアイデンティティなどの機密設定が明らかになる可能性があります。

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>

権限昇格とポストエクスプロイト

Az - Container Instances, Apps & Jobs Privesc

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする