diff --git a/src/pentesting-cloud/azure-security/az-services/az-container-instances-apps-jobs.md b/src/pentesting-cloud/azure-security/az-services/az-container-instances-apps-jobs.md new file mode 100644 index 000000000..127bb27b4 --- /dev/null +++ b/src/pentesting-cloud/azure-security/az-services/az-container-instances-apps-jobs.md @@ -0,0 +1,116 @@ +# Az - Container Instances + +{{#include ../../../banners/hacktricks-training.md}} + +## Grundinformationen + +**Azure Container Instances (ACI)** ist ein serverloser Container-Dienst, der es Ihnen ermöglicht, einzelne Container schnell auszuführen, ohne die zugrunde liegende Infrastruktur verwalten zu müssen. **Azure Container Apps (ACA)** erweitert dies, indem es eine vollständig verwaltete Umgebung für das Ausführen von Mikrodiensten und Webanwendungen mit Funktionen wie ereignisgesteuertem Autoscaling, integrierter Dapr-Integration und Unterstützung für komplexe Orchestrierungsszenarien bietet. **Container App Jobs** sind eine spezialisierte Funktion innerhalb von ACA, die für das Ausführen von kurzlebigen, Batch- oder geplanten Aufgaben konzipiert ist, die für einen bestimmten Zeitraum ausgeführt werden und dann beendet werden. + +Unterschiede: +- ACI ist ideal für **einfache**, eigenständige Container-Workloads, bei denen minimale Orchestrierung erforderlich ist. +- ACA eignet sich am besten für den Aufbau skalierbarer, miteinander verbundener Mikrodienste mit erweiterten Funktionen wie Autoscaling und Dienstentdeckung. +- Container App Jobs konzentrieren sich auf **einmalige oder geplante Aufgaben** und bieten eine vereinfachte Möglichkeit, Hintergrund- oder Batch-Jobs innerhalb der ACA-Umgebung auszuführen. + +### Konfigurationen + +Besondere Optionen für **ACI**: +- In Bezug auf das Netzwerk ist es möglich, eine dieser 3 Optionen auszuwählen: +- **Öffentlich** (Standard) +- **Privat** (nur vom VNet aus zugänglich) +- **Keine** (kein Netzwerkzugang) + +Besondere Optionen für **ACA**: +- Es ist möglich, den **Verkehr** zum Container auf die Container-App-Umgebung zu beschränken oder ihn öffentlich zu lassen. +- Es ist möglich, einen **externen Identitätsanbieter** (Microsoft, Facebook, Google und Twitter) für die Authentifizierung zu verwenden. +- Es ist möglich, **App-Geheimnisse** (im Klartext oder als Links zu einem Tresor, dem ein MI mit Zugriff zugewiesen ist) zu speichern. +- Es ist möglich, **Revisionen und Replikate der App** zu haben. +- Es ist möglich, aus einem bestimmten **Quellcode oder Artefakt** zu deployen, anstatt einen Container zu verwenden. Für den Quellcode muss der Zugriff auf GitHub gewährt werden. Für Artefakte ist es möglich, diese nach der Erstellung der App hochzuladen. + +Besondere Optionen für **Jobs**: +- Der Auslösertyp kann **manuell, geplant oder ereignisbasiert** sein (wie das Eintreffen einer Nachricht in einer Warteschlange). + +Gemeinsame Optionen: +- Um einen Container zu erstellen, ist es möglich, ein öffentliches Image, ein Container-Image aus einem Azure Container Registry oder ein externes Repository zu verwenden, was möglicherweise **eine Passwortkonfiguration** zum Zugriff erfordert. +- Das bedeutet, dass die Konfiguration des Containers sensible Informationen enthalten könnte. +- Es ist auch möglich, gängige Docker-Einstellungen zu konfigurieren, wie: +- **Umgebungsvariablen** (auf sensible Informationen überprüfen) +- **Volumes** (auch von Azure Files) +- **Ports** zum Freigeben +- **CPU- und Speicherkapazitätsgrenzen** +- **Neustartpolitik** +- **Als privilegiert ausführen** +- Befehlszeilen für Container **überschreiben und Argumente** (kann auch in bestehenden Containern geändert werden) +- ... + +## Aufzählung + +> [!WARNING] +> Bei der Aufzählung könnten Sie sensible Konfigurationen wie **Umgebungsvariablen**, **Netzwerkdetails** oder **verwaltete Identitäten** offenbaren. +```bash +# ACI +## List all container instances in the subscription +az container list + +## Show detailed information about a specific container instance +az container show --name --resource-group + +## Fetch logs from a container +az container logs --name --resource-group + +## Execute a command in a running container and get the output +az container exec --name --resource-group --exec-command "/bin/sh" # Get a shell + +## Get yaml configuration of the container group +az container export --name --resource-group --file + +# ACA +## List all container apps in the subscription +az containerapp list + +## Show detailed information about a specific container app +az containerapp show --name --resource-group + +## List app environments +az containerapp env list --resource-group + +## Fetch logs from a container app +az containerapp logs show --name --resource-group + +## Get configured secrets +az containerapp secret list --name --resource-group +### Get value +az containerapp secret show --name --resource-group --secret-name + +## Get authentication options +az containerapp auth show --name --resource-group + +## Get a shell +az containerapp exec --name --resource-group --command "sh" + +## Get debugging shell +az containerapp debug --name --resource-group + +# Jobs +## List all container apps jobs in a resource group +az containerapp job list --resource-group + +## Show detailed information about a specific container app job +az containerapp job show --name --resource-group + +## Fetch logs from a container app job +az containerapp job logs show --name --resource-group + +## Fetch executions from a container app job +az containerapp job execution list --name --resource-group +az containerapp job execution show --name --resource-group --job-execution-name + +## Start a job execution (for manual jobs) +az containerapp job start --name --resource-group +``` +## Privilegienerhöhung & Nachausnutzung + +{{#ref}} +../az-privilege-escalation/az-container-instances-apps-jobs-privesc.md +{{#endref}} + +{{#include ../../../banners/hacktricks-training.md}}