Az - Table Storage

Reading time: 4 minutes

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

Informazioni di Base

Azure Table Storage è un archivio NoSQL a chiave-valore progettato per memorizzare grandi volumi di dati strutturati e non relazionali. Offre alta disponibilità, bassa latenza e scalabilità per gestire grandi set di dati in modo efficiente. I dati sono organizzati in tabelle, con ogni entità identificata da una chiave di partizione e una chiave di riga, consentendo ricerche rapide. Supporta funzionalità come la crittografia a riposo, il controllo degli accessi basato sui ruoli e le firme di accesso condiviso per uno storage sicuro e gestito adatto a una vasta gamma di applicazioni.

Non c'è un meccanismo di backup integrato per l'archiviazione delle tabelle.

Chiavi

PartitionKey

  • Il PartitionKey raggruppa le entità in partizioni logiche. Le entità con lo stesso PartitionKey sono memorizzate insieme, il che migliora le prestazioni delle query e la scalabilità.
  • Esempio: In una tabella che memorizza i dati dei dipendenti, PartitionKey potrebbe rappresentare un dipartimento, ad esempio, "HR" o "IT".

RowKey

  • Il RowKey è l'identificatore unico per un'entità all'interno di una partizione. Quando combinato con il PartitionKey, garantisce che ogni entità nella tabella abbia un identificatore globalmente unico.
  • Esempio: Per la partizione "HR", RowKey potrebbe essere un ID dipendente, ad esempio, "12345".

Altre Proprietà (Proprietà Personalizzate)

  • Oltre al PartitionKey e al RowKey, un'entità può avere ulteriori proprietà personalizzate per memorizzare dati. Queste sono definite dall'utente e funzionano come colonne in un database tradizionale.
  • Le proprietà sono memorizzate come coppie chiave-valore.
  • Esempio: Name, Age, Title potrebbero essere proprietà personalizzate per un dipendente.

Enumerazione

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

Per impostazione predefinita, az cli utilizzerà una chiave dell'account per firmare una chiave e eseguire l'azione. Per utilizzare i privilegi del principale Entra ID, utilizzare i parametri --auth-mode login.

tip

Utilizzare il parametro --account-key per indicare la chiave dell'account da utilizzare
Utilizzare il parametro --sas-token con il token SAS per accedere tramite un token SAS

Privilege Escalation

Stesso di storage privesc:

Az - Storage Privesc

Post Exploitation

Az - Table Storage Post Exploitation

Persistence

Stesso di storage persistence:

Az - Storage Persistence

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks