Translated ['', 'src/pentesting-cloud/azure-security/az-services/az-stor

This commit is contained in:
Translator
2026-01-13 15:18:13 +00:00
parent f1a049a46b
commit 9b65ecbc4c
@@ -1,97 +1,117 @@
# Az - Akaunti za Hifadhi na Blobs
# Az - Storage Accounts & Blobs
{{#include ../../../banners/hacktricks-training.md}}
## Taarifa za Msingi
Akaunti za Hifadhi za Azure ni huduma za msingi katika Microsoft Azure zinazotoa **hifadhi ya wingu inayoweza kupanuka, salama, na inayopatikana kwa urahisi kwa aina mbalimbali za data**, ikiwa ni pamoja na blobs (vitu vikubwa vya binary), faili, foleni, na meza. Zinatumika kama vyombo vinavyokutanisha huduma hizi tofauti za hifadhi chini ya jina moja kwa usimamizi rahisi.
Azure Storage Accounts ni huduma za msingi katika Microsoft Azure zinazotoa **storage ya wingu inayoweza kupanuka, yenye usalama, na inayopatikana kwa urahisi** kwa aina mbalimbali za data, ikiwa ni pamoja na blobs (binary large objects), files, queues, na tables. Zinatumika kama containers zinazokusanya huduma tofauti za storage chini ya namespace moja kwa usimamizi rahisi.
**Chaguzi kuu za usanidi**:
- Kila akaunti ya hifadhi lazima iwe na **jina la kipekee katika Azure yote**.
- Kila akaunti ya hifadhi inapelekwa katika **eneo** au katika eneo la kupanua la Azure
- Inawezekana kuchagua toleo la **premium** la akaunti ya hifadhi kwa utendaji bora
- Inawezekana kuchagua kati ya **aina 4 za upungufu ili kulinda** dhidi ya kushindwa kwa rack, diski na kituo cha data **failures**.
- Kila storage account lazima iwe na **jina la kipekee kwa Azure nzima**.
- Kila storage account inawekwa katika **eneo** au katika Azure extended zone
- Inawezekana kuchagua toleo la **premium** la storage account kwa utendaji bora
- Inawezekana kuchagua kati ya **aina 4 za redundancy ili kulinda** dhidi ya kushindwa kwa rack, drive na datacenter (**failures**).
**Chaguzi za usanidi wa Usalama**:
**Chaguzi za usanidi wa usalama**:
- **Hitaji usafirishaji salama kwa shughuli za REST API**: Hitaji TLS katika mawasiliano yoyote na hifadhi
- **Inaruhusu kuwezesha ufikiaji wa siri kwenye vyombo vya kibinafsi**: Ikiwa sivyo, haitakuwa na uwezo wa kuwezesha ufikiaji wa siri katika siku zijazo
- **Wezesha ufikiaji wa funguo za akaunti ya hifadhi**: Ikiwa sivyo, ufikiaji kwa Funguo za Kushiriki utafungiwa
- **Tofauti ya chini ya TLS**
- **Muktadha unaoruhusiwa kwa shughuli za nakala**: Ruhusu kutoka akaunti yoyote ya hifadhi, kutoka akaunti yoyote ya hifadhi kutoka kwa mpangilio sawa wa Entra au kutoka akaunti ya hifadhi yenye viunganisho vya kibinafsi katika mtandao wa virtual sawa.
- **Require secure transfer for REST API operations**: Leta TLS katika mawasiliano yote na storage
- **Allows enabling anonymous access on individual containers**: Ikiwa haijawekwa, haitakuwa inawezekana kuwezesha anonymous access baadaye
- **Enable storage account key access**: Ikiwa haijawezeshwa, ufikiaji kwa Shared Keys utakatazwa
- **Minimum TLS version**
- **Permitted scope for copy operations**: Ruhusu kutoka kwa storage account yoyote, kutoka kwa storage account yoyote kutoka kwa Entra tenant ileile au kutoka kwa storage account zenye private endpoints katika virtual network ileile.
**Chaguzi za Hifadhi za Blob**:
**Chaguzi za Blob Storage**:
- **Ruhusu upatanishi wa kuvuka mpangilio**
- **Kiwango cha ufikiaji**: Moto (data inayofikiwa mara kwa mara), Baridi na Baridi (data inayofikiwa mara chache)
- **Allow cross-tenant replication**
- **Access tier**: Hot (data inayofikiwa mara kwa mara), Cool na Cold (data inayofikiwa nadra)
**Chaguzi za Mtandao**:
**Chaguzi za mtandao**:
- **Ufikiaji wa Mtandao**:
- **Network access**:
- Ruhusu kutoka mitandao yote
- Ruhusu kutoka mitandao ya virtual iliyochaguliwa na anwani za IP
- Zima ufikiaji wa umma na tumia ufikiaji wa kibinafsi
- **Viunganisho vya Kibinafsi**: Inaruhusu muunganisho wa kibinafsi kwa akaunti ya hifadhi kutoka mtandao wa virtual
- Ruhusu kutoka virtual networks na anwani za IP zilizochaguliwa
- Zima public access na tumia private access
- **Private endpoints**: Inaruhusu muunganisho wa kibinafsi kwa storage account kutoka virtual network
**Chaguzi za Ulinzi wa Data**:
**Chaguzi za ulinzi wa data**:
- **Kurejesha kwa wakati kwa vyombo**: Inaruhusu kurejesha vyombo katika hali ya awali
- Inahitaji toleo, mabadiliko ya chakula, na kufutwa kwa blob kwa urahisi kuwezeshwe.
- **Wezesha kufutwa kwa urahisi kwa blobs**: Inaruhusu kipindi cha uhifadhi kwa siku kwa blobs zilizofutwa (hata zilizofutwa)
- **Wezesha kufutwa kwa urahisi kwa vyombo**: Inaruhusu kipindi cha uhifadhi kwa siku kwa vyombo vilivyofutwa
- **Wezesha kufutwa kwa urahisi kwa sehemu za faili**: Inaruhusu kipindi cha uhifadhi kwa siku kwa sehemu za faili zilizofutwa
- **Wezesha toleo kwa blobs**: Hifadhi toleo za awali za blobs zako
- **Wezesha mabadiliko ya blob**: Hifadhi kumbukumbu za kuunda, kubadilisha, na kufuta mabadiliko kwa blobs
- **Wezesha msaada wa kutokuwepo kwa kiwango cha toleo**: Inaruhusu kuweka sera ya uhifadhi kulingana na muda kwenye kiwango cha akaunti ambayo itatumika kwa toleo zote za blob.
- Msaada wa kutokuwepo kwa kiwango cha toleo na kurejesha kwa wakati kwa vyombo haviwezi kuwezeshwa kwa wakati mmoja.
- **Point-in-time restore for containers**: Inaruhusu kurejesha containers hadi hali ya awali
- Inahitaji kuwa versioning, change feed, na blob soft delete vimewezeshwa.
- **Enable soft delete for blobs**: Inawezesha kipindi cha retention kwa siku kwa blobs zilizofutwa (hata zilizofunikwa)
- **Enable soft delete for containers**: Inawezesha kipindi cha retention kwa siku kwa containers zilizofutwa
- **Enable soft delete for file shares**: Inawezesha kipindi cha retention kwa siku kwa file shares zilizofutwa
- **Enable versioning for blobs**: Hifadhi matoleo ya awali ya blobs zako
- **Enable blob change feed**: Hifadhi logi za kuunda, kubadilisha, na kufuta mabadiliko ya blobs
- **Enable version-level immutability support**: Inakuwezesha kuweka sera ya retention inayotegemea muda kwenye ngazi ya akaunti ambayo itahusisha matoleo yote ya blob.
- Version-level immutability support na point-in-time restore for containers haiwezi kuwezeshwa kwa wakati mmoja.
**Chaguzi za Usimbaji**:
**Chaguzi za usanidi wa encryption**:
- **Aina ya Usimbaji**: Inawezekana kutumia funguo zinazodhibitiwa na Microsoft (MMK) au funguo zinazodhibitiwa na Mteja (CMK)
- **Wezesha usimbaji wa miundombinu**: Inaruhusu kusimbwa mara mbili kwa data "kwa usalama zaidi"
- **Encryption type**: Inawezekana kutumia Microsoft-managed keys (MMK) au Customer-managed keys (CMK)
- **Enable infrastructure encryption**: Inaruhusu kukataza data mara mbili "kwa usalama zaidi"
### Viunganisho vya Hifadhi
### Storage endpoints
<table data-header-hidden><thead><tr><th width="197">Huduma ya Hifadhi</th><th>Kiunganishi</th></tr></thead><tbody><tr><td><strong>Hifadhi ya Blob</strong></td><td><code>https://<storage-account>.blob.core.windows.net</code><br><br><code>https://<stg-acc>.blob.core.windows.net/<container-name>?restype=container&comp=list</code></td></tr><tr><td><strong>Hifadhi ya Ziwa la Data</strong></td><td><code>https://<storage-account>.dfs.core.windows.net</code></td></tr><tr><td><strong>Faili za Azure</strong></td><td><code>https://<storage-account>.file.core.windows.net</code></td></tr><tr><td><strong>Hifadhi ya Foleni</strong></td><td><code>https://<storage-account>.queue.core.windows.net</code></td></tr><tr><td><strong>Hifadhi ya Meza</strong></td><td><code>https://<storage-account>.table.core.windows.net</code></td></tr></tbody></table>
<table data-header-hidden><thead><tr><th width="197">Huduma za Storage</th><th>Endpoint</th></tr></thead><tbody><tr><td><strong>Blob storage</strong></td><td><code>https://&lt;storage-account&gt;.blob.core.windows.net</code><br><br><code>https://&lt;stg-acc&gt;.blob.core.windows.net/&lt;container-name&gt;?restype=container&comp=list</code></td></tr><tr><td><strong>Data Lake Storage</strong></td><td><code>https://&lt;storage-account&gt;.dfs.core.windows.net</code></td></tr><tr><td><strong>Azure Files</strong></td><td><code>https://&lt;storage-account&gt;.file.core.windows.net</code></td></tr><tr><td><strong>Queue storage</strong></td><td><code>https://&lt;storage-account&gt;.queue.core.windows.net</code></td></tr><tr><td><strong>Table storage</strong></td><td><code>https://&lt;storage-account&gt;.table.core.windows.net</code></td></tr></tbody></table>
### Ufunuo wa Umma
Ikiwa "Ruhusu ufikiaji wa umma wa Blob" ime **wezeshwa** (imezimwa kwa default), wakati wa kuunda chombo inawezekana:
Ikiwa "Allow Blob public access" imewezeshwa (imezimwa kwa chaguo-msingi), wakati wa kuunda container inawezekana:
- Kutoa **ufikiaji wa umma kusoma blobs** (unahitaji kujua jina).
- **Orodhesha blobs za chombo** na **zisome**.
- Fanya iwe **binafsi kabisa**
- Kutoa **public access to read blobs** (unahitaji kujua jina).
- **List container blobs** na **kisome**.
- Kufanya iwe kabisa **private**
<figure><img src="https://lh7-rt.googleusercontent.com/slidesz/AGV_vUfoetUnYBPWQpRrWNnnlbqWpl8Rdoaeg5uBrCVlvcNDlnKwQHjZe8nUb2SfPspBgbu-lCZLmUei-hFi_Jl2eKbaxUtBGTjdUSDmkrcwr90VZkmuMjk9tyh92p75btfyzGiUTa0-=s2048?key=m8TV59TrCFPlkiNnmhYx3aZt" alt=""><figcaption></figcaption></figure>
### Unganisha na Hifadhi
#### Kukagua ufunuo wa blob za anonymous
Ikiwa unapata **hifadhi** yoyote unayoweza kuunganishwa nayo unaweza kutumia zana [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) kufanya hivyo.
- **Tafuta storage accounts** ambazo zinaweza kufunua data: `az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'`. Ikiwa `allowBlobPublicAccess` ni `false` huwezi kufanya containers kuwa public.
- **Chunguza akaunti zenye hatari** ili kuthibitisha flag na mipangilio mingine dhaifu: `az storage account show --name <acc> --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'`.
- **Orodhesha ufunuo wa ngazi ya container** ambapo flag imewezeshwa:
```bash
az storage container list --account-name <acc> \
--query '[].{name:name, access:properties.publicAccess}'
```
- `"Blob"`: usomaji wa watu wasiojulikana unaruhusiwa **tu wakati jina la blob linajulikana** (hakuna kuorodhesha).
- `"Container"`: watu wasiojulikana wanaweza **kuorodhesha + kusoma** blob zote.
- `null`: binafsi; uthibitishaji unahitajika.
- **Thibitisha upatikanaji** bila kredensiali:
- Ikiwa `publicAccess` ni `Container`, kuorodhesha kwa wasiojulikana kunafanya kazi: `curl "https://<acc>.blob.core.windows.net/<container>?restype=container&comp=list"`.
- Kwa `Blob` na `Container`, kupakua blob kwa wasiojulikana kunafanya kazi wakati jina linajulikana:
```bash
az storage blob download -c <container> -n <blob> --account-name <acc> --file /dev/stdout
# or via raw HTTP
curl "https://<acc>.blob.core.windows.net/<container>/<blob>"
```
### Ungana na Hifadhi
## Ufikiaji wa Hifadhi <a href="#about-blob-storage" id="about-blob-storage"></a>
Ikiwa utapata **hifadhi** yoyote ambayo unaweza kuiunganisha, unaweza kutumia zana [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) kufanya hivyo.
## Upatikanaji wa Hifadhi <a href="#about-blob-storage" id="about-blob-storage"></a>
### RBAC
Inawezekana kutumia wahusika wa Entra ID na **majukumu ya RBAC** kufikia akaunti za hifadhi na ndiyo njia inayopendekezwa.
Inawezekana kutumia Entra ID principals pamoja na **RBAC roles** kufikia akaunti za hifadhi, na hii ndiyo njia inayopendekezwa.
### Funguo za Ufikiaji
### Access Keys
Akaunti za hifadhi zina funguo za ufikiaji ambazo zinaweza kutumika kuziunganisha. Hii inatoa **ufikiaji kamili kwa akaunti ya hifadhi.**
Akaunti za hifadhi zina vifunguo vya ufikiaji ambavyo vinaweza kutumika kuifikia. Hii inatoa **ufikiaji kamili kwa akaunti ya hifadhi.**
<figure><img src="../../../images/image (5).png" alt=""><figcaption></figcaption></figure>
### **Funguo za Kushiriki & Funguo za Kushiriki za Lite**
### **Shared Keys & Lite Shared Keys**
Inawezekana [**kuunda Funguo za Kushiriki**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) zilizotiwa saini na funguo za ufikiaji ili kuidhinisha ufikiaji wa rasilimali fulani kupitia URL iliyotiwa saini.
It's possible to [**generate Shared Keys**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) signed with the access keys to authorize access to certain resources via a signed URL.
> [!NOTE]
> Kumbuka kwamba sehemu ya `CanonicalizedResource` inawakilisha rasilimali ya huduma za hifadhi (URI). Na ikiwa sehemu yoyote katika URL imeandikwa, inapaswa pia kuandikwa ndani ya `CanonicalizedResource`.
> Kumbuka kwamba sehemu ya `CanonicalizedResource` inaonyesha rasilimali ya storage services (URI). Na ikiwa sehemu yoyote ya URL imekodishwa (encoded), inapaswa pia kukodishwa ndani ya `CanonicalizedResource`.
> [!NOTE]
> Hii **inatumiwa kwa default na `az` cli** kuthibitisha maombi. Ili kufanya itumie akidi za wahusika wa Entra ID onyesha paramu `--auth-mode login`.
> Hii **inatumika kwa chaguo-msingi na `az` cli** kuthibitisha maombi. Ili kuifanya itumie credentials za Entra ID principal, taja param `--auth-mode login`.
- Inawezekana kuunda **funguo za kushiriki kwa huduma za blob, foleni na faili** kwa kusaini taarifa zifuatazo:
- Inawezekana kuunda **shared key for blob, queue and file services** kwa kusaini taarifa zifuatazo:
```bash
StringToSign = VERB + "\n" +
Content-Encoding + "\n" +
@@ -108,7 +128,7 @@ Range + "\n" +
CanonicalizedHeaders +
CanonicalizedResource;
```
- Inawezekana kuunda **funguo ya pamoja kwa huduma za meza** kwa kusaini taarifa zifuatazo:
- Inawezekana kuunda **shared key for table services** kwa kusaini taarifa zifuatazo:
```bash
StringToSign = VERB + "\n" +
Content-MD5 + "\n" +
@@ -116,7 +136,7 @@ Content-Type + "\n" +
Date + "\n" +
CanonicalizedResource;
```
- Inawezekana kuunda **lite shared key kwa huduma za blob, queue na file** kwa kusaini taarifa zifuatazo:
- Inawezekana kuunda **lite shared key for blob, queue and file services** kwa kusaini taarifa zifuatazo:
```bash
StringToSign = VERB + "\n" +
Content-MD5 + "\n" +
@@ -130,7 +150,7 @@ CanonicalizedResource;
StringToSign = Date + "\n"
CanonicalizedResource
```
Kisha, kutumia funguo, inaweza kufanywa katika kichwa cha Uidhinishaji ikifuatia muundo:
Kisha, ili kutumia key, inaweza kufanywa kwenye Authorization header kwa kuzingatia sintaksi:
```bash
Authorization="[SharedKey|SharedKeyLite] <AccountName>:<Signature>"
#e.g.
@@ -144,73 +164,76 @@ Content-Length: 0
```
### **Shared Access Signature** (SAS)
Shared Access Signatures (SAS) ni URL salama, zenye muda wa ukomo ambazo **zinatoa ruhusa maalum za kufikia rasilimali** katika akaunti ya Azure Storage bila kufichua funguo za ufikiaji za akaunti. Wakati funguo za ufikiaji zinatoa ufikiaji kamili wa kiutawala kwa rasilimali zote, SAS inaruhusu udhibiti wa kina kwa kubainisha ruhusa (kama kusoma au kuandika) na kufafanua muda wa kumalizika.
Shared Access Signatures (SAS) ni URLs salama, zenye muda wa kuisha ambazo zinatoa **ruhusa maalum za kufikia rasilimali** katika akaunti ya Azure Storage bila kufichua access keys za akaunti. Wakati access keys zinatoa ufikiaji wa utawala kamili kwa rasilimali zote, SAS inaruhusu udhibiti wa kina kwa kubainisha ruhusa (kama read au write) na kuweka muda wa kumalizika.
#### Aina za SAS
#### SAS Types
- **User delegation SAS**: Hii inaundwa kutoka kwa **Entra ID principal** ambayo itatia saini SAS na kuhamasisha ruhusa kutoka kwa mtumiaji hadi SAS. Inaweza kutumika tu na **blob na data lake storage** ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Inawezekana **kufuta** SAS zote zilizozalishwa za mtumiaji.
- Hata kama inawezekana kuzalisha delegation SAS yenye ruhusa "zaidi" kuliko zile ambazo mtumiaji ana. Hata hivyo, ikiwa principal hana hizo, haitafanya kazi (hakuna privesc).
- **Service SAS**: Hii inatiwa saini kwa kutumia moja ya **access keys** za akaunti ya storage. Inaweza kutumika kutoa ufikiaji kwa rasilimali maalum katika huduma moja ya storage. Ikiwa funguo itarejeshwa, SAS itakoma kufanya kazi.
- **Account SAS**: Pia inatiwa saini kwa moja ya **access keys** za akaunti ya storage. Inatoa ufikiaji kwa rasilimali katika huduma za akaunti ya storage (Blob, Queue, Table, File) na inaweza kujumuisha operesheni za kiwango cha huduma.
- **User delegation SAS**: Hii inaundwa kutoka kwa **Entra ID principal** ambaye atasaini SAS na kuhamishia ruhusa kutoka kwa mtumiaji hadi SAS. Inaweza kutumika tu na **blob and data lake storage** ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Inawezekana **kubatilisha** SAS zote za user delegated zilizotengenezwa.
- Ingawa inawezekana kutengeneza delegation SAS yenye ruhusa "za ziada" kuliko zile mtumiaji anazo, ikiwa principal hana ruhusa hizo, haitafanya kazi (hakuna privesc).
- **Service SAS**: Hii imesainiwa kwa kutumia moja ya storage account **access keys**. Inaweza kutumika kutoa ufikiaji kwa rasilimali maalum ndani ya huduma moja ya storage. Ikiwa key itafanywa upya, SAS itasimama kufanya kazi.
- **Account SAS**: Pia imesainiwa kwa kutumia moja ya storage account **access keys**. Inatoa ufikiaji kwa rasilimali katika huduma mbalimbali za akaunti ya storage (Blob, Queue, Table, File) na inaweza kujumuisha operesheni za kiwango cha huduma.
URL ya SAS iliyotiwa saini na **access key** inaonekana kama ifuatavyo:
A SAS URL signed by an **access key** looks like this:
- `https://<container_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D`
URL ya SAS iliyotiwa saini kama **user delegation** inaonekana kama ifuatavyo:
A SAS URL signed as a **user delegation** looks like this:
- `https://<container_name>.blob.core.windows.net/testing-container?sp=r&st=2024-11-22T15:07:40Z&se=2024-11-22T23:07:40Z&skoid=d77c71a1-96e7-483d-bd51-bd753aa66e62&sktid=fdd066e1-ee37-49bc-b08f-d0e152119b04&skt=2024-11-22T15:07:40Z&ske=2024-11-22T23:07:40Z&sks=b&skv=2022-11-02&spr=https&sv=2022-11-02&sr=c&sig=7s5dJyeE6klUNRulUj9TNL0tMj2K7mtxyRc97xbYDqs%3D`
Kumbuka baadhi ya **http params**:
Note some **http params**:
- Param **`se`** inaonyesha **tarehe ya kumalizika** ya SAS
- Param **`sp`** inaonyesha **ruhusa** za SAS
- **`sig`** ni **saini** inayothibitisha SAS
- Param ya **`se`** inaonyesha **tarehe ya kumalizika** ya SAS
- Param ya **`sp`** inaonyesha **ruhusa** za SAS
- **`sig`** ni **sahihi** inayothibitisha SAS
#### Ruhusa za SAS
#### SAS permissions
Wakati wa kuzalisha SAS inahitajika kubainisha ruhusa ambazo inapaswa kutoa. Kulingana na kitu ambacho SAS inazalishwa juu yake, ruhusa tofauti zinaweza kujumuishwa. Kwa mfano:
Unapounda SAS inahitajika kuonyesha ruhusa zitakazotolewa. Kutegemea kwenye object ambayo SAS inaundwa juu yake, ruhusa mbalimbali zinaweza kujumuishwa. Kwa mfano:
- (a)dd, (c)reate, (d)elete, (e)xecute, (f)ilter_by_tags, (i)set_immutability_policy, (l)ist, (m)ove, (r)ead, (t)ag, (w)rite, (x)delete_previous_version, (y)permanent_delete
## SFTP Support for Azure Blob Storage
Azure Blob Storage sasa inasaidia SSH File Transfer Protocol (SFTP), ikiruhusu uhamishaji wa faili salama na usimamizi moja kwa moja kwa Blob Storage bila kuhitaji suluhisho maalum au bidhaa za upande wa tatu.
Azure Blob Storage sasa inaunga mkono SSH File Transfer Protocol (SFTP), ikiruhusu uhamishaji wa faili uliosalama na usimamizi moja kwa moja kwenye Blob Storage bila kuhitaji suluhisho maalum au bidhaa za wahusika wa tatu.
### Vipengele Muhimu
### Key Features
- Msaada wa Protokali: SFTP inafanya kazi na akaunti za Blob Storage zilizowekwa na hierarchical namespace (HNS). Hii inaratibu blobs katika saraka na subdirectories kwa urahisi wa urambazaji.
- Usalama: SFTP inatumia vitambulisho vya watumiaji wa ndani kwa uthibitisho na haijumuishi na RBAC au ABAC. Kila mtumiaji wa ndani anaweza kuthibitisha kupitia:
- Nywila zinazozalishwa na Azure
- Mifumo ya funguo za SSH za umma na binafsi
- Ruhusa za Kina: Ruhusa kama Kusoma, Kuandika, Kufuta, na Kuweka zinaweza kutolewa kwa watumiaji wa ndani kwa hadi kontena 100.
- Mambo ya Mtandao: Munganisho wa SFTP unafanywa kupitia bandari 22. Azure inasaidia usanidi wa mtandao kama vile moto, maeneo ya kibinafsi, au mitandao ya virtual ili kulinda trafiki ya SFTP.
- Protocol Support: SFTP inafanya kazi na akaunti za Blob Storage zilizo na hierarchical namespace (HNS) imewezeshwa. Hii inaandaa blobs kwenye saraka na saraka ndogo kwa urahisi wa kuvinjari.
- Security: SFTP inatumia vitambulisho vya watumiaji wa ndani kwa uthibitisho na haishirikiani na RBAC au ABAC. Kila mtumiaji wa ndani anaweza kuthibitishwa kupitia:
- Azure-generated passwords
- Public-private SSH key pairs
- Granular Permissions: Ruhusa kama Read, Write, Delete, na List zinaweza kupangiwa watumiaji wa ndani kwa hadi containers 100.
- Networking Considerations: Muunganisho wa SFTP hufanywa kupitia port 22. Azure inasaidia usanidi wa mtandao kama firewalls, private endpoints, au virtual networks ili kufanya trafiki ya SFTP kuwa salama.
### Mahitaji ya Usanidi
### Setup Requirements
- Hierarchical Namespace: HNS lazima iwekwe wakati wa kuunda akaunti ya storage.
- Usimbuaji Unaounga Mkono: Inahitaji algorithimu za usimbuaji zilizothibitishwa na Microsoft Security Development Lifecycle (SDL) (mfano, rsa-sha2-256, ecdsa-sha2-nistp256).
- Usanidi wa SFTP:
- Wezesha SFTP kwenye akaunti ya storage.
- Unda vitambulisho vya watumiaji wa ndani na ruhusa zinazofaa.
- Sanidi saraka za nyumbani kwa watumiaji ili kufafanua eneo lao la kuanzia ndani ya kontena.
- Hierarchical Namespace: HNS lazima iwe imewezeshwa wakati wa kuunda akaunti ya storage.
- Supported Encryption: Inahitaji algorithimu za kriptografia zilizoidhinishwa na Microsoft Security Development Lifecycle (SDL) (mfano, rsa-sha2-256, ecdsa-sha2-nistp256).
- SFTP Configuration:
- Wezesha SFTP kwenye akaunti ya storage.
- Tengeneza vitambulisho vya watumiaji wa ndani na ruhusa zinazofaa.
- Panga saraka za nyumbani (home directories) kwa watumiaji ili kufafanua mahali pa kuanzia ndani ya container.
### Ruhusa
### Permissions
| Ruhusa | Alama | Maelezo |
| --------------------- | ------ | ------------------------------------ |
| **Kusoma** | `r` | Soma maudhui ya faili. |
| **Kuandika** | `w` | Pakia faili na unda saraka. |
| **Kuweka Orodha** | `l` | Orodhesha maudhui ya saraka. |
| **Kufuta** | `d` | Futa faili au saraka. |
| **Kuunda** | `c` | Unda faili au saraka. |
| **Badilisha Umiliki** | `o` | Badilisha mtumiaji au kundi linalomiliki. |
| **Badilisha Ruhusa** | `p` | Badilisha ACLs kwenye faili au saraka. |
| Ruhusa | Alama | Maelezo |
| ---------------------- | ------ | ------------------------------------ |
| **Soma** | `r` | Soma yaliyomo ya faili. |
| **Andika** | `w` | Pakia faili na tengeneza saraka. |
| **Orodhesha** | `l` | Orodhesha yaliyomo ya saraka. |
| **Futa** | `d` | Futa faili au saraka. |
| **Tengeneza** | `c` | Tengeneza faili au saraka. |
| **Badilisha Umiliki** | `o` | Badilisha mtumiaji au kundi mwenye umiliki. |
| **Badilisha Ruhusa** | `p` | Badilisha ACLs kwenye faili au saraka. |
## Enumeration
{{#tabs }}
{{#tab name="az cli" }}
<details>
<summary>az cli uorodheshaji</summary>
```bash
# Get storage accounts
az storage account list #Get the account name from here
@@ -327,10 +350,15 @@ az storage account local-user list \
--account-name <storage-account-name> \
--resource-group <resource-group-name>
```
</details>
{{#endtab }}
{{#tab name="Az PowerShell" }}
```bash
<details>
<summary>Az PowerShell enumeration</summary>
```powershell
# Get storage accounts
Get-AzStorageAccount | fl
# Get rules to access the storage account
@@ -387,37 +415,43 @@ New-AzStorageBlobSASToken `
-Permission racwdl `
-ExpiryTime (Get-Date "2024-12-31T23:59:00Z")
```
</details>
{{#endtab }}
{{#endtabs }}
### File Shares
### Kushiriki Faili
{{#ref}}
az-file-shares.md
{{#endref}}
## Privilege Escalation
## Kupandishwa kwa Vibali
{{#ref}}
../az-privilege-escalation/az-storage-privesc.md
{{#endref}}
## Post Exploitation
## Baada ya Exploitation
{{#ref}}
../az-post-exploitation/az-blob-storage-post-exploitation.md
{{#endref}}
## Persistence
## Uendelevu
{{#ref}}
../az-persistence/az-storage-persistence.md
{{#endref}}
## References
## Marejeleo
- [https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction)
- [https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview](https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview)
- [https://learn.microsoft.com/en-us/azure/storage/blobs/secure-file-transfer-protocol-support](https://learn.microsoft.com/en-us/azure/storage/blobs/secure-file-transfer-protocol-support)
- [Holiday Hack Challenge 2025: Blob Storage (Storage Secrets)](https://0xdf.gitlab.io/holidayhack2025/act1/blob-storage)
- [https://learn.microsoft.com/en-us/cli/azure/storage/account](https://learn.microsoft.com/en-us/cli/azure/storage/account)
- [https://learn.microsoft.com/en-us/cli/azure/storage/container](https://learn.microsoft.com/en-us/cli/azure/storage/container)
- [https://learn.microsoft.com/en-us/cli/azure/storage/blob](https://learn.microsoft.com/en-us/cli/azure/storage/blob)
{{#include ../../../banners/hacktricks-training.md}}