From e7a644226cb087c9169b78089452987a37c50a00 Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 13 Jan 2026 15:18:29 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/azure-security/az-services/az-stor --- .../azure-security/az-services/az-storage.md | 224 ++++++++++-------- 1 file changed, 129 insertions(+), 95 deletions(-) diff --git a/src/pentesting-cloud/azure-security/az-services/az-storage.md b/src/pentesting-cloud/azure-security/az-services/az-storage.md index 24716221a..1864ad01e 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-storage.md +++ b/src/pentesting-cloud/azure-security/az-services/az-storage.md @@ -1,97 +1,117 @@ -# Az - Speicherkonten & Blobs +# Az - Storage Accounts & Blobs {{#include ../../../banners/hacktricks-training.md}} ## Grundlegende Informationen -Azure Storage Accounts sind grundlegende Dienste in Microsoft Azure, die skalierbaren, sicheren und hochverfügbaren Cloud **Speicher für verschiedene Datentypen** bereitstellen, einschließlich Blobs (Binary Large Objects), Dateien, Warteschlangen und Tabellen. Sie dienen als Container, die diese verschiedenen Speicher Dienste unter einem einzigen Namensraum zur einfachen Verwaltung gruppieren. +Azure Storage Accounts sind grundlegende Dienste in Microsoft Azure, die skalierbaren, sicheren und hochverfügbaren Cloud **Speicher für verschiedene Datentypen** bereitstellen, einschließlich blobs (binary large objects), files, queues und tables. Sie dienen als Container, die diese verschiedenen storage services unter einem einzigen Namespace zur einfachen Verwaltung gruppieren. **Hauptkonfigurationsoptionen**: -- Jedes Speicherkonto muss einen **eindeutigen Namen über alle Azure** haben. -- Jedes Speicherkonto wird in einer **Region** oder in einer erweiterten Azure-Zone bereitgestellt. -- Es ist möglich, die **Premium**-Version des Speicherkontos für bessere Leistung auszuwählen. -- Es ist möglich, zwischen **4 Arten von Redundanz zum Schutz** vor Rack-, Laufwerks- und Rechenzentrums-**Ausfällen** zu wählen. +- Jedes Storage Account muss einen **einzigartigen Namen in ganz Azure** haben. +- Jedes Storage Account wird in einer **Region** oder in einer Azure extended zone bereitgestellt. +- Es ist möglich, die **Premium**-Version des Storage Accounts für bessere Performance auszuwählen. +- Es ist möglich, zwischen **4 Redundanztypen zur Absicherung** gegen Rack-, Laufwerks- und Rechenzentrums**ausfälle** zu wählen. **Sicherheitskonfigurationsoptionen**: -- **Sicheren Transfer für REST-API-Operationen erforderlich**: TLS in jeder Kommunikation mit dem Speicher erforderlich. -- **Ermöglicht anonymen Zugriff auf einzelne Container**: Andernfalls wird es nicht möglich sein, in Zukunft anonymen Zugriff zu aktivieren. -- **Zugriff auf den Schlüssel des Speicherkontos aktivieren**: Andernfalls wird der Zugriff mit Shared Keys verboten. -- **Minimale TLS-Version**. -- **Erlaubter Geltungsbereich für Kopieroperationen**: Erlauben von jedem Speicherkonto, von jedem Speicherkonto aus demselben Entra-Mandanten oder von Speicherkonten mit privaten Endpunkten im selben virtuellen Netzwerk. +- **Require secure transfer for REST API operations**: Erfordert TLS für jegliche Kommunikation mit dem Storage. +- **Allows enabling anonymous access on individual containers**: Wenn nicht gesetzt, kann in Zukunft kein anonymer Zugriff auf Container aktiviert werden. +- **Enable storage account key access**: Wenn nicht gesetzt, ist der Zugriff über Shared Keys untersagt. +- **Minimale TLS-Version** +- **Permitted scope for copy operations**: Erlaubt von jedem Storage Account, von jedem Storage Account im selben Entra tenant oder von Storage Accounts mit private endpoints im selben virtual network. -**Blob-Speicheroptionen**: +**Blob Storage Optionen**: -- **Erlaube die Replikation über Mandanten hinweg**. -- **Zugriffsebene**: Hot (häufig auf Daten zugreifen), Cool und Cold (selten auf Daten zugreifen). +- **Allow cross-tenant replication** +- **Access tier**: Hot (häufig abgerufene Daten), Cool und Cold (selten abgerufene Daten) **Netzwerkoptionen**: -- **Netzwerkzugriff**: -- Erlauben von allen Netzwerken. -- Erlauben von ausgewählten virtuellen Netzwerken und IP-Adressen. -- Öffentlichen Zugriff deaktivieren und privaten Zugriff verwenden. -- **Private Endpunkte**: Ermöglicht eine private Verbindung zum Speicherkonto von einem virtuellen Netzwerk. +- **Network access**: +- Zulassen von allen Netzwerken +- Zulassen von ausgewählten virtual networks und IP-Adressen +- Öffentlichen Zugriff deaktivieren und privaten Zugriff verwenden +- **Private endpoints**: Erlaubt eine private Verbindung vom virtual network zum Storage Account **Datenschutzoptionen**: -- **Wiederherstellung zu einem bestimmten Zeitpunkt für Container**: Ermöglicht die Wiederherstellung von Containern in einen früheren Zustand. -- Es erfordert, dass Versionierung, Änderungsprotokoll und Blob-Weichlöschung aktiviert sind. -- **Weichlöschung für Blobs aktivieren**: Es ermöglicht einen Aufbewahrungszeitraum in Tagen für gelöschte Blobs (auch überschrieben). -- **Weichlöschung für Container aktivieren**: Es ermöglicht einen Aufbewahrungszeitraum in Tagen für gelöschte Container. -- **Weichlöschung für Dateifreigaben aktivieren**: Es ermöglicht einen Aufbewahrungszeitraum in Tagen für gelöschte Dateifreigaben. -- **Versionierung für Blobs aktivieren**: Behalten Sie frühere Versionen Ihrer Blobs. -- **Blob-Änderungsprotokoll aktivieren**: Protokollieren Sie Erstellungs-, Änderungs- und Löschänderungen an Blobs. -- **Unterstützung für Unveränderlichkeit auf Versionsebene aktivieren**: Ermöglicht es Ihnen, eine zeitbasierte Aufbewahrungsrichtlinie auf Kontoebene festzulegen, die für alle Blob-Versionen gilt. -- Unterstützung für Unveränderlichkeit auf Versionsebene und Wiederherstellung zu einem bestimmten Zeitpunkt für Container können nicht gleichzeitig aktiviert werden. +- **Point-in-time restore for containers**: Ermöglicht das Wiederherstellen von Containern in einen früheren Zustand. +- Dafür müssen Versioning, Change Feed und blob soft delete aktiviert sein. +- **Enable soft delete for blobs**: Aktiviert eine Aufbewahrungsfrist in Tagen für gelöschte Blobs (auch bei Überschreibung). +- **Enable soft delete for containers**: Aktiviert eine Aufbewahrungsfrist in Tagen für gelöschte Container. +- **Enable soft delete for file shares**: Aktiviert eine Aufbewahrungsfrist in Tagen für gelöschte file shares. +- **Enable versioning for blobs**: Bewahrt vorherige Versionen Ihrer Blobs. +- **Enable blob change feed**: Protokolliert Erstell-, Änder- und Löschvorgänge an Blobs. +- **Enable version-level immutability support**: Ermöglicht das Setzen einer zeitbasierten Aufbewahrungsrichtlinie auf Kontoebene, die für alle Blob-Versionen gilt. +- Version-level immutability support und point-in-time restore for containers können nicht gleichzeitig aktiviert werden. **Verschlüsselungskonfigurationsoptionen**: -- **Verschlüsselungstyp**: Es ist möglich, Microsoft-managed keys (MMK) oder Customer-managed keys (CMK) zu verwenden. -- **Infrastrukturverschlüsselung aktivieren**: Ermöglicht die doppelte Verschlüsselung der Daten "für mehr Sicherheit". +- **Encryption type**: Es ist möglich, Microsoft-managed keys (MMK) oder Customer-managed keys (CMK) zu verwenden. +- **Enable infrastructure encryption**: Ermöglicht die doppelte Verschlüsselung der Daten "für mehr Sicherheit" -### Speicherendpunkte +### Storage Endpunkte -
SpeicherdienstEndpunkt
Blob-Speicherhttps://.blob.core.windows.net

https://.blob.core.windows.net/?restype=container&comp=list
Data Lake Storagehttps://.dfs.core.windows.net
Azure Fileshttps://.file.core.windows.net
Warteschlangen-Speicherhttps://.queue.core.windows.net
Tabellen-Speicherhttps://.table.core.windows.net
+
SpeicherdienstEndpunkt
Blob storagehttps://.blob.core.windows.net

https://.blob.core.windows.net/?restype=container&comp=list
Data Lake Storagehttps://.dfs.core.windows.net
Azure Fileshttps://.file.core.windows.net
Queue storagehttps://.queue.core.windows.net
Table storagehttps://.table.core.windows.net
-### Öffentliche Exposition +### Öffentliche Freigabe -Wenn "Öffentlichen Zugriff auf Blobs erlauben" **aktiviert** ist (standardmäßig deaktiviert), ist es beim Erstellen eines Containers möglich: +Wenn "Allow Blob public access" **aktiviert** ist (standardmäßig deaktiviert), ist es beim Erstellen eines Containers möglich: -- **Öffentlichen Zugriff auf Blobs zu gewähren** (Sie müssen den Namen kennen). -- **Container-Blobs aufzulisten** und **sie zu lesen**. -- Es vollständig **privat** zu machen. +- Öffentlichen **Lesezugriff auf Blobs** zu gewähren (der Name muss bekannt sein). +- **Container-Blobs auflisten** und **lesen**. +- Es vollständig **privat** machen.
-### Verbindung zum Speicher +#### Überprüfung anonymen Blob-Zugriffs -Wenn Sie einen **Speicher** finden, zu dem Sie eine Verbindung herstellen können, können Sie das Tool [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) verwenden, um dies zu tun. +- **Locate storage accounts** die Daten exponieren könnten: `az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'`. Wenn `allowBlobPublicAccess` `false` ist, können Container nicht öffentlich gemacht werden. +- **Inspect risky accounts** um das Flag und andere schwache Einstellungen zu bestätigen: `az storage account show --name --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'`. +- **Enumerate container-level exposure** in Konten, bei denen das Flag aktiviert ist: +```bash +az storage container list --account-name \ +--query '[].{name:name, access:properties.publicAccess}' +``` +- `"Blob"`: anonyme Lesezugriffe erlaubt **nur wenn der Blob-Name bekannt ist** (kein Auflisten). +- `"Container"`: anonyme **Auflistung + Lesen** aller Blobs. +- `null`: privat; Authentifizierung erforderlich. +- **Zugriff ohne Zugangsdaten nachweisen:** +- Wenn `publicAccess` `Container` ist, funktioniert anonymes Auflisten: `curl "https://.blob.core.windows.net/?restype=container&comp=list"`. +- Für `Blob` und `Container` funktioniert der anonyme Blob-Download, wenn der Name bekannt ist: +```bash +az storage blob download -c -n --account-name --file /dev/stdout +# or via raw HTTP +curl "https://.blob.core.windows.net//" +``` +### Mit Storage verbinden -## Zugriff auf Speicher +Wenn Sie auf ein **Storage** stoßen, zu dem Sie eine Verbindung herstellen können, können Sie dafür das Tool [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) verwenden. + +## Zugriff auf Storage ### RBAC -Es ist möglich, Entra ID-Prinzipien mit **RBAC-Rollen** zu verwenden, um auf Speicherkonten zuzugreifen, und es ist der empfohlene Weg. +Es ist möglich, Entra ID-Principals mit **RBAC-Rollen** zu verwenden, um auf Storage-Konten zuzugreifen, und es ist die empfohlene Methode. ### Zugriffsschlüssel -Die Speicherkonten haben Zugriffsschlüssel, die verwendet werden können, um darauf zuzugreifen. Dies bietet **vollen Zugriff auf das Speicherkonto.** +Die Storage-Konten verfügen über Zugriffsschlüssel, die zum Zugriff verwendet werden können. Dies gewährt den **vollen Zugriff auf das Storage-Konto.**
### **Shared Keys & Lite Shared Keys** -Es ist möglich, [**Shared Keys zu generieren**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key), die mit den Zugriffsschlüsseln signiert sind, um den Zugriff auf bestimmte Ressourcen über eine signierte URL zu autorisieren. +Es ist möglich, [**generate Shared Keys**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key), die mit den Zugriffsschlüsseln signiert sind, zu erstellen, um den Zugriff auf bestimmte Ressourcen über eine signierte URL zu autorisieren. > [!NOTE] -> Beachten Sie, dass der Teil `CanonicalizedResource` die Ressource der Speicher Dienste (URI) darstellt. Und wenn ein Teil der URL codiert ist, sollte er auch im `CanonicalizedResource` codiert werden. +> Beachten Sie, dass der Teil `CanonicalizedResource` die Ressource des Storage-Dienstes (URI) repräsentiert. Und wenn ein Teil der URL kodiert ist, sollte er auch innerhalb des `CanonicalizedResource` kodiert sein. > [!NOTE] -> Dies wird **standardmäßig von `az` cli** verwendet, um Anfragen zu authentifizieren. Um die Anmeldeinformationen des Entra ID-Prinzips zu verwenden, geben Sie den Parameter `--auth-mode login` an. +> Dies wird **standardmäßig vom `az` cli** verwendet, um Anfragen zu authentifizieren. Um stattdessen die Entra ID-Prinzipal-Anmeldeinformationen zu verwenden, geben Sie den Parameter `--auth-mode login` an. -- Es ist möglich, einen **Shared Key für Blob-, Warteschlangen- und Dateidienste** zu generieren, indem die folgenden Informationen signiert werden: +- Es ist möglich, einen **shared key for blob, queue and file services** zu generieren, indem die folgenden Informationen signiert werden: ```bash StringToSign = VERB + "\n" + Content-Encoding + "\n" + @@ -108,7 +128,7 @@ Range + "\n" + CanonicalizedHeaders + CanonicalizedResource; ``` -- Es ist möglich, einen **gemeinsamen Schlüssel für Tabellenservices** zu generieren, indem die folgenden Informationen signiert werden: +- Es ist möglich, einen **shared key for table services** zu generieren, indem man die folgenden Informationen signiert: ```bash StringToSign = VERB + "\n" + Content-MD5 + "\n" + @@ -116,7 +136,7 @@ Content-Type + "\n" + Date + "\n" + CanonicalizedResource; ``` -- Es ist möglich, einen **lite shared key für Blob-, Queue- und Dateidienste** zu generieren, indem die folgenden Informationen signiert werden: +- Es ist möglich, einen **lite shared key for blob, queue and file services** zu generieren, indem die folgenden Informationen signiert werden: ```bash StringToSign = VERB + "\n" + Content-MD5 + "\n" + @@ -125,12 +145,12 @@ Date + "\n" + CanonicalizedHeaders + CanonicalizedResource; ``` -- Es ist möglich, einen **lite shared key für Tabellenservices** zu generieren, indem die folgenden Informationen signiert werden: +- Es ist möglich, einen **lite shared key for table services** zu generieren, indem man die folgenden Informationen signiert: ```bash StringToSign = Date + "\n" CanonicalizedResource ``` -Dann kann der Schlüssel im Authorization-Header gemäß der Syntax verwendet werden: +Um den key zu verwenden, kann dies im Authorization-Header mit folgender Syntax erfolgen: ```bash Authorization="[SharedKey|SharedKeyLite] :" #e.g. @@ -144,73 +164,76 @@ Content-Length: 0 ``` ### **Shared Access Signature** (SAS) -Shared Access Signatures (SAS) sind sichere, zeitlich begrenzte URLs, die **spezifische Berechtigungen zum Zugriff auf Ressourcen** in einem Azure Storage-Konto gewähren, ohne die Zugriffsschlüssel des Kontos offenzulegen. Während Zugriffsschlüssel vollständigen administrativen Zugriff auf alle Ressourcen bieten, ermöglicht SAS eine granulare Kontrolle, indem Berechtigungen (wie Lesen oder Schreiben) festgelegt und eine Ablaufzeit definiert werden. +Shared Access Signatures (SAS) sind sichere, zeitlich begrenzte URLs, die bestimmte Berechtigungen zum Zugriff auf Ressourcen in einem Azure Storage-Konto gewähren, ohne die Zugriffsschlüssel des Kontos preiszugeben. Während Zugriffsschlüssel vollen administrativen Zugriff auf alle Ressourcen bieten, ermöglicht SAS eine granulare Kontrolle, indem Berechtigungen (z. B. read oder write) festgelegt und ein Ablaufzeitpunkt definiert wird. -#### SAS-Typen +#### SAS Types -- **Benutzerdelegation SAS**: Dies wird von einem **Entra ID-Prinzipal** erstellt, der die SAS signiert und die Berechtigungen vom Benutzer an die SAS delegiert. Es kann nur mit **Blob- und Data Lake Storage** verwendet werden ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Es ist möglich, alle generierten benutzergestützten SAS zu **widerrufen**. -- Auch wenn es möglich ist, eine Delegation SAS mit "mehr" Berechtigungen zu generieren, als der Benutzer hat. Wenn der Prinzipal diese jedoch nicht hat, funktioniert es nicht (kein Privesc). -- **Service SAS**: Dies wird mit einem der **Zugriffsschlüssel** des Speicherkontos signiert. Es kann verwendet werden, um den Zugriff auf spezifische Ressourcen in einem einzelnen Speicherdienst zu gewähren. Wenn der Schlüssel erneuert wird, funktioniert die SAS nicht mehr. -- **Konto SAS**: Es wird ebenfalls mit einem der **Zugriffsschlüssel** des Speicherkontos signiert. Es gewährt Zugriff auf Ressourcen über die Dienste eines Speicherkontos (Blob, Queue, Table, File) und kann dienstebezogene Operationen umfassen. +- **User delegation SAS**: Dies wird von einem **Entra ID principal** erstellt, der die SAS signiert und die Berechtigungen vom Benutzer an die SAS delegiert. Es kann nur mit **blob and data lake storage** verwendet werden ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Es ist möglich, alle erzeugten user delegated SAS zu **revoke**. +- Es ist sogar möglich, eine delegation SAS mit "mehr" Berechtigungen zu erzeugen, als der Benutzer hat. Wenn der principal diese Berechtigungen jedoch nicht besitzt, funktioniert sie nicht (kein privesc). +- **Service SAS**: Diese wird mit einem der Storage-Account **Zugriffsschlüssel** signiert. Sie kann verwendet werden, um Zugriff auf bestimmte Ressourcen in einem einzelnen Storage-Service zu gewähren. Wenn der Key erneuert wird, funktioniert die SAS nicht mehr. +- **Account SAS**: Sie wird ebenfalls mit einem der Storage-Account **Zugriffsschlüssel** signiert. Sie gewährt Zugriff auf Ressourcen über mehrere Storage-Account-Services hinweg (Blob, Queue, Table, File) und kann service-level Operationen einschließen. -Eine SAS-URL, die mit einem **Zugriffsschlüssel** signiert ist, sieht so aus: +Eine SAS-URL, die mit einem **access key** signiert ist, sieht so aus: - `https://.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D` -Eine SAS-URL, die als **Benutzerdelegation** signiert ist, sieht so aus: +Eine SAS-URL, die als **user delegation** signiert ist, sieht so aus: - `https://.blob.core.windows.net/testing-container?sp=r&st=2024-11-22T15:07:40Z&se=2024-11-22T23:07:40Z&skoid=d77c71a1-96e7-483d-bd51-bd753aa66e62&sktid=fdd066e1-ee37-49bc-b08f-d0e152119b04&skt=2024-11-22T15:07:40Z&ske=2024-11-22T23:07:40Z&sks=b&skv=2022-11-02&spr=https&sv=2022-11-02&sr=c&sig=7s5dJyeE6klUNRulUj9TNL0tMj2K7mtxyRc97xbYDqs%3D` -Beachten Sie einige **HTTP-Parameter**: +Beachte einige **http params**: -- Der **`se`**-Parameter gibt das **Ablaufdatum** der SAS an. -- Der **`sp`**-Parameter gibt die **Berechtigungen** der SAS an. -- Der **`sig`** ist die **Signatur**, die die SAS validiert. +- The **`se`** param indicates the **expiration date** of the SAS +- The **`sp`** param indicates the **permissions** of the SAS +- The **`sig`** is the **signature** validating the SAS -#### SAS-Berechtigungen +#### SAS permissions -Beim Generieren einer SAS ist es erforderlich, die Berechtigungen anzugeben, die sie gewähren soll. Abhängig von dem Objekt, über das die SAS generiert wird, können unterschiedliche Berechtigungen enthalten sein. Zum Beispiel: +Beim Erstellen einer SAS muss angegeben werden, welche Berechtigungen diese gewähren soll. Je nach Objekt, für das die SAS generiert wird, können unterschiedliche Berechtigungen enthalten sein. Zum Beispiel: - (a)dd, (c)reate, (d)elete, (e)xecute, (f)ilter_by_tags, (i)set_immutability_policy, (l)ist, (m)ove, (r)ead, (t)ag, (w)rite, (x)delete_previous_version, (y)permanent_delete -## SFTP-Unterstützung für Azure Blob Storage +## SFTP Support for Azure Blob Storage -Azure Blob Storage unterstützt jetzt das SSH File Transfer Protocol (SFTP), das einen sicheren Dateitransfer und -management direkt zu Blob Storage ermöglicht, ohne dass benutzerdefinierte Lösungen oder Produkte von Drittanbietern erforderlich sind. +Azure Blob Storage unterstützt jetzt das SSH File Transfer Protocol (SFTP), wodurch sicherer Dateitransfer und -verwaltung direkt in Blob Storage möglich ist, ohne benutzerdefinierte Lösungen oder Drittanbieterprodukte. -### Hauptmerkmale +### Key Features -- Protokollunterstützung: SFTP funktioniert mit Blob Storage-Konten, die mit hierarchischem Namensraum (HNS) konfiguriert sind. Dies organisiert Blobs in Verzeichnisse und Unterverzeichnisse für eine einfachere Navigation. -- Sicherheit: SFTP verwendet lokale Benutzeridentitäten zur Authentifizierung und integriert sich nicht in RBAC oder ABAC. Jeder lokale Benutzer kann sich über folgende Methoden authentifizieren: -- Von Azure generierte Passwörter -- Öffentliche-private SSH-Schlüsselpaare -- Granulare Berechtigungen: Berechtigungen wie Lesen, Schreiben, Löschen und Auflisten können lokalen Benutzern für bis zu 100 Container zugewiesen werden. -- Netzwerküberlegungen: SFTP-Verbindungen erfolgen über Port 22. Azure unterstützt Netzwerkkonfigurationen wie Firewalls, private Endpunkte oder virtuelle Netzwerke, um den SFTP-Verkehr abzusichern. +- Protocol Support: SFTP funktioniert mit Blob Storage-Konten, bei denen das hierarchical namespace (HNS) konfiguriert ist. Dadurch werden blobs in Verzeichnisse und Unterverzeichnisse organisiert, was die Navigation erleichtert. +- Security: SFTP verwendet lokale Benutzeridentitäten zur Authentifizierung und integriert sich nicht in RBAC oder ABAC. Jeder lokale Benutzer kann sich authentifizieren über: +- Azure-generated passwords +- Public-private SSH key pairs +- Granular Permissions: Berechtigungen wie Read, Write, Delete und List können lokalen Benutzern für bis zu 100 Container zugewiesen werden. +- Networking Considerations: SFTP-Verbindungen werden über Port 22 hergestellt. Azure unterstützt Netzwerk-Konfigurationen wie Firewalls, private Endpoints oder virtuelle Netzwerke, um SFTP-Verkehr abzusichern. -### Einrichtungsanforderungen +### Setup Requirements -- Hierarchischer Namensraum: HNS muss beim Erstellen des Speicherkontos aktiviert sein. -- Unterstützte Verschlüsselung: Erfordert von Microsoft genehmigte kryptografische Algorithmen (z. B. rsa-sha2-256, ecdsa-sha2-nistp256). -- SFTP-Konfiguration: -- SFTP im Speicherkonto aktivieren. -- Lokale Benutzeridentitäten mit entsprechenden Berechtigungen erstellen. -- Home-Verzeichnisse für Benutzer konfigurieren, um ihren Startort innerhalb des Containers zu definieren. +- Hierarchical Namespace: HNS muss beim Erstellen des Storage-Kontos aktiviert sein. +- Supported Encryption: Erfordert kryptografische Algorithmen, die vom Microsoft Security Development Lifecycle (SDL) genehmigt sind (z. B. rsa-sha2-256, ecdsa-sha2-nistp256). +- SFTP Configuration: +- SFTP im Storage-Konto aktivieren. +- Lokale Benutzeridentitäten mit passenden Berechtigungen erstellen. +- Home-Verzeichnisse für Benutzer konfigurieren, um deren Startort innerhalb des Containers festzulegen. -### Berechtigungen +### Permissions -| Berechtigung | Symbol | Beschreibung | -| --------------------- | ------ | ------------------------------------ | -| **Lesen** | `r` | Dateiinhalte lesen. | -| **Schreiben** | `w` | Dateien hochladen und Verzeichnisse erstellen. | -| **Auflisten** | `l` | Inhalte von Verzeichnissen auflisten. | -| **Löschen** | `d` | Dateien oder Verzeichnisse löschen. | -| **Erstellen** | `c` | Dateien oder Verzeichnisse erstellen. | -| **Besitz ändern** | `o` | Den besitzenden Benutzer oder die Gruppe ändern. | -| **Berechtigungen ändern** | `p` | ACLs für Dateien oder Verzeichnisse ändern. | +| Permission | Symbol | Description | +| ---------------------- | ------ | ------------------------------------ | +| **Read** | `r` | Dateiinhalt lesen. | +| **Write** | `w` | Dateien hochladen und Verzeichnisse erstellen. | +| **List** | `l` | Inhalte von Verzeichnissen auflisten. | +| **Delete** | `d` | Dateien oder Verzeichnisse löschen. | +| **Create** | `c` | Dateien oder Verzeichnisse erstellen. | +| **Modify Ownership** | `o` | Eigentümer oder Gruppe ändern. | +| **Modify Permissions** | `p` | ACLs von Dateien oder Verzeichnissen ändern. | ## Enumeration {{#tabs }} {{#tab name="az cli" }} + +
+az cli enumeration ```bash # Get storage accounts az storage account list #Get the account name from here @@ -327,10 +350,15 @@ az storage account local-user list \ --account-name \ --resource-group ``` +
+ {{#endtab }} {{#tab name="Az PowerShell" }} -```bash + +
+Az PowerShell enumeration +```powershell # Get storage accounts Get-AzStorageAccount | fl # Get rules to access the storage account @@ -387,6 +415,8 @@ New-AzStorageBlobSASToken ` -Permission racwdl ` -ExpiryTime (Get-Date "2024-12-31T23:59:00Z") ``` +
+ {{#endtab }} {{#endtabs }} @@ -396,28 +426,32 @@ New-AzStorageBlobSASToken ` az-file-shares.md {{#endref}} -## Privilegienerweiterung +## Privilege Escalation {{#ref}} ../az-privilege-escalation/az-storage-privesc.md {{#endref}} -## Nach der Ausnutzung +## Post Exploitation {{#ref}} ../az-post-exploitation/az-blob-storage-post-exploitation.md {{#endref}} -## Persistenz +## Persistence {{#ref}} ../az-persistence/az-storage-persistence.md {{#endref}} -## Referenzen +## Quellen - [https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction) - [https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview](https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview) - [https://learn.microsoft.com/en-us/azure/storage/blobs/secure-file-transfer-protocol-support](https://learn.microsoft.com/en-us/azure/storage/blobs/secure-file-transfer-protocol-support) +- [Holiday Hack Challenge 2025: Blob Storage (Storage Secrets)](https://0xdf.gitlab.io/holidayhack2025/act1/blob-storage) +- [https://learn.microsoft.com/en-us/cli/azure/storage/account](https://learn.microsoft.com/en-us/cli/azure/storage/account) +- [https://learn.microsoft.com/en-us/cli/azure/storage/container](https://learn.microsoft.com/en-us/cli/azure/storage/container) +- [https://learn.microsoft.com/en-us/cli/azure/storage/blob](https://learn.microsoft.com/en-us/cli/azure/storage/blob) {{#include ../../../banners/hacktricks-training.md}}