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

This commit is contained in:
Translator
2026-01-18 15:04:49 +00:00
parent b763dd655a
commit c9fb062e2f
@@ -4,114 +4,129 @@
## Βασικές Πληροφορίες
Azure Storage Accounts είναι βασικές υπηρεσίες στο Microsoft Azure που προσφέρουν επεκτάσιμη, ασφαλή και υψηλά διαθέσιμη cloud **αποθήκευση για διάφορους τύπους δεδομένων**, συμπεριλαμβανομένων των blobs (binary large objects), files, queues και tables. Λειτουργούν ως containers που ομαδοποιούν αυτές τις διαφορετικές υπηρεσίες αποθήκευσης κάτω από ένα μόνο namespace για εύκολη διαχείριση.
Azure Storage Accounts είναι θεμελιώδεις υπηρεσίες στο Microsoft Azure που παρέχουν επεκτάσιμο, ασφαλές και υψηλά διαθέσιμο cloud **storage για διάφορους τύπους δεδομένων**, συμπεριλαμβανομένων των blobs (binary large objects), files, queues και tables. Λειτουργούν ως containers που ομαδοποιούν αυτές τις διαφορετικές υπηρεσίες αποθήκευσης κάτω από ένα ενιαίο namespace για εύκολη διαχείριση.
**Κύριες επιλογές ρυθμίσεων**:
**Κύριες επιλογές ρύθμισης**:
- Κάθε storage account πρέπει να έχει ένα **μοναδικό όνομα σε όλο το Azure**.
- Κάθε storage account αναπτύσσεται σε μια **region** ή σε μια Azure extended zone
- Είναι δυνατό να επιλεγεί η **premium** έκδοση του storage account για καλύτερη απόδοση
- Είναι δυνατό να επιλεγεί ανάμεσα σε **4 τύπους redundancy για προστασία** από αποτυχίες rack, drive και datacenter.
- Κάθε storage account αναπτύσσεται σε μια **περιοχή (region)** ή σε μια επεκταμένη ζώνη Azure.
- Είναι δυνατό να επιλεγεί η **premium** έκδοση του storage account για καλύτερη απόδοση.
- Είναι δυνατό να επιλεγεί ανάμεσα σε **4 τύπους redundancy για προστασία** απέναντι σε αποτυχίες rack, drive και datacenter.
**Επιλογές ρυθμίσεων ασφάλειας**:
**Επιλογές ρύθμισης ασφάλειας**:
- **Require secure transfer for REST API operations**: Απαιτεί TLS σε οποιαδήποτε επικοινωνία με το storage
- **Allows enabling anonymous access on individual containers**: Αν όχι, δεν θα είναι δυνατό να ενεργοποιηθεί anonymous access στο μέλλον
- **Enable storage account key access**: Αν όχι, η πρόσβαση με Shared Keys θα απαγορεύεται
- **Require secure transfer for REST API operations**: Απαιτεί TLS σε οποιαδήποτε επικοινωνία με το storage.
- **Allows enabling anonymous access on individual containers**: Αν δεν επιτρέπεται, δεν θα είναι δυνατό να ενεργοποιηθεί anonymous access στο μέλλον.
- **Enable storage account key access**: Αν δεν ενεργοποιηθεί, η πρόσβαση με Shared Keys θα απαγορευτεί.
- **Minimum TLS version**
- **Permitted scope for copy operations**: Επιτρέπεται από οποιοδήποτε storage account, από οποιοδήποτε storage account του ίδιου Entra tenant ή από storage account με private endpoints στο ίδιο virtual network.
- **Permitted scope for copy operations**: Επιτρέπει από οποιοδήποτε storage account, από οποιοδήποτε storage account του ίδιου Entra tenant ή από storage account με private endpoints στο ίδιο virtual network.
**Επιλογές Blob Storage**:
**Blob Storage options**:
- **Allow cross-tenant replication**
- **Access tier**: Hot (συχνά προσπελάσιμα δεδομένα), Cool και Cold (σπάνια προσπελάσιμα δεδομένα)
**Επιλογές δικτύωσης**:
**Δικτυακές επιλογές**:
- **Network access**:
- Επιτρέπεται από όλα τα δίκτυα
- Επιτρέπεται από όλα τα networks
- Επιτρέπεται από επιλεγμένα virtual networks και IP διευθύνσεις
- Απενεργοποίηση public access και χρήση private access
- **Private endpoints**: Επιτρέπουν μια ιδιωτική σύνδεση στο storage account από ένα virtual network
- Απενεργοποίηση δημόσιας πρόσβασης και χρήση private access
- **Private endpoints**: Επιτρέπει μια ιδιωτική σύνδεση στο storage account από ένα virtual network
**Επιλογές προστασίας δεδομένων**:
- **Point-in-time restore for containers**: Επιτρέπει την επαναφορά containers σε προηγούμενη κατάσταση
- Απαιτεί να είναι ενεργοποιημένα το versioning, το change feed, και το blob soft delete.
- **Enable soft delete for blobs**: Ενεργοποιεί περίοδο διατήρησης σε ημέρες για διαγραμμένα blobs (ακόμη και αν αντικαταστάθηκαν)
- **Enable soft delete for containers**: Ενεργοποιεί περίοδο διατήρησης σε ημέρες για διαγραμμένα containers
- **Enable soft delete for file shares**: Ενεργοποιεί περίοδο διατήρησης σε ημέρες για διαγραμμένα file shares
- **Enable versioning for blobs**: Διατηρεί προηγούμενες εκδόσεις των blobs
- **Enable blob change feed**: Κρατά αρχεία καταγραφής των δημιουργιών, τροποποιήσεων και διαγραφών των blobs
- **Enable version-level immutability support**: Σας επιτρέπει να ορίσετε πολιτική διατήρησης με βάση τον χρόνο σε επίπεδο account που θα εφαρμόζεται σε όλες τις εκδόσεις blob.
- Η version-level immutability support και το point-in-time restore για containers δεν μπορούν να ενεργοποιηθούν ταυτόχρονα.
- **Point-in-time restore for containers**: Επιτρέπει την επαναφορά containers σε προηγούμενη κατάσταση.
- Απαιτεί να είναι ενεργοποιημένα versioning, change feed και blob soft delete.
- **Enable soft delete for blobs**: Ενεργοποιεί περίοδο retention σε ημέρες για διαγραμμένα blobs (ακόμη και overwritten).
- **Enable soft delete for containers**: Ενεργοποιεί περίοδο retention σε ημέρες για διαγραμμένους containers.
- **Enable soft delete for file shares**: Ενεργοποιεί περίοδο retention σε ημέρες για διαγραμμένα file shares.
- **Enable versioning for blobs**: Διατηρεί προηγούμενες εκδόσεις των blobs.
- **Enable blob change feed**: Κρατά logs από δημιουργία, τροποποίηση και διαγραφή αλλαγών στα blobs.
- **Enable version-level immutability support**: Επιτρέπει να οριστεί πολιτική time-based retention σε επίπεδο account που θα εφαρμόζεται σε όλες τις blob versions.
- Version-level immutability support και point-in-time restore for containers δεν μπορούν να ενεργοποιηθούν ταυτόχρονα.
**Επιλογές κρυπτογράφησης**:
- **Encryption type**: Είναι δυνατό να χρησιμοποιηθούν Microsoft-managed keys (MMK) ή Customer-managed keys (CMK)
- **Enable infrastructure encryption**: Επιτρέπει διπλή κρυπτογράφηση των δεδομένων "για περισσότερη ασφάλεια"
- **Encryption type**: Είναι δυνατό να χρησιμοποιηθούν Microsoft-managed keys (MMK) ή Customer-managed keys (CMK).
- **Enable infrastructure encryption**: Επιτρέπει διπλή κρυπτογράφηση των δεδομένων "για περισσότερη ασφάλεια".
### Τερματικά αποθήκευσης
### Storage endpoints
<table data-header-hidden><thead><tr><th width="197">Υπηρεσία Αποθήκευσης</th><th>Τερματικό</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>
<table data-header-hidden><thead><tr><th width="197">Storage Service</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>
### Δημόσια Έκθεση
Αν η επιλογή "Allow Blob public access" είναι **enabled** (απενεργοποιημένη από προεπιλογή), κατά τη δημιουργία ενός container είναι δυνατό να:
Αν το "Allow Blob public access" είναι **enabled** (disabled από προεπιλογή), κατά τη δημιουργία ενός container είναι δυνατό να:
- Δώσετε **public access για ανάγνωση blobs** (πρέπει να γνωρίζετε το όνομα).
- **Λίστα blobs του container** και **ανάγνωση** αυτών.
- Δώσετε **public access to read blobs** (πρέπει να γνωρίζετε το όνομα).
- **List container blobs** και να τα **read**.
- Το κάνετε πλήρως **private**
<figure><img src="https://lh7-rt.googleusercontent.com/slidesz/AGV_vUfoetUnYBPWQpRrWNnnlbqWpl8Rdoaeg5uBrCVlvcNDlnKwQHjZe8nUb2SfPspBgbu-lCZLmUei-hFi_Jl2eKbaxUtBGTjdUSDmkrcwr90VZkmuMjk9tyh92p75btfyzGiUTa0-=s2048?key=m8TV59TrCFPlkiNnmhYx3aZt" alt=""><figcaption></figcaption></figure>
#### Έλεγχος ανώνυμης έκθεσης blob
### Έκθεση Στατικής ιστοσελίδας (`$web`) & leaked secrets
- Εντοπισμός storage accounts που μπορούν να εκθέσουν δεδομένα: `az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'`. Αν η `allowBlobPublicAccess` είναι `false` δεν μπορείτε να κάνετε τα containers δημόσια.
- Επιθεώρηση επικίνδυνων λογαριασμών για επιβεβαίωση της ρύθμισης και άλλων αδύναμων ρυθμίσεων: `az storage account show --name <acc> --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'`.
- Απαρίθμηση έκθεσης σε επίπεδο container όπου η ρύθμιση είναι ενεργοποιημένη:
- **Static websites** σερβίρονται από τον ειδικό `$web` container μέσω ενός region-specific endpoint όπως `https://<account>.z13.web.core.windows.net/`.
- Ο `$web` container μπορεί να αναφέρει `publicAccess: null` μέσω του blob API, αλλά τα αρχεία εξακολουθούν να είναι προσβάσιμα μέσω του static site endpoint, οπότε η απόθεση config/IaC artifacts εκεί μπορεί να leak secrets.
- Γρήγορη διαδικασία ελέγχου:
```bash
# Identify storage accounts with static website hosting enabled
az storage blob service-properties show --account-name <acc-name> --auth-mode login
# Enumerate containers (including $web) and their public flags
az storage container list --account-name <acc-name> --auth-mode login
# List files served by the static site even when publicAccess is null
az storage blob list --container-name '$web' --account-name <acc-name> --auth-mode login
# 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 <acc-name> --auth-mode login
```
### Έλεγχος έκθεσης ανώνυμου blob
- **Εντοπίστε storage accounts** που μπορούν να εκθέσουν δεδομένα: `az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'`. Αν `allowBlobPublicAccess` είναι `false` δεν μπορείτε να κάνετε containers δημόσια.
- **Επιθεωρήστε επικίνδυνους λογαριασμούς** για να επιβεβαιώσετε τη σημαία και άλλες ευάλωτες ρυθμίσεις: `az storage account show --name <acc> --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'`.
- **Καταγράψτε την έκθεση σε επίπεδο container** όπου η σημαία είναι ενεργοποιημένη:
```bash
az storage container list --account-name <acc> \
--query '[].{name:name, access:properties.publicAccess}'
```
- `"Blob"`: επιτρέπονται ανώνυμες αναγνώσεις **μόνο όταν είναι γνωστό το όνομα του blob** (χωρίς λίστα).
- `"Blob"`: οι ανώνυμες αναγνώσεις επιτρέπονται **μόνο όταν το όνομα του Blob είναι γνωστό** (χωρίς δυνατότητα λίστας).
- `"Container"`: ανώνυμη **λίστα + ανάγνωση** κάθε blob.
- `null`: ιδιωτικό; απαιτείται authentication.
- `null`: ιδιωτικό; απαιτείται αυθεντικοποίηση.
- **Αποδείξτε πρόσβαση** χωρίς διαπιστευτήρια:
- Αν `publicAccess` είναι `Container`, η ανώνυμη λίστα λειτουργεί: `curl "https://<acc>.blob.core.windows.net/<container>?restype=container&comp=list"`.
- Αν το `publicAccess` είναι `Container`, η ανώνυμη λίστα λειτουργεί: `curl "https://<acc>.blob.core.windows.net/<container>?restype=container&comp=list"`.
- Για τόσο το `Blob` όσο και το `Container`, η ανώνυμη λήψη blob λειτουργεί όταν το όνομα είναι γνωστό:
```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>"
```
### Σύνδεση στην αποθήκευση
### Σύνδεση στο 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.
Αν βρείτε κάποιο **storage** στο οποίο μπορείτε να συνδεθείτε, μπορείτε να χρησιμοποιήσετε το εργαλείο [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) για να το κάνετε.
## Πρόσβαση στην αποθήκευση <a href="#about-blob-storage" id="about-blob-storage"></a>
## Πρόσβαση σε Storage <a href="#about-blob-storage" id="about-blob-storage"></a>
### RBAC
It's possible to use Entra ID principals with **RBAC roles** to access storage accounts and it's the recommended way.
Είναι δυνατή η χρήση Entra ID principals με **RBAC roles** για πρόσβαση σε storage accounts και αυτός είναι ο συνιστώμενος τρόπος.
### 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 accounts έχουν access keys που μπορούν να χρησιμοποιηθούν για πρόσβαση σε αυτά. Αυτό παρέχει **πλήρη πρόσβαση στον λογαριασμό storage.**
<figure><img src="../../../images/image (5).png" alt=""><figcaption></figcaption></figure>
### **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.
Μπορείτε να [**generate Shared Keys**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) υπογεγραμμένα με τα access keys για να εξουσιοδοτήσετε πρόσβαση σε ορισμένους πόρους μέσω ενός signed URL.
> [!NOTE]
> Σημειώστε ότι το τμήμα `CanonicalizedResource` αντιπροσωπεύει τον πόρο της υπηρεσίας αποθήκευσης (URI). Και αν οποιοδήποτε τμήμα στο URL είναι κωδικοποιημένο, θα πρέπει επίσης να είναι κωδικοποιημένο μέσα στο `CanonicalizedResource`.
> Λάβετε υπόψη ότι το μέρος `CanonicalizedResource` αναπαριστά τον πόρο των υπηρεσιών storage (URI). Και αν οποιοδήποτε μέρος στο URL είναι κωδικοποιημένο, πρέπει επίσης να κωδικοποιηθεί μέσα στο `CanonicalizedResource`.
> [!NOTE]
> Αυτό **χρησιμοποιείται από προεπιλογή από το `az` cli** για την αυθεντικοποίηση των αιτημάτων. Για να το κάνετε να χρησιμοποιήσει τα credentials του Entra ID principal δηλώστε την παράμετρο `--auth-mode login`.
> Αυτό **χρησιμοποιείται από προεπιλογή από το `az` cli** για την αυθεντικοποίηση των αιτημάτων. Για να το κάνετε να χρησιμοποιήσει τα διαπιστευτήρια του Entra ID principal, υποδείξτε την παράμετρο `--auth-mode login`.
- Είναι δυνατό να δημιουργηθεί ένα **shared key για blob, queue και file services** υπογράφοντας τις ακόλουθες πληροφορίες:
- Είναι δυνατό να δημιουργηθεί ένα **shared key for blob, queue and file services** υπογράφοντας τις ακόλουθες πληροφορίες:
```bash
StringToSign = VERB + "\n" +
Content-Encoding + "\n" +
@@ -128,7 +143,7 @@ Range + "\n" +
CanonicalizedHeaders +
CanonicalizedResource;
```
- Είναι δυνατό να δημιουργηθεί ένας **shared key for table services** υπογράφοντας τις ακόλουθες πληροφορίες:
- Είναι δυνατό να δημιουργηθεί ένα **shared key for table services** υπογράφοντας τις ακόλουθες πληροφορίες:
```bash
StringToSign = VERB + "\n" +
Content-MD5 + "\n" +
@@ -136,7 +151,7 @@ Content-Type + "\n" +
Date + "\n" +
CanonicalizedResource;
```
- Είναι δυνατό να δημιουργηθεί ένα **lite shared key for blob, queue and file services** υπογράφοντας τις ακόλουθες πληροφορίες:
- Είναι δυνατόν να δημιουργηθεί ένα **lite shared key for blob, queue and file services** υπογράφοντας τις ακόλουθες πληροφορίες:
```bash
StringToSign = VERB + "\n" +
Content-MD5 + "\n" +
@@ -150,7 +165,7 @@ CanonicalizedResource;
StringToSign = Date + "\n"
CanonicalizedResource
```
Έπειτα, για να χρησιμοποιηθεί το κλειδί, αυτό μπορεί να γίνει στην κεφαλίδα Authorization ακολουθώντας τη σύνταξη:
Στη συνέχεια, για να χρησιμοποιηθεί το κλειδί, μπορεί να τεθεί στην κεφαλίδα Authorization ακολουθώντας την εξής σύνταξη:
```bash
Authorization="[SharedKey|SharedKeyLite] <AccountName>:<Signature>"
#e.g.
@@ -164,68 +179,68 @@ Content-Length: 0
```
### **Shared Access Signature** (SAS)
Shared Access Signatures (SAS) είναι ασφαλείς, χρονικά περιορισμένα URLs που **παρέχουν συγκεκριμένα δικαιώματα πρόσβασης σε πόρους** σε έναν Azure Storage λογαριασμό χωρίς να αποκαλύπτουν τα κλειδιά πρόσβασης του λογαριασμού. Ενώ τα κλειδιά πρόσβασης παρέχουν πλήρη διαχειριστική πρόσβαση σε όλους τους πόρους, το SAS επιτρέπει πιο λεπτομερή έλεγχο καθορίζοντας δικαιώματα (π.χ. ανάγνωση ή εγγραφή) και χρόνο λήξης.
Οι Shared Access Signatures (SAS) είναι ασφαλείς, χρονικά περιορισμένοι σύνδεσμοι URL που **παραχωρούν συγκεκριμένα δικαιώματα πρόσβασης σε πόρους** σε έναν Azure Storage account χωρίς να αποκαλύπτουν τα κλειδιά πρόσβασης του λογαριασμού. Ενώ τα access keys παρέχουν πλήρη διαχειριστική πρόσβαση σε όλους τους πόρους, τα SAS επιτρέπουν λεπτομερή έλεγχο καθορίζοντας δικαιώματα (όπως read ή write) και ορίζοντας χρόνο λήξης.
#### Τύποι SAS
#### SAS Types
- **User delegation SAS**: Δημιουργείται από έναν **Entra ID principal** που θα υπογράψει το SAS και θα εκχωρήσει τα δικαιώματα από τον χρήστη στο SAS. Μπορεί να χρησιμοποιηθεί μόνο με **blob and data lake storage** ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Είναι δυνατόν να **ανακληθούν** όλα τα δημιουργημένα user delegated SAS.
- Είναι δυνατή η δημιουργία ενός delegation SAS με "περισσότερα" δικαιώματα από αυτά που έχει ο χρήστης. Ωστόσο, αν ο principal δεν τα διαθέτει, δεν θα λειτουργήσει (no privesc).
- **Service SAS**: Υπογράφεται χρησιμοποιώντας ένα από τα **access keys** του storage account. Μπορεί να χρησιμοποιηθεί για να δοθεί πρόσβαση σε συγκεκριμένους πόρους σε μία μόνο storage υπηρεσία. Αν το κλειδί ανανεωθεί, το SAS θα παύσει να λειτουργεί.
- **Account SAS**: Επίσης υπογράφεται με ένα από τα **access keys** του storage account. Παρέχει πρόσβαση σε πόρους σε όλο το storage account services (Blob, Queue, Table, File) και μπορεί να περιλαμβάνει λειτουργίες σε επίπεδο υπηρεσίας.
- **User delegation SAS**: Δημιουργείται από ένα **Entra ID principal** που θα υπογράψει το SAS και θα εξουσιοδοτήσει τα δικαιώματα από τον χρήστη στο SAS. Μπορεί να χρησιμοποιηθεί μόνο με **blob and data lake storage** ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Είναι δυνατόν να **ανακληθούν** όλα τα παραχθέντα user delegated SAS.
- Είναι πιθανό να δημιουργηθεί ένα delegation SAS με "περισσότερα" δικαιώματα από αυτά που έχει ο χρήστης. Ωστόσο, αν το principal δεν διαθέτει αυτά τα δικαιώματα, δεν θα λειτουργήσει (no privesc).
- **Service SAS**: Υπογράφεται χρησιμοποιώντας ένα από τα access keys του storage account. Μπορεί να χρησιμοποιηθεί για να παραχωρήσει πρόσβαση σε συγκεκριμένους πόρους σε μία μόνο storage service. Αν το κλειδί ανανεωθεί, το SAS θα σταματήσει να λειτουργεί.
- **Account SAS**: Υπογράφεται επίσης με ένα από τα access keys του storage account. Παραχωρεί πρόσβαση σε πόρους σε υπηρεσίες του storage account (Blob, Queue, Table, File) και μπορεί να περιλαμβάνει λειτουργίες σε επίπεδο υπηρεσίας.
A SAS URL υπογεγραμμένο από ένα **access key** μοιάζει με αυτό:
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`
A SAS URL υπογεγραμμένο ως **user delegation** μοιάζει με αυτό:
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`
Σημειώστε μερικά **http params**:
Note some **http params**:
- Το **`se`** param υποδεικνύει την **ημερομηνία λήξης** του SAS
- Το **`sp`** param υποδεικνύει τα **δικαιώματα** του SAS
- Το **`sig`** είναι η **υπογραφή** που επικυρώνει το SAS
- The **`se`** param indicates the **expiration date** of the SAS
- The **`sp`** param indicates the **permissions** of the SAS
- The **`sig`** is the **signature** validating the SAS
#### Δικαιώματα SAS
#### SAS permissions
Κατά τη δημιουργία ενός SAS πρέπει να καθοριστούν τα δικαιώματα που θα παραχωρεί. Ανάλογα με το αντικείμενο πάνω στο οποίο δημιουργείται το SAS, μπορεί να περιλαμβάνονται διαφορετικά δικαιώματα. Για παράδειγμα:
Κατά τη δημιουργία ενός SAS χρειάζεται να δηλωθούν τα δικαιώματα που θα παραχωρεί. Ανάλογα με το αντικείμενο πάνω στο οποίο δημιουργείται το SAS, μπορεί να συμπεριληφθούν διαφορετικά δικαιώματα. Για παράδειγμα:
- (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 τώρα υποστηρίζει το SSH File Transfer Protocol (SFTP), επιτρέποντας ασφαλή μεταφορά αρχείων και διαχείριση απευθείας στο Blob Storage χωρίς να απαιτούνται προσαρμοσμένες λύσεις ή προϊόντα τρίτων.
Το Azure Blob Storage υποστηρίζει πλέον το SSH File Transfer Protocol (SFTP), επιτρέποντας ασφαλή μεταφορά και διαχείριση αρχείων απευθείας στο Blob Storage χωρίς την ανάγκη προσαρμοσμένων λύσεων ή προϊόντων τρίτων.
### Βασικά Χαρακτηριστικά
### Key Features
- Protocol Support: Το SFTP λειτουργεί με Blob Storage accounts που έχουν ρυθμιστεί με hierarchical namespace (HNS). Αυτό οργανώνει τα blobs σε directories και subdirectories για ευκολότερη πλοήγηση.
- Security: Το SFTP χρησιμοποιεί local user identities για authentication και δεν ενσωματώνεται με RBAC ή ABAC. Κάθε local user μπορεί να αυθεντικοποιηθεί μέσω:
- Azure-generated passwords
- Public-private SSH key pairs
- Granular Permissions: Δικαιώματα όπως Read, Write, Delete και List μπορούν να ανατεθούν σε local users για έως και 100 containers.
- Networking Considerations: Οι SFTP συνδέσεις γίνονται μέσω της θύρας 22. Το Azure υποστηρίζει ρυθμίσεις δικτύου όπως firewalls, private endpoints ή virtual networks για να ασφαλίσει την SFTP κίνηση.
- Protocol Support: Το SFTP λειτουργεί με λογαριασμούς Blob Storage που έχουν ρυθμιστεί με hierarchical namespace (HNS). Αυτό οργανώνει τα blobs σε φακέλους και υποφακέλους για ευκολότερη πλοήγηση.
- Security: Το SFTP χρησιμοποιεί τοπικές ταυτότητες χρηστών για authentication και δεν ενσωματώνεται με RBAC ή ABAC. Κάθε τοπικός χρήστης μπορεί να κάνει authentication μέσω:
- Azure-generated passwords
- Public-private SSH key pairs
- Granular Permissions: Δικαιώματα όπως Read, Write, Delete και List μπορούν να ανατεθούν σε τοπικούς χρήστες για έως και 100 containers.
- Networking Considerations: Οι SFTP συνδέσεις γίνονται μέσω της θύρας 22. Το Azure υποστηρίζει ρυθμίσεις δικτύου όπως firewalls, private endpoints ή virtual networks για την προστασία της SFTP κίνησης.
### Απαιτήσεις Εγκατάστασης
### Setup Requirements
- Hierarchical Namespace: Το HNS πρέπει να είναι ενεργοποιημένο κατά τη δημιουργία του storage account.
- Supported Encryption: Απαιτούνται κρυπτογραφικοί αλγόριθμοι εγκεκριμένοι από το Microsoft Security Development Lifecycle (SDL) (π.χ., rsa-sha2-256, ecdsa-sha2-nistp256).
- Supported Encryption: Απαιτεί κρυπτογραφικούς αλγορίθμους εγκεκριμένους από το Microsoft Security Development Lifecycle (SDL) (π.χ., rsa-sha2-256, ecdsa-sha2-nistp256).
- SFTP Configuration:
- Ενεργοποίηση του SFTP στον storage account.
- Δημιουργία local user identities με τα κατάλληλα permissions.
- Ρύθμιση home directories για τους χρήστες ώστε να ορίζεται η αρχική τους θέση μέσα στο container.
- Ενεργοποιήστε το SFTP στον storage account.
- Δημιουργήστε τοπικές ταυτότητες χρηστών με κατάλληλα δικαιώματα.
- Διαμορφώστε home directories για τους χρήστες ώστε να ορίσετε την αρχική τους θέση μέσα στο container.
### Δικαιώματα
### Permissions
| Permission | Symbol | Description |
| Δικαίωμα | Σύμβολο | Περιγραφή |
| ---------------------- | ------ | ------------------------------------ |
| **Read** | `r` | Ανάγνωση του περιεχομένου αρχείου. |
| **Write** | `w` | Αποστολή αρχείων και δημιουργία directories. |
| **List** | `l` | Λίστα περιεχομένων των directories. |
| **Delete** | `d` | Διαγραφή αρχείων ή directories. |
| **Create** | `c` | Δημιουργία αρχείων ή directories. |
| **Modify Ownership** | `o` | Αλλαγή ιδιοκτήτη χρήστη ή ομάδας. |
| **Modify Permissions** | `p` | Αλλαγή ACLs σε αρχεία ή directories. |
| **Read** | `r` | Ανάγνωση περιεχομένου αρχείου. |
| **Write** | `w` | Ανέβασμα αρχείων και δημιουργία φακέλων. |
| **List** | `l` | Απαρίθμηση περιεχομένου φακέλων. |
| **Delete** | `d` | Διαγραφή αρχείων ή φακέλων. |
| **Create** | `c` | Δημιουργία αρχείων ή φακέλων. |
| **Modify Ownership** | `o` | Αλλαγή του ιδιοκτήτη χρήστη ή ομάδας. |
| **Modify Permissions** | `p` | Αλλαγή ACLs σε αρχεία ή φακέλους. |
## Enumeration
@@ -420,25 +435,25 @@ New-AzStorageBlobSASToken `
{{#endtab }}
{{#endtabs }}
### Κοινόχρηστα Αρχεία
### Κοινόχρηστοι Φάκελοι
{{#ref}}
az-file-shares.md
{{#endref}}
## Κλιμάκωση Προνομίων
## Κλιμάκωση Δικαιωμάτων
{{#ref}}
../az-privilege-escalation/az-storage-privesc.md
{{#endref}}
## Μετά την εκμετάλλευση
## Μετά-Εκμετάλλευση
{{#ref}}
../az-post-exploitation/az-blob-storage-post-exploitation.md
{{#endref}}
## Διατήρηση πρόσβασης
## Διατήρηση Πρόσβασης
{{#ref}}
../az-persistence/az-storage-persistence.md
@@ -449,6 +464,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)
- [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)
- [https://learn.microsoft.com/en-us/cli/azure/storage/container](https://learn.microsoft.com/en-us/cli/azure/storage/container)