Az - Blob Storage

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Grundlegende Informationen

Aus den Dokumenten: Azure Blob-Speicher ist die Objektspeicherlösung von Microsoft für die Cloud. Blob-Speicher ist optimiert für die Speicherung großer Mengen unstrukturierter Daten. Unstrukturierte Daten sind Daten, die sich nicht an ein bestimmtes Datenmodell oder eine bestimmte Definition halten, wie z. B. Text- oder Binärdaten.

Blob-Speicher bietet drei Arten von Ressourcen:

  • Das Speicherkonto (eindeutiger Name)

  • Ein Container im Speicherkonto (Ordner)

  • Ein Blob in einem Container

Unterschiedliche Arten von Speicher

Blob-Speicher

https://<speicherkonto>.blob.core.windows.net https://<stg-acc>.blob.core.windows.net/<container-name>?restype=container&comp=list

Azure Data Lake Storage Gen2

https://<speicherkonto>.dfs.core.windows.net

Azure-Dateien

https://<speicherkonto>.file.core.windows.net

Warteschlangenspeicher

https://<speicherkonto>.queue.core.windows.net

Tabellenspeicher

https://<speicherkonto>.table.core.windows.net

Zugriff auf Speicher

  • Verwenden Sie Azure AD-Prinzipale über unterstützte RBAC-Rollen.

  • Zugriffsschlüssel: Verwenden Sie Zugriffsschlüssel des Speicherkontos. Dies bietet vollen Zugriff auf das Speicherkonto.

  • Shared Access Signature (SAS): Zeitlich begrenzt und spezifische Berechtigungen.

  • Sie können eine SAS-URL mit einem Zugriffsschlüssel generieren (schwieriger zu erkennen).

  • Da die SAS aus dem Zugriffsschlüssel generiert wird, funktioniert die SAS nicht mehr, wenn sie erneuert wird.

Öffentliche Exposition

Wenn "Öffentlicher Zugriff auf Blob zulassen" aktiviert ist (standardmäßig deaktiviert), ist es möglich:

  • Öffentlicher Zugriff zum Lesen von Blobs zu gewähren (Sie müssen den Namen kennen).

  • Liste Container-Blobs und lesen sie.

Verbindung zum Speicher

Wenn Sie auf einen Speicher stoßen, zu dem Sie eine Verbindung herstellen können, können Sie das Tool Microsoft Azure Storage Explorer verwenden.

SAS-URLs

Aus den Dokumenten: Ein Shared Access Signature (SAS) bietet sicheren delegierten Zugriff auf Ressourcen in Ihrem Speicherkonto. Mit einem SAS haben Sie eine genaue Kontrolle darüber, wie ein Client auf Ihre Daten zugreifen kann. Zum Beispiel:

  • Auf welche Ressourcen der Client zugreifen darf.

  • Welche Berechtigungen er für diese Ressourcen hat.

  • Wie lange der SAS gültig ist.

Eine SAS-URL 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

Verwenden Sie Storage Explorer, um auf die Daten zuzugreifen oder Python:

#pip3 install azure-storage-blob
from azure.storage.blob import BlobServiceClient

# List containers
conn_str="<SAS URL>"
svc = BlobServiceClient.from_connection_string(conn_str=conn_str)
for c in svc.list_containers():
print(c['name']

# List blobs inside conteiner
container = svc.get_container_client(container="<container_name>")
for b in container.list_blobs():
print(b['name']

# Download file
blob = svc.get_blob_client(container="<container_name>",blob="<blob_name>")
with open("download.out","wb") as f:
f.write(blob.download_blob().readall())

Benutzerdelegierung SAS

Sie können ein Shared Access Signature (SAS)-Token für den Zugriff auf einen Container, ein Verzeichnis oder einen Blob sichern, indem Sie entweder Azure Active Directory (Azure AD) Anmeldeinformationen oder einen Kontoschlüssel verwenden. Um eine Benutzerdelegierung SAS zu erstellen, müssen Sie zuerst einen Benutzerdelegierungsschlüssel anfordern, den Sie dann zum Signieren des SAS verwenden.

Es wird Unterstützung für eine Benutzerdelegierung Shared Access Signature (SAS) sowohl in Azure Blob Storage als auch in Azure Data Lake Storage Gen2 bereitgestellt. Es ist jedoch wichtig zu beachten, dass Gespeicherte Zugriffsrichtlinien nicht mit einer Benutzerdelegierung SAS kompatibel sind.

Beachten Sie, dass die Benutzerdelegierung SAS mit Azure AD-Anmeldeinformationen anstelle von Speicherkontoschlüsseln gesichert ist. Dies verhindert, dass Clients/Anwendungen Speicherschlüssel speichern/abrufen, um SAS zu erstellen.

Service SAS

Ein Service SAS ist mit dem Speicherkontoschlüssel gesichert. Ein Service SAS delegiert den Zugriff auf eine Ressource nur in einem der Azure Storage-Dienste: Blob-Speicher, Warteschlangenspeicher, Tabellenspeicher oder Azure-Dateien. Die URI für eine SAS auf Serviceniveau besteht aus der URI zur Ressource, für die die SAS den Zugriff delegiert, gefolgt vom SAS-Token.

Um Azure Active Directory (Azure AD)-Anmeldeinformationen zum Sichern eines SAS für einen Container oder Blob zu verwenden, verwenden Sie eine Benutzerdelegierung SAS.

KontoSAS

Ein KontoSAS ist mit einem der Speicherkontoschlüssel (es gibt 2) gesichert. Ein KontoSAS delegiert den Zugriff auf Ressourcen in einem oder mehreren der Speicherdienste. Alle über eine Service- oder Benutzerdelegierung SAS verfügbaren Operationen sind auch über ein KontoSAS verfügbar.

Aus den Dokumenten: Durch Erstellen eines KontoSAS können Sie:

  • Den Zugriff auf Serviceniveau-Operationen delegieren, die derzeit nicht mit einer spezifischen Service-SAS verfügbar sind, wie z.B. die Operationen Get/Set Service Properties und Get Service Stats.

  • Den Zugriff auf mehr als einen Dienst in einem Speicherkonto gleichzeitig delegieren. Sie können beispielsweise den Zugriff auf Ressourcen sowohl im Azure Blob Storage als auch in den Azure-Dateien durch Verwendung eines KontoSAS delegieren.

  • Den Zugriff auf Schreib- und Löschvorgänge für Container, Warteschlangen, Tabellen und Dateifreigaben delegieren, die mit einer objektspezifischen SAS nicht verfügbar sind.

  • Eine IP-Adresse oder einen IP-Adressbereich angeben, von dem aus Anfragen akzeptiert werden sollen.

  • Das HTTP-Protokoll angeben, von dem aus Anfragen akzeptiert werden sollen (entweder HTTPS oder HTTP/HTTPS).

Enumeration

# Get storage accounts
az storage account list #Get the account name from here

# Get keys to authenticate
az storage account keys list --account-name <name>

# Get shares
az storage share list --account-name <name> --account-key <key>

# Get dirs/files inside the share
az storage file list --account-name <name> --share-name <share-name> --account-key <key>
## If type is "dir", you can continue enumerationg files inside of it
az storage file list --account-name <name> --share-name <prev_dir/share-name> --account-key <key>

# Download a complete share (with directories and files inside of them)
az storage file download-batch -d . --source <share-name> --account-name <name> --account-key <key>

Referenzen

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated