Az - Table Storage

Reading time: 4 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Grundinformationen

Azure Table Storage ist ein NoSQL-Key-Value-Speicher, der für die Speicherung großer Mengen strukturierter, nicht-relationaler Daten konzipiert ist. Es bietet hohe Verfügbarkeit, niedrige Latenz und Skalierbarkeit, um große Datensätze effizient zu verarbeiten. Daten sind in Tabellen organisiert, wobei jede Entität durch einen Partition Key und einen Row Key identifiziert wird, was schnelle Abfragen ermöglicht. Es unterstützt Funktionen wie Verschlüsselung im Ruhezustand, rollenbasierte Zugriffskontrolle und Shared Access Signatures für sicheren, verwalteten Speicher, der für eine Vielzahl von Anwendungen geeignet ist.

Es gibt keinen integrierten Backup-Mechanismus für Table Storage.

Schlüssel

PartitionKey

  • Der PartitionKey gruppiert Entitäten in logische Partitionen. Entitäten mit demselben PartitionKey werden zusammen gespeichert, was die Abfrageleistung und Skalierbarkeit verbessert.
  • Beispiel: In einer Tabelle, die Mitarbeiterdaten speichert, könnte der PartitionKey eine Abteilung darstellen, z.B. "HR" oder "IT".

RowKey

  • Der RowKey ist der eindeutige Identifikator für eine Entität innerhalb einer Partition. In Kombination mit dem PartitionKey stellt er sicher, dass jede Entität in der Tabelle einen global eindeutigen Identifikator hat.
  • Beispiel: Für die Partition "HR" könnte der RowKey eine Mitarbeiter-ID sein, z.B. "12345".

Weitere Eigenschaften (Benutzerdefinierte Eigenschaften)

  • Neben dem PartitionKey und RowKey kann eine Entität zusätzliche benutzerdefinierte Eigenschaften zur Speicherung von Daten haben. Diese sind benutzerdefiniert und fungieren wie Spalten in einer traditionellen Datenbank.
  • Eigenschaften werden als Schlüssel-Wert-Paare gespeichert.
  • Beispiel: Name, Alter, Titel könnten benutzerdefinierte Eigenschaften für einen Mitarbeiter sein.

Aufzählung

bash
# Get storage accounts
az storage account list

# List tables
az storage table list --account-name <name>

# Read table
az storage entity query \
--account-name <name> \
--table-name <t-name> \
--top 10

# Write table
az storage entity insert \
--account-name <STORAGE_ACCOUNT_NAME> \
--table-name <TABLE_NAME> \
--entity PartitionKey=<PARTITION_KEY> RowKey=<ROW_KEY> <PROPERTY_KEY>=<PROPERTY_VALUE>

# Write example
az storage entity insert \
--account-name mystorageaccount \
--table-name mytable \
--entity PartitionKey=HR RowKey=12345 Name="John Doe" Age=30 Title="Manager"

# Update row
az storage entity merge \
--account-name mystorageaccount \
--table-name mytable \
--entity PartitionKey=pk1 RowKey=rk1 Age=31

note

Standardmäßig verwendet die az CLI einen Kontoschlüssel, um einen Schlüssel zu signieren und die Aktion auszuführen. Um die Berechtigungen des Entra ID-Prinzipals zu verwenden, verwenden Sie die Parameter --auth-mode login.

tip

Verwenden Sie den Parameter --account-key, um den zu verwendenden Kontoschlüssel anzugeben
Verwenden Sie den Parameter --sas-token mit dem SAS-Token, um über ein SAS-Token zuzugreifen

Privilegieneskalation

Gleich wie bei der Speicherprivilegieneskalation:

Az - Storage Privesc

Post-Exploitation

Az - Table Storage Post Exploitation

Persistenz

Gleich wie bei der Speicherpersistenz:

Az - Storage Persistence

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks