Az - Table Storage

Reading time: 4 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Informações Básicas

Azure Table Storage é um armazenamento NoSQL de chave-valor projetado para armazenar grandes volumes de dados estruturados e não relacionais. Oferece alta disponibilidade, baixa latência e escalabilidade para lidar com grandes conjuntos de dados de forma eficiente. Os dados são organizados em tabelas, com cada entidade identificada por uma chave de partição e uma chave de linha, permitindo buscas rápidas. Suporta recursos como criptografia em repouso, controle de acesso baseado em função e assinaturas de acesso compartilhado para armazenamento seguro e gerenciado, adequado para uma ampla gama de aplicações.

Não existe um mecanismo de backup embutido para o armazenamento de tabelas.

Chaves

PartitionKey

  • A PartitionKey agrupa entidades em partições lógicas. Entidades com a mesma PartitionKey são armazenadas juntas, o que melhora o desempenho da consulta e a escalabilidade.
  • Exemplo: Em uma tabela que armazena dados de funcionários, PartitionKey pode representar um departamento, por exemplo, "RH" ou "TI".

RowKey

  • A RowKey é o identificador único para uma entidade dentro de uma partição. Quando combinada com a PartitionKey, garante que cada entidade na tabela tenha um identificador globalmente único.
  • Exemplo: Para a partição "RH", RowKey pode ser um ID de funcionário, por exemplo, "12345".

Outras Propriedades (Propriedades Personalizadas)

  • Além da PartitionKey e RowKey, uma entidade pode ter propriedades personalizadas adicionais para armazenar dados. Estas são definidas pelo usuário e atuam como colunas em um banco de dados tradicional.
  • As propriedades são armazenadas como pares chave-valor.
  • Exemplo: Nome, Idade, Título poderiam ser propriedades personalizadas para um funcionário.

Enumeração

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

Por padrão, o az cli usará uma chave de conta para assinar uma chave e realizar a ação. Para usar os privilégios do principal do Entra ID, use os parâmetros --auth-mode login.

tip

Use o parâmetro --account-key para indicar a chave de conta a ser usada
Use o parâmetro --sas-token com o token SAS para acessar via um token SAS

Escalação de Privilégios

Mesma coisa que privesc de armazenamento:

Az - Storage Privesc

Pós Exploração

Az - Table Storage Post Exploitation

Persistência

Mesma coisa que persistência de armazenamento:

Az - Storage Persistence

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks