diff --git a/src/pentesting-cloud/azure-security/az-services/az-storage.md b/src/pentesting-cloud/azure-security/az-services/az-storage.md
index 118cade7c..b14e23600 100644
--- a/src/pentesting-cloud/azure-security/az-services/az-storage.md
+++ b/src/pentesting-cloud/azure-security/az-services/az-storage.md
@@ -4,20 +4,20 @@
## Osnovne informacije
-Azure Storage Accounts su fundamentalne usluge u Microsoft Azure koje pružaju skalabilno, bezbedno i visoko dostupno cloud **storage za različite tipove podataka**, uključujući blobs (binary large objects), files, queues i tables. One služe kao kontejneri koji grupišu ove različite storage usluge zajedno pod jednim namespace-om radi lakšeg upravljanja.
+Azure Storage Accounts su fundamentalne usluge u Microsoft Azure koje obezbeđuju skalabilan, bezbedan i visoko dostupan cloud **storage za različite tipove podataka**, uključujući blobs (binary large objects), files, queues i tables. One služe kao kontejneri koji grupišu ove različite storage servise zajedno pod jednim namespace-om radi lakšeg upravljanja.
**Glavne opcije konfiguracije**:
-- Svaki storage account mora imati **uniq name across all Azure**.
-- Svaki storage account se deploy-uje u **region** ili u Azure extended zone
-- Moguće je izabrati **premium** verziju storage account-a radi boljih performansi
-- Moguće je izabrati između **4 types of redundancy to protect** protiv rack, drive i datacenter **failures**.
+- Svaki storage account mora imati **jedinstveno ime na nivou celog Azure-a**.
+- Svaki storage account se deployuje u **region** ili u Azure extended zone
+- Moguće je izabrati **premium** verziju storage account-a za bolje performanse
+- Moguće je izabrati jednu od **4 vrste redundancy** za zaštitu od rack, drive i datacenter **failures**.
-**Opcije bezbednosne konfiguracije**:
+**Opcije sigurnosne konfiguracije**:
- **Require secure transfer for REST API operations**: Zahteva TLS u svakoj komunikaciji sa storage-om
-- **Allows enabling anonymous access on individual containers**: Ako nije omogućeno, neće biti moguće kasnije omogućiti anonymous access
-- **Enable storage account key access**: Ako nije omogućeno, access sa Shared Keys će biti zabranjen
+- **Allows enabling anonymous access on individual containers**: Ako nije omogućeno, kasnije neće biti moguće uključiti anonymous access
+- **Enable storage account key access**: Ako nije omogućeno, access preko Shared Keys će biti zabranjen
- **Minimum TLS version**
- **Permitted scope for copy operations**: Dozvoli sa bilo kog storage account-a, sa bilo kog storage account-a iz istog Entra tenant-a ili sa storage account-a sa private endpoints u istoj virtual network.
@@ -29,27 +29,27 @@ Azure Storage Accounts su fundamentalne usluge u Microsoft Azure koje pružaju s
**Mrežne opcije**:
- **Network access**:
-- Dozvoli iz svih networks
-- Dozvoli iz izabranih virtual networks i IP addresses
+- Dozvoli sa svih mreža
+- Dozvoli sa izabranih virtual networks i IP adresa
- Onemogući public access i koristi private access
-- **Private endpoints**: Omogućava private connection ka storage account-u iz virtual network-a
+- **Private endpoints**: Omogućava privatnu konekciju ka storage account-u iz virtual network
**Opcije zaštite podataka**:
-- **Point-in-time restore for containers**: Omogućava vraćanje containers u ranije stanje
-- Zahteva da budu omogućeni versioning, change feed i blob soft delete.
-- **Enable soft delete for blobs**: Omogućava retention period u danima za obrisane blobs (čak i kada su overwrite-ovani)
-- **Enable soft delete for containers**: Omogućava retention period u danima za obrisane containers
+- **Point-in-time restore for containers**: Omogućava vraćanje kontejnera u ranije stanje
+- Zahteva da budu uključeni versioning, change feed i blob soft delete.
+- **Enable soft delete for blobs**: Omogućava retention period u danima za obrisane blobs (čak i ako su overwrite-ovani)
+- **Enable soft delete for containers**: Omogućava retention period u danima za obrisane kontejnere
- **Enable soft delete for file shares**: Omogućava retention period u danima za obrisane file shared
-- **Enable versioning for blobs**: Zadržava prethodne verzije vaših blobs
-- **Enable blob change feed**: Čuva logs o create, modification i delete promenama na blobs
-- **Enable version-level immutability support**: Omogućava da postavite time-based retention policy na account-level koja će važiti za sve blob versions.
+- **Enable versioning for blobs**: Održava prethodne verzije tvojih blobs
+- **Enable blob change feed**: Čuva logove create, modification i delete promena nad blobs
+- **Enable version-level immutability support**: Omogućava da se na nivou account-a postavi time-based retention policy koja će se primeniti na sve blob verzije.
- Version-level immutability support i point-in-time restore for containers ne mogu biti omogućeni istovremeno.
-**Opcije enkripcione konfiguracije**:
+**Opcije enkripcije**:
- **Encryption type**: Moguće je koristiti Microsoft-managed keys (MMK) ili Customer-managed keys (CMK)
-- **Enable infrastructure encryption**: Omogućava double encrypt the data "for more security"
+- **Enable infrastructure encryption**: Omogućava double encrypt podataka "for more security"
### Storage endpoints
@@ -64,18 +64,18 @@ Azure Storage Accounts su fundamentalne usluge u Microsoft Azure koje pružaju s
### Public Exposure
-Ako je "Allow Blob public access" **omogućeno** (podrazumevano je onemogućeno), pri kreiranju container-a moguće je:
+Ako je "Allow Blob public access" **omogućen** (podrazumevano je onemogućen), pri kreiranju kontejnera moguće je:
-- Dati **public access to read blobs** (morate znati ime).
-- **List container blobs** i **read** ih.
+- Dati **public access za čitanje blobs** (moraš da znaš ime).
+- **Listati container blobs** i **čitati** ih.
- Učiniti ga potpuno **private**
### Static website (`$web`) exposure & leaked secrets
-- **Static websites** se serve sa specijalnog `$web` container-a preko region-specific endpoint-a kao što je `https://.z13.web.core.windows.net/`.
-- `$web` container može da prijavi `publicAccess: null` preko blob API-ja, ali su fajlovi i dalje dostupni kroz static site endpoint, tako da ostavljanje config/IaC artifact-a tamo može da leak secrets.
+- **Static websites** se serviraju iz specijalnog `$web` kontejnera preko endpoint-a specifičnog za region, kao što je `https://.z13.web.core.windows.net/`.
+- `$web` kontejner može da prijavi `publicAccess: null` preko blob API-ja, ali su fajlovi i dalje dostupni kroz static site endpoint, pa ubacivanje config/IaC artefakata tamo može leak-ovati secrets.
- Brzi audit workflow:
```bash
# Identify storage accounts with static website hosting enabled
@@ -87,21 +87,21 @@ az storage blob list --container-name '$web' --account-name --auth-mo
# Pull suspicious files directly (e.g., IaC tfvars containing secrets/SAS)
az storage blob download -c '$web' --name iac/terraform.tfvars --file /dev/stdout --account-name --auth-mode login
```
-### Revizija anonimne izloženosti blob-a
+### Auditing anonymous blob exposure
-- **Locirajte storage accounts** koji mogu da izlože podatke: `az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'`. Ako je `allowBlobPublicAccess` `false`, ne možete da učinite kontejnere javnim.
-- **Proverite rizične accounts** da potvrdite flag i druge slabe postavke: `az storage account show --name --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'`.
-- **Enumerišite izloženost na nivou kontejnera** gde je flag omogućen:
+- **Pronađi storage accounts** koje mogu da izlože podatke: `az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'`. Ako je `allowBlobPublicAccess` `false`, ne možeš da učiniš kontejnere javnim.
+- **Proveri rizične accounts** da potvrdiš flag i ostale slabe postavke: `az storage account show --name --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'`.
+- **Enumerate container-level exposure** gde je flag omogućen:
```bash
az storage container list --account-name \
--query '[].{name:name, access:properties.publicAccess}'
```
-- `"Blob"`: anonimna čitanja su dozvoljena **samo kada je blob name poznat** (nema listanja).
-- `"Container"`: anonimno **list + read** svakog blob-a.
+- `"Blob"`: anonimni reads dozvoljeni **samo kada je naziv blob-a poznat** (nema listanja).
+- `"Container"`: anonimni **list + read** svakog blob-a.
- `null`: private; authentication required.
- **Prove access** without credentials:
-- Ako je `publicAccess` `Container`, anonimno listanje radi: `curl "https://.blob.core.windows.net/?restype=container&comp=list"`.
-- Za oba `Blob` i `Container`, anonimno preuzimanje blob-a radi kada je name poznat:
+- If `publicAccess` is `Container`, anonimno listanje radi: `curl "https://.blob.core.windows.net/?restype=container&comp=list"`.
+- For both `Blob` and `Container`, anonimni blob download radi kada je naziv poznat:
```bash
az storage blob download -c -n --account-name --file /dev/stdout
# or via raw HTTP
@@ -109,31 +109,31 @@ curl "https://.blob.core.windows.net//"
```
### Connect to Storage
-If you find any **storage** you can connect to you could use the tool [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) to do so.
+Ako pronađeš bilo koji **storage** na koji možeš da se povežeš, možeš koristiti alat [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) za to.
## Access to Storage
### RBAC
-It's possible to use Entra ID principals with **RBAC roles** to access storage accounts and it's the recommended way.
+Moguće je koristiti Entra ID principals sa **RBAC roles** za pristup storage account-ovima i to je preporučeni način.
### Access Keys
-The storage accounts have access keys that can be used to access it. This provides f**ull access to the storage account.**
+Storage account-ovi imaju access keys koji mogu da se koriste za pristup. Ovo obezbeđuje f**ull access to the storage account.**
### **Shared Keys & Lite Shared Keys**
-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.
+Moguće je [**generate Shared Keys**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) potpisane sa access keys za autorizaciju pristupa određenim resursima preko signed URL.
> [!NOTE]
-> Note that the `CanonicalizedResource` part represents the storage services resource (URI). And if any part in the URL is encoded, it should also be encoded inside the `CanonicalizedResource`.
+> Imaj na umu da deo `CanonicalizedResource` predstavlja storage services resurs (URI). Ako je bilo koji deo u URL encoded, treba da bude encoded i unutar `CanonicalizedResource`.
> [!NOTE]
-> This is **used by default by `az` cli** to authenticate requests. To make it use the Entra ID principal credentials indicate the param `--auth-mode login`.
+> Ovo se **koristi podrazumevano od strane `az` cli** za autentifikaciju requests. Da bi koristio Entra ID principal credentials, navedi param `--auth-mode login`.
-- It's possible to generate a **shared key for blob, queue and file services** signing the following information:
+- Moguće je generate **shared key for blob, queue and file services** potpisivanjem sledećih informacija:
```bash
StringToSign = VERB + "\n" +
Content-Encoding + "\n" +
@@ -172,7 +172,7 @@ CanonicalizedResource;
StringToSign = Date + "\n"
CanonicalizedResource
```
-Zatim, da bi se koristio ključ, to se može uraditi u Authorization header-u prateći sintaksu:
+Zatim, da bi se koristio key, to se može uraditi u Authorization header-u koristeći sledeću sintaksu:
```bash
Authorization="[SharedKey|SharedKeyLite] :"
#e.g.
@@ -186,56 +186,56 @@ Content-Length: 0
```
### **Shared Access Signature** (SAS)
-Shared Access Signatures (SAS) su bezbedni URL-ovi sa vremenskim ograničenjem koji **dodeljuju specifične permissions za pristup resources** u Azure Storage nalogu bez izlaganja access keys naloga. Dok access keys obezbeđuju pun administrativni pristup svim resources, SAS omogućava granuliranu kontrolu definisanjem permissions (kao što su read ili write) i vremena isteka.
+Shared Access Signatures (SAS) su bezbedni, vremenski ograničeni URL-ovi koji **grant specific permissions to access resource**s u Azure Storage nalogu bez otkrivanja access keys naloga. Dok access keys obezbeđuju pun administrativni pristup svim resursima, SAS omogućava granularnu kontrolu određivanjem permissions (kao što su read ili write) i definisanjem vremena isteka.
#### SAS Types
-- **User delegation SAS**: Ovo se kreira iz **Entra ID principal** koji će potpisati SAS i delegirati permissions sa user-a na SAS. Može da se koristi samo sa **blob and data lake storage** ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Moguće je **revoke** sve generisane user delegated SAS.
-- Čak i ako je moguće generisati delegation SAS sa "više" permissions nego što ih user ima. Međutim, ako principal nema te permissions, neće raditi (no privesc).
-- **Service SAS**: Ovo se potpisuje pomoću jednog od storage account **access keys**. Može se koristiti za dodelu pristupa određenim resources u jednoj storage service. Ako se key obnovi, SAS će prestati da radi.
-- **Account SAS**: Takođe je potpisan pomoću jednog od storage account **access keys**. Dodeljuje pristup resources kroz storage account services (Blob, Queue, Table, File) i može da uključi service-level operations.
+- **User delegation SAS**: Ovo se kreira iz **Entra ID principal** koji će potpisati SAS i delegirati permissions sa korisnika na SAS. Može se koristiti samo sa **blob and data lake storage** ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Moguće je **revoke** sve generisane user delegated SAS.
+- Čak i ako je moguće generisati delegation SAS sa „više” permissions nego što korisnik ima. Međutim, ako principal nema ta permissions, neće raditi (no privesc).
+- **Service SAS**: Ovo se potpisuje koristeći jedan od storage account **access keys**. Može se koristiti za davanje pristupa određenim resursima u okviru jednog storage service-a. Ako se key obnovi, SAS će prestati da radi.
+- **Account SAS**: Takođe se potpisuje sa jednim od storage account **access keys**. Daje pristup resursima kroz storage account services (Blob, Queue, Table, File) i može uključivati service-level operations.
-SAS URL potpisan sa **access key** izgleda ovako:
+A SAS URL potpisan sa **access key** izgleda ovako:
- `https://.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`
-SAS URL potpisan kao **user delegation** izgleda ovako:
+A SAS URL potpisan kao **user delegation** izgleda ovako:
- `https://.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`
-Obratite pažnju na neke **http params**:
+Note some **http params**:
-- Parametar **`se`** označava **expiration date** SAS-a
-- Parametar **`sp`** označava **permissions** SAS-a
+- **`se`** param označava **expiration date** SAS-a
+- **`sp`** param označava **permissions** SAS-a
- **`sig`** je **signature** koja validira SAS
#### SAS permissions
-Prilikom generisanja SAS-a potrebno je navesti permissions koje treba da dodeli. U zavisnosti od objekta nad kojim se SAS generiše, mogu biti uključene različite permissions. Na primer:
+Kada se generiše SAS, potrebno je navesti permissions koje treba da dodeljuje. U zavisnosti od objekta nad kojim se SAS generiše, mogu biti uključene različite permissions. Na primer:
- (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 sada podržava SSH File Transfer Protocol (SFTP), omogućavajući bezbedan transfer fajlova i upravljanje direktno u Blob Storage bez potrebe za custom solutions ili third-party products.
+Azure Blob Storage sada podržava SSH File Transfer Protocol (SFTP), omogućavajući bezbedan transfer fajlova i upravljanje direktno ka Blob Storage bez potrebe za custom solutions ili third-party products.
### Key Features
-- Protocol Support: SFTP radi sa Blob Storage nalozima konfigurisanima sa hierarchical namespace (HNS). Ovo organizuje blobs u directories i subdirectories radi lakše navigacije.
-- Security: SFTP koristi lokalne user identities za autentikaciju i ne integriše se sa RBAC ili ABAC. Svaki lokalni user može da se autentikuje preko:
+- Protocol Support: SFTP radi sa Blob Storage nalozima konfigurisanih sa hierarchical namespace (HNS). Ovo organizuje blobs u directories i subdirectories radi lakše navigacije.
+- Security: SFTP može koristiti local user identities, ali takođe podržava Microsoft Entra ID-based access sa Azure RBAC za authorization. To znači da se access može dodeliti kroz uobičajene Blob Storage data-plane roles umesto kreiranja lokalnih SFTP korisnika. Local users mogu da se autentifikuju preko:
- Azure-generated passwords
- Public-private SSH key pairs
-- Granular Permissions: Permissions kao što su Read, Write, Delete i List mogu se dodeliti lokalnim users za do 100 containers.
-- Networking Considerations: SFTP connections se ostvaruju preko porta 22. Azure podržava network configurations kao što su firewalls, private endpoints ili virtual networks za zaštitu SFTP traffic.
+- Granular Permissions: Permissions kao što su Read, Write, Delete, i List mogu se dodeliti local users za do 100 containers.
+- Networking Considerations: SFTP connections se uspostavljaju preko porta 22. Azure podržava network konfiguracije kao što su firewalls, private endpoints, ili virtual networks za zaštitu SFTP traffic-a.
### Setup Requirements
-- Hierarchical Namespace: HNS mora biti omogućen pri kreiranju storage account-a.
-- Supported Encryption: Zahteva Microsoft Security Development Lifecycle (SDL)-odobrene cryptographic algorithms (npr. rsa-sha2-256, ecdsa-sha2-nistp256).
+- Hierarchical Namespace: HNS mora biti omogućen prilikom kreiranja storage account-a.
+- Supported Encryption: Zahteva Microsoft Security Development Lifecycle (SDL)-approved cryptographic algorithms (npr. rsa-sha2-256, ecdsa-sha2-nistp256).
- SFTP Configuration:
- Omogućite SFTP na storage account-u.
-- Kreirajte local user identities sa odgovarajućim permissions.
-- Konfigurišite home directories za users da definišete njihovu početnu lokaciju unutar container-a.
+- Za local-user access, kreirajte local user identities sa odgovarajućim permissions.
+- Za local users, konfigurišite home directories da definišete njihovu početnu lokaciju unutar container-a.
### Permissions
@@ -471,6 +471,7 @@ az-file-shares.md
- [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)
+- [https://learn.microsoft.com/en-us/azure/storage/blobs/secure-file-transfer-protocol-support-entra-id-based-access](https://learn.microsoft.com/en-us/azure/storage/blobs/secure-file-transfer-protocol-support-entra-id-based-access)
- [Holiday Hack Challenge 2025 – Spare Key (Azure static website SAS leak)](https://0xdf.gitlab.io/holidayhack2025/act1/spare-key)
- [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)