Az - Storage Accounts & Blobs
Last updated
Last updated
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Azure-Speicherkonten 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.
Hauptkonfigurationsoptionen:
Jedes Speicherkonto muss einen eindeutigen Namen in ganz 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.
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 ist es nicht möglich, in Zukunft anonymen Zugriff zu aktivieren.
Aktivieren Sie den Zugriff auf den Schlüssel des Speicherkontos: 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.
Blob-Speicheroptionen:
Erlaube die Replikation über Mandanten hinweg
Zugriffsebene: Hot (häufig auf Daten zugreifen), Cool und Cold (selten auf Daten zugreifen)
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
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.
Aktivieren Sie die Weichlöschung für Blobs: Es ermöglicht einen Aufbewahrungszeitraum in Tagen für gelöschte Blobs (auch überschrieben).
Aktivieren Sie die Weichlöschung für Container: Es ermöglicht einen Aufbewahrungszeitraum in Tagen für gelöschte Container.
Aktivieren Sie die Weichlöschung für Dateifreigaben: Es ermöglicht einen Aufbewahrungszeitraum in Tagen für gelöschte Dateifreigaben.
Aktivieren Sie die Versionierung für Blobs: Behalten Sie frühere Versionen Ihrer Blobs.
Aktivieren Sie das Änderungsprotokoll für Blobs: Führen Sie Protokolle über Erstellungs-, Änderungs- und Löschvorgänge an Blobs.
Aktivieren Sie die Unterstützung für die Unveränderlichkeit auf Versionsebene: Ermöglicht es Ihnen, eine zeitbasierte Aufbewahrungsrichtlinie auf Kontoebene festzulegen, die für alle Blob-Versionen gilt.
Unterstützung für die Unveränderlichkeit auf Versionsebene und Wiederherstellung zu einem bestimmten Zeitpunkt für Container können nicht gleichzeitig aktiviert werden.
Verschlüsselungskonfigurationsoptionen:
Verschlüsselungstyp: Es ist möglich, von Microsoft verwaltete Schlüssel (MMK) oder vom Kunden verwaltete Schlüssel (CMK) zu verwenden.
Aktivieren Sie die Infrastrukturverschlüsselung: Ermöglicht die doppelte Verschlüsselung der Daten "für mehr Sicherheit".
Blob-Speicher |
|
Data Lake Storage |
|
Azure Files |
|
Warteschlangen-Speicher |
|
Tabellen-Speicher |
|
Wenn "Öffentlichen Zugriff auf Blobs erlauben" aktiviert ist (standardmäßig deaktiviert), ist es beim Erstellen eines Containers möglich:
Öffentlichen Zugriff zum Lesen von Blobs zu gewähren (Sie müssen den Namen kennen).
Container-Blobs aufzulisten und sie zu lesen.
Es vollständig privat zu machen.
Wenn Sie einen Speicher finden, zu dem Sie eine Verbindung herstellen können, können Sie das Tool Microsoft Azure Storage Explorer verwenden, um dies zu tun.
Es ist möglich, Entra ID-Prinzipien mit RBAC-Rollen zu verwenden, um auf Speicherkonten zuzugreifen, und es ist der empfohlene Weg.
Die Speicherkonten haben Zugriffsschlüssel, die verwendet werden können, um darauf zuzugreifen. Dies bietet vollen Zugriff auf das Speicherkonto.
Es ist möglich, geteilte Schlüssel zu generieren, die mit den Zugriffsschlüsseln signiert sind, um den Zugriff auf bestimmte Ressourcen über eine signierte URL zu autorisieren.
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 sein.
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.
Es ist möglich, einen geteilten Schlüssel für Blob-, Warteschlangen- und Dateidienste zu generieren, indem die folgenden Informationen signiert werden:
Es ist möglich, einen gemeinsamen Schlüssel für Tabellendienste zu generieren, indem die folgenden Informationen signiert werden:
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 für Tabellenservices zu generieren, indem die folgenden Informationen signiert werden:
Dann kann der Schlüssel im Authorization-Header gemäß der Syntax verwendet werden:
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.
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-Speicher verwendet werden (docs). 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, Warteschlange, Tabelle, Datei) und kann dienstebezogene Operationen umfassen.
Eine SAS-URL, die mit einem Zugriffsschlüssel signiert ist, sieht so aus:
https://<container_name>.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:
https://<container_name>.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:
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
Beim Generieren einer SAS ist es erforderlich, die Berechtigungen anzugeben, die sie gewähren soll. Abhängig vom Objekt, über 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
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)