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
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
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
# 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:
Pós Exploração
Az - Table Storage Post Exploitation
Persistência
Mesma coisa que persistência de armazenamento:
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
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.