Az - Table Storage

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks

Podstawowe informacje

Azure Table Storage to magazyn NoSQL typu klucz-wartość zaprojektowany do przechowywania dużych wolumenów ustrukturyzowanych, nieliniowych danych. Oferuje wysoką dostępność, niskie opóźnienia i skalowalność, aby efektywnie obsługiwać duże zbiory danych. Dane są zorganizowane w tabelach, a każda encja jest identyfikowana przez klucz partycji i klucz wiersza, co umożliwia szybkie wyszukiwanie. Obsługuje funkcje takie jak szyfrowanie w spoczynku, kontrola dostępu oparta na rolach oraz podpisy dostępu współdzielonego dla bezpiecznego, zarządzanego przechowywania odpowiedniego dla szerokiego zakresu aplikacji.

Nie ma wbudowanego mechanizmu kopii zapasowej dla magazynu tabel.

Klucze

PartitionKey

  • PartitionKey grupuje encje w logiczne partycje. Encje z tym samym PartitionKey są przechowywane razem, co poprawia wydajność zapytań i skalowalność.
  • Przykład: W tabeli przechowującej dane pracowników, PartitionKey może reprezentować dział, np. "HR" lub "IT".

RowKey

  • RowKey jest unikalnym identyfikatorem dla encji w obrębie partycji. W połączeniu z PartitionKey zapewnia, że każda encja w tabeli ma globalnie unikalny identyfikator.
  • Przykład: Dla partycji "HR", RowKey może być identyfikatorem pracownika, np. "12345".

Inne właściwości (Właściwości niestandardowe)

  • Oprócz PartitionKey i RowKey, encja może mieć dodatkowe właściwości niestandardowe do przechowywania danych. Są one definiowane przez użytkownika i działają jak kolumny w tradycyjnej bazie danych.
  • Właściwości są przechowywane jako pary klucz-wartość.
  • Przykład: Name, Age, Title mogą być właściwościami niestandardowymi dla pracownika.

Enumeracja

# 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

Domyślnie az cli użyje klucza konta do podpisania klucza i wykonania akcji. Aby użyć uprawnień głównego identyfikatora Entra ID, użyj parametrów --auth-mode login.

Tip

Użyj parametru --account-key, aby wskazać klucz konta do użycia
Użyj parametru --sas-token z tokenem SAS, aby uzyskać dostęp za pomocą tokena SAS

Privilege Escalation

Tak samo jak privesc przechowywania:

Az - Storage Privesc

Post Exploitation

Az - Table Storage Post Exploitation

Persistence

Tak samo jak trwałość przechowywania:

Az - Storage Persistence

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks