From c08d678871da0eb2ae3654b8035cb3c35a67cdc1 Mon Sep 17 00:00:00 2001 From: Translator Date: Fri, 17 Jul 2026 06:10:09 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/azure-security/az-services/az-stor --- .../azure-security/az-services/az-sql.md | 100 +++++----- .../azure-security/az-services/az-storage.md | 184 +++++++++--------- 2 files changed, 142 insertions(+), 142 deletions(-) diff --git a/src/pentesting-cloud/azure-security/az-services/az-sql.md b/src/pentesting-cloud/azure-security/az-services/az-sql.md index 987cdaf40..80b5efe4d 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-sql.md +++ b/src/pentesting-cloud/azure-security/az-services/az-sql.md @@ -4,47 +4,47 @@ ## Azure SQL -Azure SQL je porodica upravljanih, bezbednih i inteligentnih proizvoda koji koriste **SQL Server database engine u Azure cloud-u**. To znači da ne morate da brinete o fizičkoj administraciji svojih servera, i možete da se fokusirate na upravljanje svojim podacima. +Azure SQL je porodica managed, bezbednih i inteligentnih proizvoda koji koriste **SQL Server database engine u Azure cloud-u**. To znači da ne morate da brinete o fizičkoj administraciji servera i možete da se usredsredite na upravljanje svojim podacima. Azure SQL se sastoji od četiri glavne ponude: -1. **Azure SQL Server**: Server je potreban za **deployment i management** SQL Server baza podataka. -2. **Azure SQL Database**: Ovo je **fully-managed database service**, koja vam omogućava da hostujete pojedinačne baze podataka u Azure cloud-u. -3. **Azure SQL Managed Instance**: Ovo je za veće sisteme, celokupne SQL Server instance-scoped deployments. -4. **Azure SQL Server on Azure VMs**: Ovo je najbolje za arhitekture gde želite **control over the operating system **i SQL Server instancu. +1. **Azure SQL Server**: Server je potreban za **deployment i upravljanje** SQL Server bazama podataka. +2. **Azure SQL Database**: Ovo je **potpuno managed database service**, koji vam omogućava da hostujete pojedinačne baze podataka u Azure cloud-u. +3. **Azure SQL Managed Instance**: Namenjen je deployment-ima većeg obima, koji obuhvataju čitav SQL Server instance-scope. +4. **Azure SQL Server on Azure VMs**: Najpogodniji je za arhitekture u kojima želite **kontrolu nad operativnim sistemom **i SQL Server instancom. ### SQL Server Security Features -**Network access:** +**Mrežni pristup:** -- Public endpoint (može da ograniči pristup na određene mreže). -- Private endpoints. -- Takođe je moguće ograničiti konekcije na osnovu domain names. -- Takođe je moguće dozvoliti Azure services da pristupe (na primer, da bi se koristio Query editor u portalu ili da bi se omogućilo Azure VM-u da se poveže). -- Ako je na SQL Server-u podešeno *Allow Azure services and resources to access this server* na "Enabled", Azure će automatski kreirati skriveno firewall pravilo koje dozvoljava sav network traffic koji dolazi iz Azure da se poveže na SQL Server — uključujući resurse iz bilo kog tenant-a. -- To znači da, ako dobijete validne SQL credentials, možete da se povežete na žrtvin Azure SQL Server sa Azure VM-a unutar sopstvenog tenant-a pod kontrolom napadača. [MS docs to objašnjavaju](https://learn.microsoft.com/en-us/azure/azure-sql/database/network-access-controls-overview?view=azuresql#allow-azure-services) +- Javni endpoint (pristup može da se ograniči na određene mreže). +- Privatni endpoint-i. +- Takođe je moguće ograničiti konekcije na osnovu imena domena. +- Takođe je moguće dozvoliti Azure servisima da mu pristupe (na primer, da bi se koristio Query editor na portalu ili da bi se omogućilo povezivanje Azure VM-a). +- Ako je za SQL Server opcija *Allow Azure services and resources to access this server* podešena na „Enabled“, Azure će automatski kreirati skriveno firewall pravilo koje dozvoljava celokupnom mrežnom saobraćaju koji potiče iz Azure-a da se poveže na SQL Server — uključujući resurse iz bilo kog tenant-a. +- To znači da, ako dođete do validnih SQL credentials, možete da se povežete na victim Azure SQL Server sa Azure VM-a unutar sopstvenog attacker-controlled tenant-a. [The MS docs explains this](https://learn.microsoft.com/en-us/azure/azure-sql/database/network-access-controls-overview?view=azuresql#allow-azure-services) -**Authentication Methods:** +**Metode autentikacije:** -- Microsoft **Entra-only** authentication: Morate da navedete Entra principals koji će imati pristup servisu. -- **Both SQL and Microsoft Entra** authentication: Tradicionalna SQL autentikacija sa username i password, zajedno sa Microsoft Entra. -- **Only SQL** authentication: Dozvoljava pristup samo preko database users. +- Microsoft **Entra-only** autentikacija: Potrebno je navesti Entra principals koji će imati pristup servisu. +- **Both SQL and Microsoft Entra** autentikacija: Tradicionalna SQL autentikacija pomoću username-a i password-a, zajedno sa Microsoft Entra autentikacijom. +- **Only SQL** autentikacija: Dozvoljen je pristup samo putem database users. -Imajte na umu da, ako je dozvoljena bilo koja SQL auth, mora da bude naveden admin user (username + password), a ako je izabran Entra ID auth, takođe je potrebno navesti bar jedan principal sa admin access. +Imajte na umu da, ako je dozvoljen bilo koji SQL auth, mora da se navede admin user (username + password), a ako je izabran Entra ID auth, takođe je potrebno navesti najmanje jedan principal sa admin pristupom. -**Encryption:** +**Enkripcija:** -- Zove se “Transparent data encryption” i enkriptuje databases, backups i logs at rest. -- Kao i uvek, po default-u se koristi Azure managed key, ali može da se koristi i customer managed encryption key (CMEK). +- Zove se „Transparent data encryption“ i šifruje baze podataka, backup-e i logove u stanju mirovanja. +- Kao i uvek, Azure managed key se podrazumevano koristi, ali može da se koristi i customer managed encryption key (CMEK). **Managed Identities:** -- Moguće je dodeliti system i user managed MIs. +- Moguće je dodeliti system i user managed MI-jeve. - Koriste se za pristup encryption key-u (ako se koristi CMEK) i drugim servisima iz baza podataka. -- Za neke primere Azure servisa kojima može da se pristupi iz baze pogledajte [ovu stranicu docs](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql) -- Ako je dodeljeno više od jednog UMI-ja, moguće je navesti koji je defaultni za korišćenje. -- Moguće je konfiguristi federated client identity za cross-tenant access. +- Za neke primere Azure servisa kojima se može pristupiti iz baze podataka pogledajte [this page of the docs](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql) +- Ako je dodeljeno više od jednog UMI-ja, moguće je navesti podrazumevani koji će se koristiti. +- Moguće je konfigurisati federated client identity za cross-tenant pristup. -Neke komande za pristup info unutar blob storage iz SQL baze: +Neke komande za pristup informacijama unutar blob storage-a iz SQL baze podataka: ```sql -- Create a credential for the managed identity CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential] @@ -71,58 +71,58 @@ GO ``` **Microsoft Defender:** -- Korisno za “mitigating potential database vulnerabilities, and detecting anomalous activities” -- Pričaćemo o Defender-u u posebnoj lekciji (može da bude omogućen u nekoliko drugih Azure servisa) +- Koristan je za „ublažavanje potencijalnih ranjivosti baza podataka i otkrivanje anomalnih aktivnosti“ +- O Defender-u ćemo govoriti u posebnoj lekciji (može biti omogućen u nekoliko drugih Azure servisa) **Backups:** -- Frekvencija backup-a se upravlja u retention policies. +- Učestalost pravljenja backup-a određuje se pravilima zadržavanja. **Deleted databases:** -- Moguće je restore-ovati DBs koje su obrisane iz postojećih backup-a. +- Moguće je vratiti baze podataka koje su obrisane, koristeći postojeće backup-e. ## Azure SQL Database -**Azure SQL Database** je **fully managed database platform as a service (PaaS)** koja pruža skalabilna i bezbedna relacijska database rešenja. Izgrađena je na najnovijim SQL Server tehnologijama i eliminiše potrebu za infrastructure management-om, što je čini popularnim izborom za cloud-based aplikacije. +**Azure SQL Database** je **potpuno upravljana database platforma kao servis (PaaS)** koja pruža skalabilna i bezbedna relaciona database rešenja. Izgrađena je na najnovijim SQL Server tehnologijama i eliminiše potrebu za upravljanjem infrastrukturom, što je čini popularnim izborom za cloud aplikacije. -Da bi se kreirala SQL database potrebno je navesti SQL server na kojem će biti hostovana. +Za kreiranje SQL database potrebno je navesti SQL server na kom će biti hostovana. ### SQL Database Security Features -- **Always Up-to-Date**: Radi na najnovijoj stabilnoj verziji SQL Server-a i automatski prima nove features i patches. +- **Always Up-to-Date**: Pokreće najnoviju stabilnu verziju SQL Server-a i automatski prima nove funkcije i zakrpe. - **Inherited SQL Server security features:** -- Authentication (SQL and/or Entra ID) +- Authentication (SQL i/ili Entra ID) - Assigned Managed Identities - Network restrictions - Encryption - Backups - … -- **Data redundancy:** Opcije su local, zone, Geo ili Geo-Zone redundant. -- **Ledger:** Kriptografski verifikuje integritet podataka, obezbeđujući da se svako tampering otkrije. Korisno za finansijske, medicinske i bilo koje organization koje upravlja sensitive data. +- **Data redundancy:** Opcije su local, zone, Geo ili Geo-Zone redundantne. +- **Ledger:** Kriptografski proverava integritet podataka, čime osigurava da se svako neovlašćeno menjanje otkrije. Korisno je za finansijske, medicinske i sve organizacije koje upravljaju osetljivim podacima. -SQL database može biti deo **elastic Pool**. Elastic pools su cost-effective rešenje za upravljanje više databases deljenjem configurable compute (eDTUs) i storage resources među njima, uz cenu zasnovanu isključivo na dodeljenim resursima, a ne na broju databases. +SQL database može biti deo **elastic Pool-a**. Elastic pools su isplativo rešenje za upravljanje većim brojem baza podataka deljenjem podesivih compute (eDTUs) i storage resursa među njima, pri čemu se cena zasniva isključivo na dodeljenim resursima, a ne na broju baza podataka. #### Azure SQL Column Level Security (Masking) & Row Level Security -**Azure SQL's dynamic** data masking je feature koji pomaže da **zaštiti sensitive information tako što je skriva** od unauthorized users. Umesto menjanja stvarnih podataka, on dinamički maskira prikazane podatke, obezbeđujući da se osetljivi detalji kao što su brojevi kreditnih kartica prikriju. +**Azure SQL's dynamic** data masking je funkcija koja pomaže u **zaštiti osetljivih informacija tako što ih sakriva** od neovlašćenih korisnika. Umesto menjanja stvarnih podataka, ona dinamički maskira prikazane podatke, čime osigurava da osetljivi detalji, kao što su brojevi kreditnih kartica, budu sakriveni. -**Dynamic Data Masking** utiče na sve users osim onih koji su unmasked (ovi users moraju biti navedeni) i administrators. Ima konfiguracionu opciju koja određuje koji SQL users su izuzeti iz dynamic data masking, pri čemu su **administrators uvek isključeni**. +**Dynamic Data Masking** utiče na sve korisnike osim onih kod kojih je masking uklonjen (ovi korisnici moraju biti navedeni) i administratora. Ima opciju konfiguracije koja određuje koji SQL korisnici su izuzeti od dynamic data masking-a, pri čemu su **administratori uvek izuzeti**. -**Azure SQL Row Level Security (RLS)** je feature koji **kontroliše koje rows user može da vidi ili menja**, obezbeđujući da svaki user vidi samo podatke relevantne za njega. Kreiranjem security policies sa filter ili block predicates, organization mogu da primene fine-grained access na nivou database. +**Azure SQL Row Level Security (RLS)** je funkcija koja **kontroliše koje redove korisnik može da vidi ili menja**, čime osigurava da svaki korisnik vidi samo podatke relevantne za njega. Kreiranjem security policies sa filter ili block predicates, organizacije mogu da sprovedu granularnu kontrolu pristupa na nivou database-a. ### Azure SQL Managed Instance -**Azure SQL Managed Instances** su za veće scale, kompletne SQL Server instance-scoped deployments. Pruža skoro 100% kompatibilnost sa najnovijim SQL Server on-premises (Enterprise Edition) Database Engine-om, što obezbeđuje native virtual network (VNet) implementation koja rešava uobičajene security concerns, i business model povoljan za on-premises SQL Server customers. +**Azure SQL Managed Instances** namenjene su deployment-ima većeg obima, koji obuhvataju čitave SQL Server instance. Pružaju gotovo 100% kompatibilnost sa najnovijim SQL Server on-premises (Enterprise Edition) Database Engine-om, koji pruža nativnu implementaciju virtual network-a (VNet) za rešavanje uobičajenih bezbednosnih problema, kao i poslovni model povoljan za on-premises SQL Server korisnike. ### Azure SQL Virtual Machines -**Azure SQL Virtual Machines** omogućavaju da se **kontroliše operating system** i SQL Server instance, jer će VM biti spawn-ovan u VM servisu koji pokreće SQL server. +**Azure SQL Virtual Machines** omogućavaju **kontrolu operativnog sistema** i SQL Server instance, pošto se u VM servisu pokreće VM sa SQL serverom. -Kada se kreira SQL Virtual Machine moguće je **izabrati sve settings VM-a** (kao što je prikazano u lekciji o VM-u) koji će hostovati SQL server. -- To znači da će VM pristupati nekim VNet(s), može imati **Managed Identities attached** na njega, može imati montirane file shares… što čini **pivoting from the SQL** ka VM-u super interesantnim. -- Pored toga, moguće je konfigurisati app id i secret da bi se **omogućilo SQL-u da pristupi određenom key vault-u**, koji može sadržati sensitive info. +Prilikom kreiranja SQL Virtual Machine moguće je **izabrati sva podešavanja VM-a** (kao što je prikazano u VM lekciji) koji će hostovati SQL server. +- To znači da će VM pristupati određenim VNet-ovima, da će možda imati **Managed Identities attached** na njega, da mogu biti mountovani file share-ovi… što čini **pivoting od SQL-a** ka VM-u veoma interesantnim. +- Takođe, moguće je konfigurisati app id i secret kako bi se **SQL-u omogućio pristup određenom key vault-u**, koji može sadržati osetljive informacije. -Takođe je moguće konfigurisati stvari kao što su **automatic SQL updates**, **automatic backups**, **Entra ID authentication** i većinu features drugih SQL servisa. +Takođe je moguće konfigurisati stvari kao što su **automatic SQL updates**, **automatic backups**, **Entra ID authentication** i većinu funkcija drugih SQL servisa. ## Enumeration @@ -261,7 +261,7 @@ Get-AzSqlVM {{#endtab}} {{#endtabs}} -Dodatno, ako želite da enumerišete Dynamic Data Masking i Row Level policies unutar baze podataka, možete da izvršite upit: +Dodatno, ako želite da izlistate Dynamic Data Masking i Row Level policies unutar baze podataka, možete izvršiti upit: ```sql --Enumerates the masked columns SELECT @@ -288,7 +288,7 @@ ON sp.object_id = sp2.object_id; ``` ### Povezivanje i pokretanje SQL upita -Možete pronaći connection string (koji sadrži credentials) iz primera [enumerating an Az WebApp](az-app-services.md): +Možete pronaći string za povezivanje (koji sadrži kredencijale) u primeru [enumerating an Az WebApp](az-app-services.md): ```bash function invoke-sql{ param($query) @@ -307,18 +307,18 @@ $Connection.Close() invoke-sql 'Select Distinct TABLE_NAME From information_schema.TABLES;' ``` -Takođe možete da koristite sqlcmd za pristup bazi podataka. Važno je znati da li server dozvoljava javne konekcije `az sql server show --name --resource-group `, kao i da li firewall rule dopušta da naš IP pristupi: +Možete takođe koristiti sqlcmd za pristup bazi podataka. Važno je znati da li server dozvoljava javne konekcije `az sql server show --name --resource-group `, kao i da li pravilo firewall-a dozvoljava našoj IP adresi pristup: ```bash sqlcmd -S .database.windows.net -U -P -d ``` -## References +## Reference - [https://learn.microsoft.com/en-us/azure/azure-sql/azure-sql-iaas-vs-paas-what-is-overview?view=azuresql](https://learn.microsoft.com/en-us/azure/azure-sql/azure-sql-iaas-vs-paas-what-is-overview?view=azuresql) - [https://learn.microsoft.com/en-us/azure/azure-sql/database/single-database-overview?view=azuresql](https://learn.microsoft.com/en-us/azure/azure-sql/database/single-database-overview?view=azuresql) - [https://learn.microsoft.com/en-us/azure/azure-sql/managed-instance/sql-managed-instance-paas-overview?view=azuresql](https://learn.microsoft.com/en-us/azure/azure-sql/managed-instance/sql-managed-instance-paas-overview?view=azuresql) - [https://learn.microsoft.com/en-us/azure/azure-sql/virtual-machines/windows/sql-server-on-azure-vm-iaas-what-is-overview?view=azuresql](https://learn.microsoft.com/en-us/azure/azure-sql/virtual-machines/windows/sql-server-on-azure-vm-iaas-what-is-overview?view=azuresql) -## Privilege Escalation +## Eskalacija privilegija {{#ref}} ../az-privilege-escalation/az-sql-privesc.md 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 b14e23600..929795e06 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-storage.md +++ b/src/pentesting-cloud/azure-security/az-services/az-storage.md @@ -4,52 +4,52 @@ ## Osnovne informacije -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. +Azure Storage Accounts su osnovne usluge u okviru Microsoft Azure platforme koje pružaju skalabilan, bezbedan i visoko dostupan cloud **storage za različite tipove podataka**, uključujući blobs (binarne velike objekte), files, queues i tables. Oni služe kao kontejneri koji grupišu ove različite storage usluge pod jednim namespace-om radi jednostavnog upravljanja. **Glavne opcije konfiguracije**: -- 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**. +- Svaki storage account mora imati **jedinstveno ime u okviru celog Azure-a**. +- Svaki storage account se deploy-uje u **regionu** ili Azure extended zone-u +- Moguće je izabrati **premium** verziju storage account-a radi boljih performansi +- Moguće je izabrati između **4 tipa redundancy-ja radi zaštite** od **otkaza** rack-ova, diskova i data centara. -**Opcije sigurnosne konfiguracije**: +**Opcije bezbednosne 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, 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 +- **Allows enabling anonymous access on individual containers**: Ako nije omogućeno, ubuduće neće biti moguće omogućiti anonymous access +- **Enable storage account key access**: Ako nije omogućeno, pristup pomoću 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. +- **Permitted scope for copy operations**: Dozvoljava kopiranje sa bilo kog storage account-a, sa bilo kog storage account-a iz istog Entra tenant-a ili sa storage account-a sa private endpoint-ima u istoj virtual network. **Blob Storage opcije**: - **Allow cross-tenant replication** - **Access tier**: Hot (podaci kojima se često pristupa), Cool i Cold (podaci kojima se retko pristupa) -**Mrežne opcije**: +**Opcije umrežavanja**: - **Network access**: -- Dozvoli sa svih mreža -- Dozvoli sa izabranih virtual networks i IP adresa +- Dozvoli pristup sa svih networks +- Dozvoli pristup sa izabranih virtual networks i IP adresa - Onemogući public access i koristi private access -- **Private endpoints**: Omogućava privatnu konekciju ka storage account-u iz virtual network +- **Private endpoints**: Omogućava private konekciju ka storage account-u iz virtual network-a **Opcije zaštite podataka**: -- **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**: 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. +- **Point-in-time restore for containers**: Omogućava vraćanje containers-a u prethodno stanje +- Zahteva da budu omogućeni versioning, change feed i blob soft delete. +- **Enable soft delete for blobs**: Omogućava period zadržavanja u danima za obrisane blobs (čak i one koji su overwritten) +- **Enable soft delete for containers**: Omogućava period zadržavanja u danima za obrisane containers +- **Enable soft delete for file shares**: Omogućava period zadržavanja u danima za obrisane file shares +- **Enable versioning for blobs**: Održava prethodne verzije vaših blobs +- **Enable blob change feed**: Čuva logs o kreiranju, izmenama i brisanju blobs +- **Enable version-level immutability support**: Omogućava postavljanje time-based retention policy-ja na nivou account-a, koja će se primenjivati na sve verzije blobs. +- Version-level immutability support i point-in-time restore for containers ne mogu biti istovremeno omogućeni. -**Opcije enkripcije**: +**Opcije konfiguracije encryption-a**: - **Encryption type**: Moguće je koristiti Microsoft-managed keys (MMK) ili Customer-managed keys (CMK) -- **Enable infrastructure encryption**: Omogućava double encrypt podataka "for more security" +- **Enable infrastructure encryption**: Omogućava dvostruko encryption podataka „radi veće bezbednosti“ ### Storage endpoints @@ -64,18 +64,18 @@ Azure Storage Accounts su fundamentalne usluge u Microsoft Azure koje obezbeđuj ### Public Exposure -Ako je "Allow Blob public access" **omogućen** (podrazumevano je onemogućen), pri kreiranju kontejnera moguće je: +Ako je opcija „Allow Blob public access“ **omogućena** (podrazumevano je onemogućena), prilikom kreiranja container-a moguće je: -- Dati **public access za čitanje blobs** (moraš da znaš ime). -- **Listati container blobs** i **čitati** ih. +- Omogućiti **public access za čitanje blobs** (potrebno je znati ime). +- **Izlistati blobs u container-u** i **čitati** ih. - Učiniti ga potpuno **private**
### Static website (`$web`) exposure & leaked 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. +- **Static websites** se serviraju iz posebnog `$web` container-a preko endpoint-a specifičnog za region, kao što je `https://.z13.web.core.windows.net/`. +- `$web` container može prijaviti `publicAccess: null` putem blob API-ja, ali su files i dalje dostupni preko static site endpoint-a, pa postavljanje config/IaC artifacts tamo može dovesti do toga da secrets procure. - Brzi audit workflow: ```bash # Identify storage accounts with static website hosting enabled @@ -87,53 +87,53 @@ 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 ``` -### Auditing anonymous blob exposure +### Provera anonimne izloženosti blobova -- **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: +- **Pronađite storage accounts** koji mogu izložiti podatke: `az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'`. Ako je `allowBlobPublicAccess` `false`, ne možete učiniti kontejnere javnim. +- **Proverite rizične naloge** da biste potvrdili zastavicu i druga slaba podešavanja: `az storage account show --name --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'`. +- **Izlistajte izloženost na nivou kontejnera** tamo gde je zastavica omogućena: ```bash az storage container list --account-name \ --query '[].{name:name, access:properties.publicAccess}' ``` -- `"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: -- 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: +- `"Blob"`: anonimno čitanje je dozvoljeno **samo kada je naziv blob-a poznat** (nema listanja). +- `"Container"`: anonimno **listanje + čitanje** svakog blob-a. +- `null`: privatno; potrebna je autentifikacija. +- **Dokažite pristup** bez kredencijala: +- Ako je `publicAccess` postavljen na `Container`, anonimno listanje funkcioniše: `curl "https://.blob.core.windows.net/?restype=container&comp=list"`. +- I za `Blob` i za `Container`, anonimno preuzimanje blob-a funkcioniše kada je naziv poznat: ```bash az storage blob download -c -n --account-name --file /dev/stdout # or via raw HTTP curl "https://.blob.core.windows.net//" ``` -### Connect to Storage +### Povezivanje sa Storage -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. +Ako pronađete bilo koji **storage** na koji možete da se povežete, možete koristiti alat [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) da to uradite. -## Access to Storage +## Pristup Storage-u ### RBAC -Moguće je koristiti Entra ID principals sa **RBAC roles** za pristup storage account-ovima i to je preporučeni način. +Moguće je koristiti Entra ID principals sa **RBAC roles** za pristup storage nalozima i to je preporučeni način. ### Access Keys -Storage account-ovi imaju access keys koji mogu da se koriste za pristup. Ovo obezbeđuje f**ull access to the storage account.** +Storage nalozi imaju access keys koji se mogu koristiti za pristup. Ovo obezbeđuje p**un pristup storage nalogu.**
### **Shared Keys & Lite Shared Keys** -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. +Moguće je [**generisati Shared Keys**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) potpisane access keys vrednostima radi autorizacije pristupa određenim resursima putem potpisanog URL-a. > [!NOTE] -> 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`. +> Imajte na umu da deo `CanonicalizedResource` predstavlja resurs storage servisa (URI). Ako je bilo koji deo URL-a kodiran, trebalo bi da bude kodiran i unutar `CanonicalizedResource`. > [!NOTE] -> Ovo se **koristi podrazumevano od strane `az` cli** za autentifikaciju requests. Da bi koristio Entra ID principal credentials, navedi param `--auth-mode login`. +> Ovo se **podrazumevano koristi u `az` cli** za autentifikaciju zahteva. Da biste koristili credentials Entra ID principala, navedite parametar `--auth-mode login`. -- Moguće je generate **shared key for blob, queue and file services** potpisivanjem sledećih informacija: +- Moguće je generisati **shared key za blob, queue i file servise** potpisivanjem sledećih informacija: ```bash StringToSign = VERB + "\n" + Content-Encoding + "\n" + @@ -150,7 +150,7 @@ Range + "\n" + CanonicalizedHeaders + CanonicalizedResource; ``` -- Moguće je generisati **shared key za table services** potpisivanjem sledećih informacija: +- Moguće je generisati **deljeni ključ za table services** potpisivanjem sledećih informacija: ```bash StringToSign = VERB + "\n" + Content-MD5 + "\n" + @@ -167,12 +167,12 @@ Date + "\n" + CanonicalizedHeaders + CanonicalizedResource; ``` -- Moguće je generisati **lite shared key for table services** potpisivanjem sledećih informacija: +- Moguće je generisati **lite shared key za table services** potpisivanjem sledećih informacija: ```bash StringToSign = Date + "\n" CanonicalizedResource ``` -Zatim, da bi se koristio key, to se može uraditi u Authorization header-u koristeći sledeću sintaksu: +Zatim, za korišćenje ključa, to se može uraditi u Authorization zaglavlju prateći sintaksu: ```bash Authorization="[SharedKey|SharedKeyLite] :" #e.g. @@ -186,76 +186,76 @@ Content-Length: 0 ``` ### **Shared Access Signature** (SAS) -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. +Shared Access Signatures (SAS) su bezbedni URL-ovi sa vremenskim ograničenjem koji **dodeljuju određene dozvole za pristup resurs**ima u Azure Storage nalogu, bez izlaganja access ključeva naloga. Dok access ključevi pružaju potpuni administrativni pristup svim resursima, SAS omogućava granularnu kontrolu navođenjem dozvola (kao što su read ili write) i definisanjem vremena isteka. -#### SAS Types +#### Tipovi SAS-a -- **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. +- **User delegation SAS**: Kreira se iz **Entra ID principal-a**, koji potpisuje SAS i delegira dozvole sa user-a na SAS. Može se koristiti samo sa **blob i data lake storage** ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Moguće je **opozvati** sve generisane user delegated SAS-ove. +- Iako je moguće generisati delegation SAS sa "više" dozvola nego što ih user ima, ako ih principal nema, SAS neće raditi (nema privesc-a). +- **Service SAS**: Potpisuje se pomoću jednog od access ključeva storage naloga. Može se koristiti za odobravanje pristupa određenim resursima u okviru jedne storage service. Ako se ključ obnovi, SAS će prestati da radi. +- **Account SAS**: Takođe se potpisuje pomoću jednog od access ključeva storage naloga. Omogućava pristup resursima kroz services storage naloga (Blob, Queue, Table, File) i može uključivati operacije na nivou service-a. -A SAS URL potpisan sa **access key** izgleda ovako: +SAS URL potpisan pomoću **access key-a** 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` -A SAS URL potpisan kao **user delegation** izgleda ovako: +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` -Note some **http params**: +Obratite pažnju na neke **http params**: -- **`se`** param označava **expiration date** SAS-a -- **`sp`** param označava **permissions** SAS-a +- Parametar **`se`** označava **datum isteka** SAS-a +- Parametar **`sp`** označava **dozvole** SAS-a - **`sig`** je **signature** koja validira SAS #### SAS permissions -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: +Prilikom generisanja SAS-a potrebno je navesti permissions koje treba da dodeli. U zavisnosti od objekta za koji 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 +## SFTP podrška za Azure Blob Storage -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. +Azure Blob Storage sada podržava SSH File Transfer Protocol (SFTP), omogućavajući bezbedan prenos datoteka i upravljanje njima direktno u Blob Storage-u, bez potrebe za custom rešenjima ili third-party proizvodima. -### Key Features +### Ključne funkcije -- 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 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. +- Podrška za protokol: SFTP radi sa Blob Storage nalozima konfigurisanima sa hierarchical namespace (HNS). Ovo organizuje blob-ove u direktorijume i poddirektorijume radi lakše navigacije. +- Bezbednost: SFTP može koristiti local user identitete, ali podržava i pristup zasnovan na Microsoft Entra ID-u sa Azure RBAC-om za autorizaciju. To znači da se pristup može dodeliti pomoću uobičajenih Blob Storage data-plane uloga, umesto kreiranja local SFTP user-a. Local user-i mogu da se autentifikuju pomoću: +- Lozinki koje generiše Azure +- SSH key parova sa public i private ključem +- Granularne permissions: Permissions kao što su Read, Write, Delete i List mogu se dodeliti local user-ima za najviše 100 container-a. +- Razmatranja u vezi sa networking-om: SFTP konekcije se ostvaruju preko porta 22. Azure podržava network konfiguracije kao što su firewall-ovi, private endpoint-i ili virtual network-ovi radi zaštite SFTP saobraćaja. -### Setup Requirements +### Zahtevi za podešavanje -- 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. -- 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. +- Hierarchical Namespace: HNS mora biti omogućen prilikom kreiranja storage naloga. +- Podržano encryption: Zahteva kriptografske algoritme odobrene prema Microsoft Security Development Lifecycle (SDL) standardu (npr. rsa-sha2-256, ecdsa-sha2-nistp256). +- SFTP konfiguracija: +- Omogućite SFTP na storage nalogu. +- Za local-user pristup, kreirajte local user identitete sa odgovarajućim permissions. +- Za local user-e, konfigurišite home direktorijume kako biste definisali njihovu početnu lokaciju unutar container-a. ### Permissions | Permission | Symbol | Description | | ---------------------- | ------ | ------------------------------------ | -| **Read** | `r` | Read file content. | -| **Write** | `w` | Upload files and create directories. | -| **List** | `l` | List contents of directories. | -| **Delete** | `d` | Delete files or directories. | -| **Create** | `c` | Create files or directories. | -| **Modify Ownership** | `o` | Change the owning user or group. | -| **Modify Permissions** | `p` | Change ACLs on files or directories. | +| **Read** | `r` | Čitanje sadržaja datoteke. | +| **Write** | `w` | Upload datoteka i kreiranje direktorijuma. | +| **List** | `l` | Prikaz sadržaja direktorijuma. | +| **Delete** | `d` | Brisanje datoteka ili direktorijuma. | +| **Create** | `c` | Kreiranje datoteka ili direktorijuma. | +| **Modify Ownership** | `o` | Promena user-a ili grupe koji su vlasnici. | +| **Modify Permissions** | `p` | Promena ACL-ova na datotekama ili direktorijumima. | -## Enumeration +## Enumeracija {{#tabs }} {{#tab name="az cli" }}
-az cli enumeration +az cli enumeracija ```bash # Get storage accounts az storage account list #Get the account name from here @@ -442,19 +442,19 @@ New-AzStorageBlobSASToken ` {{#endtab }} {{#endtabs }} -### File Shares +### Deljeni fajlovi {{#ref}} az-file-shares.md {{#endref}} -## Privilege Escalation +## Eskalacija privilegija {{#ref}} ../az-privilege-escalation/az-storage-privesc.md {{#endref}} -## Post Exploitation +## Post exploitation {{#ref}} ../az-post-exploitation/az-blob-storage-post-exploitation.md @@ -466,7 +466,7 @@ az-file-shares.md ../az-persistence/az-storage-persistence.md {{#endref}} -## References +## Reference - [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)