3.7 KiB
Az - Table Storage
{{#include ../../../banners/hacktricks-training.md}}
Basiese Inligting
Azure Table Storage is 'n NoSQL sleutel-waarde stoor wat ontwerp is om groot volumes van gestruktureerde, nie-relationele data te stoor. Dit bied hoë beskikbaarheid, lae latensie, en skaalbaarheid om groot datastelle doeltreffend te hanteer. Data is georganiseer in tabelle, met elke entiteit geïdentifiseer deur 'n partisie sleutel en ry sleutel, wat vinnige soektogte moontlik maak. Dit ondersteun funksies soos versleuteling in rus, rol-gebaseerde toegangbeheer, en gedeelde toegang handtekeninge vir veilige, bestuurde stoor wat geskik is vir 'n wye reeks toepassings.
Daar is nie 'n ingeboude rugsteunmeganisme vir tabel stoor nie.
Sleutels
PartitionKey
- Die PartitionKey groepeer entiteite in logiese partisie. Entiteite met dieselfde PartitionKey word saam gestoor, wat die navraagprestasie en skaalbaarheid verbeter.
- Voorbeeld: In 'n tabel wat werknemerdata stoor, kan
PartitionKey'n departement verteenwoordig, bv."HR"of"IT".
RowKey
- Die RowKey is die unieke identifiseerder vir 'n entiteit binne 'n partisie. Wanneer dit gekombineer word met die PartitionKey, verseker dit dat elke entiteit in die tabel 'n wêreldwyd unieke identifiseerder het.
- Voorbeeld: Vir die
"HR"partisie, kanRowKey'n werknemer ID wees, bv."12345".
Ander Eienskappe (Pasgemaakte Eienskappe)
- Benewens die PartitionKey en RowKey, kan 'n entiteit addisionele pasgemaakte eienskappe hê om data te stoor. Hierdie is gebruikersgedefinieer en funksioneer soos kolomme in 'n tradisionele databasis.
- Eienskappe word gestoor as sleutel-waarde pare.
- Voorbeeld:
Name,Age,Titlekan pasgemaakte eienskappe vir 'n werknemer wees.
Enumerasie
{{#tabs}} {{#tab name="az cli"}}
# 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
{{#endtab}} {{#tab name="PowerShell"}}
# Get storage accounts
Get-AzStorageAccount
# List tables
Get-AzStorageTable -Context (Get-AzStorageAccount -Name <mystorageaccount> -ResourceGroupName <ResourceGroupName>).Context
Get-AzStorageTableStoredAccessPolicy -Table <Table> -Context (Get-AzStorageAccount -Name <mystorageaccount -ResourceGroupName <ResourceGroupName>).Context
{{#endtab}} {{#endtabs}}
Note
Standaard sal
azcli 'n rekeningsleutel gebruik om 'n sleutel te teken en die aksie uit te voer. Om die Entra ID-prinsipaal bevoegdhede te gebruik, gebruik die parameters--auth-mode login.
Tip
Gebruik die parameter
--account-keyom die rekeningsleutel aan te dui wat gebruik moet word
Gebruik die parameter--sas-tokenmet die SAS-token om toegang te verkry via 'n SAS-token
Privilege Escalation
Selfde as stoor privesc:
{{#ref}} ../az-privilege-escalation/az-storage-privesc.md {{#endref}}
Post Exploitation
{{#ref}} ../az-post-exploitation/az-table-storage-post-exploitation.md {{#endref}}
Persistence
Selfde as stoor volharding:
{{#ref}} ../az-persistence/az-storage-persistence.md {{#endref}}
{{#include ../../../banners/hacktricks-training.md}}