Az - Storage Accounts & Blobs
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Azure Storage Accounts su osnovne usluge u Microsoft Azure koje pružaju skalabilnu, sigurnu i visoko dostupnu cloud pohranu za različite tipove podataka, uključujući blobove (binarni veliki objekti), datoteke, redove i tabele. Oni služe kao kontejneri koji grupišu ove različite usluge pohrane pod jednim imenom za lakše upravljanje.
Glavne opcije konfiguracije:
Svaki račun za pohranu mora imati jedinstveno ime u svim Azure.
Svaki račun za pohranu se implementira u regionu ili u proširenoj zoni Azure
Moguće je odabrati premium verziju računa za pohranu za bolju performansu
Moguće je odabrati između 4 tipa redundancije za zaštitu od kvarova rack-a, diska i datacentra.
Opcije konfiguracije sigurnosti:
Zahtevati sigurni prenos za REST API operacije: Zahteva TLS u bilo kojoj komunikaciji sa pohranom
Omogućava omogućavanje anonimnog pristupa na pojedinačnim kontejnerima: Ako ne, neće biti moguće omogućiti anonimni pristup u budućnosti
Omogućiti pristup ključu računa za pohranu: Ako ne, pristup sa deljenim ključevima će biti zabranjen
Minimalna TLS verzija
Dozvoljeni opseg za operacije kopiranja: Dozvoliti iz bilo kog računa za pohranu, iz bilo kog računa za pohranu iz istog Entra tenant-a ili iz računa za pohranu sa privatnim krajnjim tačkama u istoj virtuelnoj mreži.
Opcije Blob Storage-a:
Dozvoliti replikaciju između tenant-a
Nivo pristupa: Vruće (često pristupani podaci), Hladno i Zaleđeno (retko pristupani podaci)
Opcije umrežavanja:
Pristup mreži:
Dozvoliti iz svih mreža
Dozvoliti iz odabranih virtuelnih mreža i IP adresa
Onemogućiti javni pristup i koristiti privatni pristup
Privatne krajnje tačke: Omogućava privatnu vezu sa računom za pohranu iz virtuelne mreže
Opcije zaštite podataka:
Obnavljanje u tački vremena za kontejnere: Omogućava vraćanje kontejnera u ranije stanje
Zahteva verzionisanje, promena feed-a i soft brisanje blobova da bi bila omogućena.
Omogućiti soft brisanje za blobove: Omogućava period zadržavanja u danima za obrisane blobove (čak i prepisane)
Omogućiti soft brisanje za kontejnere: Omogućava period zadržavanja u danima za obrisane kontejnere
Omogućiti soft brisanje za deljene datoteke: Omogućava period zadržavanja u danima za obrisane deljene datoteke
Omogućiti verzionisanje za blobove: Održava prethodne verzije vaših blobova
Omogućiti blob promena feed: Čuva logove o kreiranju, izmenama i brisanju blobova
Omogućiti podršku za imutabilnost na nivou verzije: Omogućava postavljanje politike zadržavanja zasnovane na vremenu na nivou računa koja će se primenjivati na sve verzije blobova.
Podrška za imutabilnost na nivou verzije i obnavljanje u tački vremena za kontejnere ne mogu se omogućiti istovremeno.
Opcije konfiguracije enkripcije:
Tip enkripcije: Moguće je koristiti ključeve koje upravlja Microsoft (MMK) ili ključeve koje upravlja korisnik (CMK)
Omogućiti enkripciju infrastrukture: Omogućava dvostruku enkripciju podataka "za veću sigurnost"
Blob storage
https://<storage-account>.blob.core.windows.net
https://<stg-acc>.blob.core.windows.net/<container-name>?restype=container&comp=list
Data Lake Storage
https://<storage-account>.dfs.core.windows.net
Azure Files
https://<storage-account>.file.core.windows.net
Queue storage
https://<storage-account>.queue.core.windows.net
Table storage
https://<storage-account>.table.core.windows.net
Ako je "Dozvoli javni pristup blobovima" omogućeno (onemogućeno po defaultu), prilikom kreiranja kontejnera moguće je:
Dati javnu pristupnost za čitanje blobova (morate znati ime).
Lista kontejnerskih blobova i čitati ih.
Učiniti ga potpuno privatnim
Ako pronađete bilo koju pohranu kojoj možete pristupiti, možete koristiti alat Microsoft Azure Storage Explorer za to.
Moguće je koristiti Entra ID principe sa RBAC rolama za pristup računima za pohranu i to je preporučeni način.
Računi za pohranu imaju pristupne ključeve koji se mogu koristiti za pristup. Ovo pruža potpun pristup računu za pohranu.
Moguće je generisati deljene ključeve potpisane pristupnim ključevima za autorizaciju pristupa određenim resursima putem potpisanog URL-a.
Napomena da deo CanonicalizedResource
predstavlja resurs usluga pohrane (URI). I ako je bilo koji deo u URL-u kodiran, takođe bi trebao biti kodiran unutar CanonicalizedResource
.
Ovo je korisćeno po defaultu od strane az
cli za autentifikaciju zahteva. Da biste koristili kredencijale Entra ID principa, navedite parametar --auth-mode login
.
Moguće je generisati deljeni ključ za blob, red i usluge datoteka potpisivanjem sledećih informacija:
Moguće je generisati deljeni ključ za usluge tabela potpisivanjem sledećih informacija:
Moguće je generisati lite deljeni ključ za blob, queue i file servise potpisivanjem sledećih informacija:
Moguće je generisati lite shared key za table services potpisivanjem sledećih informacija:
Zatim, da biste koristili ključ, to se može uraditi u Authorization header-u prema sintaksi:
Shared Access Signatures (SAS) su sigurni, vremenski ograničeni URL-ovi koji dodeljuju specifične dozvole za pristup resursima u Azure Storage nalogu bez izlaganja pristupnih ključeva naloga. Dok pristupni ključevi pružaju punu administrativnu kontrolu nad svim resursima, SAS omogućava granularnu kontrolu tako što specificira dozvole (kao što su čitanje ili pisanje) i definiše vreme isteka.
User delegation SAS: Ovo se kreira iz Entra ID principal koji će potpisati SAS i delegirati dozvole od korisnika na SAS. Može se koristiti samo sa blob i data lake storage (docs). Moguće je revokovati sve generisane korisničke delegirane SAS.
Čak i ako je moguće generisati delegaciju SAS sa "više" dozvola nego što korisnik ima. Međutim, ako principal nema te dozvole, neće raditi (nema privesc).
Service SAS: Ovo se potpisuje koristeći jedan od pristupnih ključeva storage naloga. Može se koristiti za dodeljivanje pristupa specifičnim resursima u jednoj usluzi skladištenja. Ako se ključ obnovi, SAS će prestati da funkcioniše.
Account SAS: Takođe se potpisuje jednim od pristupnih ključeva storage naloga. Dodeljuje pristup resursima širom usluga skladištenja naloga (Blob, Queue, Table, File) i može uključivati operacije na nivou usluge.
SAS URL potpisan pristupnim ključem izgleda ovako:
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
SAS URL potpisan kao user delegation izgleda ovako:
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
Napomena o nekim http params:
se
param označava datum isteka SAS-a
sp
param označava dozvole SAS-a
sig
je potpis koji validira SAS
Kada se generiše SAS, potrebno je naznačiti dozvole koje bi trebalo da dodeljuje. U zavisnosti od objekta nad kojim se generiše SAS, različite dozvole mogu biti uključene. 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
Azure Blob Storage sada podržava SSH File Transfer Protocol (SFTP), omogućavajući sigurnu razmenu i upravljanje datotekama direktno u Blob Storage bez potrebe za prilagođenim rešenjima ili proizvodima trećih strana.
Protocol Support: SFTP radi sa Blob Storage nalozima konfiguriranim sa hijerarhijskim imenskim prostorom (HNS). Ovo organizuje blobove u direktorijume i poddirektorijume radi lakše navigacije.
Security: SFTP koristi lokalne korisničke identitete za autentifikaciju i ne integriše se sa RBAC ili ABAC. Svaki lokalni korisnik može se autentifikovati putem:
Azure-generisanih lozinki
Javnih i privatnih SSH ključeva
Granular Permissions: Dozvole kao što su Čitanje, Pisanje, Brisanje i Lista mogu se dodeliti lokalnim korisnicima za do 100 kontejnera.
Networking Considerations: SFTP veze se uspostavljaju preko porta 22. Azure podržava mrežne konfiguracije kao što su vatrozidi, privatne tačke ili virtuelne mreže za zaštitu SFTP saobraćaja.
Hierarchical Namespace: HNS mora biti omogućen prilikom kreiranja naloga za skladištenje.
Supported Encryption: Zahteva Microsoft Security Development Lifecycle (SDL)-odobrene kriptografske algoritme (npr., rsa-sha2-256, ecdsa-sha2-nistp256).
SFTP Configuration:
Omogućite SFTP na nalogu za skladištenje.
Kreirajte lokalne korisničke identitete sa odgovarajućim dozvolama.
Konfigurišite početne direktorijume za korisnike kako biste definisali njihovu početnu lokaciju unutar kontejnera.
Read
r
Čitaj sadržaj datoteke.
Write
w
Učitaj datoteke i kreiraj direktorijume.
List
l
Lista sadržaj direktorijuma.
Delete
d
Obriši datoteke ili direktorijume.
Create
c
Kreiraj datoteke ili direktorijume.
Modify Ownership
o
Promeni korisnika ili grupu koja poseduje.
Modify Permissions
p
Promeni ACL-ove na datotekama ili direktorijumima.
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)