mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-27 07:14:20 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-sts-p
This commit is contained in:
@@ -4,64 +4,64 @@
|
||||
|
||||
## Grundlegende Informationen
|
||||
|
||||
Azure-Speicherkonten sind grundlegende Dienste in Microsoft Azure, die skalierbaren, sicheren und hochverfügbaren Cloud **Speicher für verschiedene Datentypen** bereitstellen, einschließlich Blobs (Binary Large Objects), Dateien, Warteschlangen und Tabellen. Sie dienen als Container, die diese verschiedenen Speicher Dienste unter einem einzigen Namensraum zur einfachen Verwaltung gruppieren.
|
||||
Azure Storage Accounts sind grundlegende Dienste in Microsoft Azure, die skalierbaren, sicheren und hochverfügbaren Cloud **Speicher für verschiedene Datentypen** bereitstellen, einschließlich Blobs (Binary Large Objects), Dateien, Warteschlangen und Tabellen. Sie dienen als Container, die diese verschiedenen Speicher Dienste unter einem einzigen Namensraum zur einfachen Verwaltung gruppieren.
|
||||
|
||||
**Hauptkonfigurationsoptionen**:
|
||||
|
||||
- Jedes Speicherkonto muss einen **eindeutigen Namen über alle Azure** haben.
|
||||
- Jedes Speicherkonto wird in einer **Region** oder in einer erweiterten Azure-Zone bereitgestellt.
|
||||
- Es ist möglich, die **Premium**-Version des Speicherkontos für bessere Leistung auszuwählen.
|
||||
- Es ist möglich, aus **4 Arten von Redundanz zu wählen, um** gegen Rack-, Laufwerks- und Rechenzentrums-**Ausfälle** zu schützen.
|
||||
- Es ist möglich, zwischen **4 Arten von Redundanz zum Schutz** vor Rack-, Laufwerks- und Rechenzentrums-**Ausfällen** zu wählen.
|
||||
|
||||
**Sicherheitskonfigurationsoptionen**:
|
||||
|
||||
- **Sicheren Transfer für REST-API-Operationen erforderlich**: TLS in jeder Kommunikation mit dem Speicher erforderlich.
|
||||
- **Ermöglicht anonymen Zugriff auf einzelne Container**: Andernfalls wird es nicht möglich sein, in Zukunft anonymen Zugriff zu aktivieren.
|
||||
- **Zugriff auf den Schlüssel des Speicherkontos aktivieren**: Andernfalls wird der Zugriff mit Shared Keys verboten.
|
||||
- **Minimale TLS-Version**
|
||||
- **Minimale TLS-Version**.
|
||||
- **Erlaubter Geltungsbereich für Kopieroperationen**: Erlauben von jedem Speicherkonto, von jedem Speicherkonto aus demselben Entra-Mandanten oder von Speicherkonten mit privaten Endpunkten im selben virtuellen Netzwerk.
|
||||
|
||||
**Blob-Speicheroptionen**:
|
||||
|
||||
- **Erlaube die Replikation über Mandanten hinweg**
|
||||
- **Zugriffsebene**: Hot (häufig auf Daten zugegriffen), Cool und Cold (selten auf Daten zugegriffen)
|
||||
- **Erlaube die Replikation über Mandanten hinweg**.
|
||||
- **Zugriffsebene**: Hot (häufig auf Daten zugreifen), Cool und Cold (selten auf Daten zugreifen).
|
||||
|
||||
**Netzwerkoptionen**:
|
||||
|
||||
- **Netzwerkzugriff**:
|
||||
- Erlauben von allen Netzwerken
|
||||
- Erlauben von ausgewählten virtuellen Netzwerken und IP-Adressen
|
||||
- Öffentlichen Zugriff deaktivieren und privaten Zugriff verwenden
|
||||
- **Private Endpunkte**: Ermöglicht eine private Verbindung zum Speicherkonto von einem virtuellen Netzwerk
|
||||
- Erlauben von allen Netzwerken.
|
||||
- Erlauben von ausgewählten virtuellen Netzwerken und IP-Adressen.
|
||||
- Öffentlichen Zugriff deaktivieren und privaten Zugriff verwenden.
|
||||
- **Private Endpunkte**: Ermöglicht eine private Verbindung zum Speicherkonto von einem virtuellen Netzwerk.
|
||||
|
||||
**Datenschutzoptionen**:
|
||||
|
||||
- **Wiederherstellung zu einem bestimmten Zeitpunkt für Container**: Ermöglicht die Wiederherstellung von Containern in einen früheren Zustand.
|
||||
- Es erfordert, dass Versionierung, Änderungsfeed und Blob-Weichlöschung aktiviert sind.
|
||||
- Es erfordert, dass Versionierung, Änderungsprotokoll und Blob-Weichlöschung aktiviert sind.
|
||||
- **Weichlöschung für Blobs aktivieren**: Es ermöglicht einen Aufbewahrungszeitraum in Tagen für gelöschte Blobs (auch überschrieben).
|
||||
- **Weichlöschung für Container aktivieren**: Es ermöglicht einen Aufbewahrungszeitraum in Tagen für gelöschte Container.
|
||||
- **Weichlöschung für Dateifreigaben aktivieren**: Es ermöglicht einen Aufbewahrungszeitraum in Tagen für gelöschte Dateifreigaben.
|
||||
- **Versionierung für Blobs aktivieren**: Behalten Sie frühere Versionen Ihrer Blobs.
|
||||
- **Blob-Änderungsfeed aktivieren**: Protokollieren Sie Erstellungs-, Änderungs- und Löschänderungen an Blobs.
|
||||
- **Blob-Änderungsprotokoll aktivieren**: Protokollieren Sie Erstellungs-, Änderungs- und Löschänderungen an Blobs.
|
||||
- **Unterstützung für Unveränderlichkeit auf Versionsebene aktivieren**: Ermöglicht es Ihnen, eine zeitbasierte Aufbewahrungsrichtlinie auf Kontoebene festzulegen, die für alle Blob-Versionen gilt.
|
||||
- Unterstützung für Unveränderlichkeit auf Versionsebene und Wiederherstellung zu einem bestimmten Zeitpunkt für Container können nicht gleichzeitig aktiviert werden.
|
||||
|
||||
**Verschlüsselungskonfigurationsoptionen**:
|
||||
|
||||
- **Verschlüsselungstyp**: Es ist möglich, Microsoft-verwaltete Schlüssel (MMK) oder vom Kunden verwaltete Schlüssel (CMK) zu verwenden.
|
||||
- **Verschlüsselungstyp**: Es ist möglich, Microsoft-managed keys (MMK) oder Customer-managed keys (CMK) zu verwenden.
|
||||
- **Infrastrukturverschlüsselung aktivieren**: Ermöglicht die doppelte Verschlüsselung der Daten "für mehr Sicherheit".
|
||||
|
||||
### Speicherendpunkte
|
||||
|
||||
<table data-header-hidden><thead><tr><th width="197">Speicherdienst</th><th>Endpunkt</th></tr></thead><tbody><tr><td><strong>Blob-Speicher</strong></td><td><code>https://<storage-account>.blob.core.windows.net</code><br><br><code>https://<stg-acc>.blob.core.windows.net/<container-name>?restype=container&comp=list</code></td></tr><tr><td><strong>Data Lake Storage</strong></td><td><code>https://<storage-account>.dfs.core.windows.net</code></td></tr><tr><td><strong>Azure Files</strong></td><td><code>https://<storage-account>.file.core.windows.net</code></td></tr><tr><td><strong>Warteschlangen-Speicher</strong></td><td><code>https://<storage-account>.queue.core.windows.net</code></td></tr><tr><td><strong>Tabellenspeicher</strong></td><td><code>https://<storage-account>.table.core.windows.net</code></td></tr></tbody></table>
|
||||
<table data-header-hidden><thead><tr><th width="197">Speicherdienst</th><th>Endpunkt</th></tr></thead><tbody><tr><td><strong>Blob-Speicher</strong></td><td><code>https://<storage-account>.blob.core.windows.net</code><br><br><code>https://<stg-acc>.blob.core.windows.net/<container-name>?restype=container&comp=list</code></td></tr><tr><td><strong>Data Lake Storage</strong></td><td><code>https://<storage-account>.dfs.core.windows.net</code></td></tr><tr><td><strong>Azure Files</strong></td><td><code>https://<storage-account>.file.core.windows.net</code></td></tr><tr><td><strong>Warteschlangen-Speicher</strong></td><td><code>https://<storage-account>.queue.core.windows.net</code></td></tr><tr><td><strong>Tabellen-Speicher</strong></td><td><code>https://<storage-account>.table.core.windows.net</code></td></tr></tbody></table>
|
||||
|
||||
### Öffentliche Exposition
|
||||
|
||||
Wenn "Öffentlichen Zugriff auf Blobs erlauben" **aktiviert** ist (standardmäßig deaktiviert), ist es beim Erstellen eines Containers möglich:
|
||||
|
||||
- **Öffentlichen Zugriff auf Blobs zu gewähren** (Sie müssen den Namen kennen).
|
||||
- **Containerblobs aufzulisten** und **sie zu lesen**.
|
||||
- Es vollständig **privat zu machen**.
|
||||
- **Container-Blobs aufzulisten** und **sie zu lesen**.
|
||||
- Es vollständig **privat** zu machen.
|
||||
|
||||
<figure><img src="https://lh7-rt.googleusercontent.com/slidesz/AGV_vUfoetUnYBPWQpRrWNnnlbqWpl8Rdoaeg5uBrCVlvcNDlnKwQHjZe8nUb2SfPspBgbu-lCZLmUei-hFi_Jl2eKbaxUtBGTjdUSDmkrcwr90VZkmuMjk9tyh92p75btfyzGiUTa0-=s2048?key=m8TV59TrCFPlkiNnmhYx3aZt" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -81,17 +81,17 @@ Die Speicherkonten haben Zugriffsschlüssel, die verwendet werden können, um da
|
||||
|
||||
<figure><img src="../../../images/image (5).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### **Geteilte Schlüssel & Lite Geteilte Schlüssel**
|
||||
### **Shared Keys & Lite Shared Keys**
|
||||
|
||||
Es ist möglich, [**geteilte Schlüssel zu generieren**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key), die mit den Zugriffsschlüsseln signiert sind, um den Zugriff auf bestimmte Ressourcen über eine signierte URL zu autorisieren.
|
||||
Es ist möglich, [**Shared Keys zu generieren**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key), die mit den Zugriffsschlüsseln signiert sind, um den Zugriff auf bestimmte Ressourcen über eine signierte URL zu autorisieren.
|
||||
|
||||
> [!NOTE]
|
||||
> Beachten Sie, dass der Teil `CanonicalizedResource` die Ressource der Speicher Dienste (URI) darstellt. Und wenn ein Teil der URL codiert ist, sollte er auch innerhalb des `CanonicalizedResource` codiert werden.
|
||||
> Beachten Sie, dass der Teil `CanonicalizedResource` die Ressource der Speicher Dienste (URI) darstellt. Und wenn ein Teil der URL codiert ist, sollte er auch im `CanonicalizedResource` codiert werden.
|
||||
|
||||
> [!NOTE]
|
||||
> Dies wird **standardmäßig von `az` cli** verwendet, um Anfragen zu authentifizieren. Um die Anmeldeinformationen des Entra ID-Prinzips zu verwenden, geben Sie den Parameter `--auth-mode login` an.
|
||||
|
||||
- Es ist möglich, einen **geteilten Schlüssel für Blob-, Warteschlangen- und Dateidienste** zu generieren, indem die folgenden Informationen signiert werden:
|
||||
- Es ist möglich, einen **Shared Key für Blob-, Warteschlangen- und Dateidienste** zu generieren, indem die folgenden Informationen signiert werden:
|
||||
```bash
|
||||
StringToSign = VERB + "\n" +
|
||||
Content-Encoding + "\n" +
|
||||
@@ -108,7 +108,7 @@ Range + "\n" +
|
||||
CanonicalizedHeaders +
|
||||
CanonicalizedResource;
|
||||
```
|
||||
- Es ist möglich, einen **shared key für die Tabellendienste** zu generieren, indem die folgenden Informationen signiert werden:
|
||||
- Es ist möglich, einen **gemeinsamen Schlüssel für Tabellenservices** zu generieren, indem die folgenden Informationen signiert werden:
|
||||
```bash
|
||||
StringToSign = VERB + "\n" +
|
||||
Content-MD5 + "\n" +
|
||||
@@ -125,12 +125,12 @@ Date + "\n" +
|
||||
CanonicalizedHeaders +
|
||||
CanonicalizedResource;
|
||||
```
|
||||
- Es ist möglich, einen **lite shared key für Table-Dienste** zu generieren, indem die folgenden Informationen signiert werden:
|
||||
- Es ist möglich, einen **lite shared key für Tabellenservices** zu generieren, indem die folgenden Informationen signiert werden:
|
||||
```bash
|
||||
StringToSign = Date + "\n"
|
||||
CanonicalizedResource
|
||||
```
|
||||
Dann kann der Schlüssel im Authorization-Header unter Verwendung der Syntax verwendet werden:
|
||||
Dann kann der Schlüssel im Authorization-Header gemäß der Syntax verwendet werden:
|
||||
```bash
|
||||
Authorization="[SharedKey|SharedKeyLite] <AccountName>:<Signature>"
|
||||
#e.g.
|
||||
@@ -148,16 +148,16 @@ Shared Access Signatures (SAS) sind sichere, zeitlich begrenzte URLs, die **spez
|
||||
|
||||
#### SAS-Typen
|
||||
|
||||
- **User delegation SAS**: Dies wird von einem **Entra ID-Prinzipal** erstellt, der die SAS signiert und die Berechtigungen vom Benutzer an die SAS delegiert. Es kann nur mit **Blob- und Data Lake Storage** verwendet werden ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Es ist möglich, alle generierten benutzergestützten SAS zu **widerrufen**.
|
||||
- Auch wenn es möglich ist, eine Delegation SAS mit "mehr" Berechtigungen zu generieren als die, die der Benutzer hat. Wenn der Prinzipal diese jedoch nicht hat, funktioniert es nicht (kein Privesc).
|
||||
- **Benutzerdelegation SAS**: Dies wird von einem **Entra ID-Prinzipal** erstellt, der die SAS signiert und die Berechtigungen vom Benutzer an die SAS delegiert. Es kann nur mit **Blob- und Data Lake Storage** verwendet werden ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Es ist möglich, alle generierten benutzergestützten SAS zu **widerrufen**.
|
||||
- Auch wenn es möglich ist, eine Delegation SAS mit "mehr" Berechtigungen zu generieren, als der Benutzer hat. Wenn der Prinzipal diese jedoch nicht hat, funktioniert es nicht (kein Privesc).
|
||||
- **Service SAS**: Dies wird mit einem der **Zugriffsschlüssel** des Speicherkontos signiert. Es kann verwendet werden, um den Zugriff auf spezifische Ressourcen in einem einzelnen Speicherdienst zu gewähren. Wenn der Schlüssel erneuert wird, funktioniert die SAS nicht mehr.
|
||||
- **Account SAS**: Es wird ebenfalls mit einem der **Zugriffsschlüssel** des Speicherkontos signiert. Es gewährt Zugriff auf Ressourcen über die Dienste eines Speicherkontos (Blob, Queue, Table, File) und kann dienstebezogene Operationen umfassen.
|
||||
- **Konto SAS**: Es wird ebenfalls mit einem der **Zugriffsschlüssel** des Speicherkontos signiert. Es gewährt Zugriff auf Ressourcen über die Dienste eines Speicherkontos (Blob, Queue, Table, File) und kann dienstebezogene Operationen umfassen.
|
||||
|
||||
Eine von einem **Zugriffsschlüssel** signierte SAS-URL sieht so aus:
|
||||
Eine SAS-URL, die mit einem **Zugriffsschlüssel** signiert ist, sieht so aus:
|
||||
|
||||
- `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`
|
||||
|
||||
Eine als **User Delegation** signierte SAS-URL sieht so aus:
|
||||
Eine SAS-URL, die als **Benutzerdelegation** signiert ist, sieht so aus:
|
||||
|
||||
- `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`
|
||||
|
||||
@@ -186,7 +186,7 @@ Azure Blob Storage unterstützt jetzt das SSH File Transfer Protocol (SFTP), das
|
||||
- Granulare Berechtigungen: Berechtigungen wie Lesen, Schreiben, Löschen und Auflisten können lokalen Benutzern für bis zu 100 Container zugewiesen werden.
|
||||
- Netzwerküberlegungen: SFTP-Verbindungen erfolgen über Port 22. Azure unterstützt Netzwerkkonfigurationen wie Firewalls, private Endpunkte oder virtuelle Netzwerke, um den SFTP-Verkehr abzusichern.
|
||||
|
||||
### Einrichtungsvoraussetzungen
|
||||
### Einrichtungsanforderungen
|
||||
|
||||
- Hierarchischer Namensraum: HNS muss beim Erstellen des Speicherkontos aktiviert sein.
|
||||
- Unterstützte Verschlüsselung: Erfordert von Microsoft genehmigte kryptografische Algorithmen (z. B. rsa-sha2-256, ecdsa-sha2-nistp256).
|
||||
@@ -197,14 +197,14 @@ Azure Blob Storage unterstützt jetzt das SSH File Transfer Protocol (SFTP), das
|
||||
|
||||
### Berechtigungen
|
||||
|
||||
| Berechtigung | Symbol | Beschreibung |
|
||||
| ---------------------- | ------ | ------------------------------------ |
|
||||
| **Lesen** | `r` | Dateiinhalt lesen. |
|
||||
| **Schreiben** | `w` | Dateien hochladen und Verzeichnisse erstellen. |
|
||||
| **Auflisten** | `l` | Inhalte von Verzeichnissen auflisten. |
|
||||
| **Löschen** | `d` | Dateien oder Verzeichnisse löschen. |
|
||||
| **Erstellen** | `c` | Dateien oder Verzeichnisse erstellen. |
|
||||
| **Besitz ändern** | `o` | Den besitzenden Benutzer oder die Gruppe ändern. |
|
||||
| Berechtigung | Symbol | Beschreibung |
|
||||
| --------------------- | ------ | ------------------------------------ |
|
||||
| **Lesen** | `r` | Dateiinhalte lesen. |
|
||||
| **Schreiben** | `w` | Dateien hochladen und Verzeichnisse erstellen. |
|
||||
| **Auflisten** | `l` | Inhalte von Verzeichnissen auflisten. |
|
||||
| **Löschen** | `d` | Dateien oder Verzeichnisse löschen. |
|
||||
| **Erstellen** | `c` | Dateien oder Verzeichnisse erstellen. |
|
||||
| **Besitz ändern** | `o` | Den besitzenden Benutzer oder die Gruppe ändern. |
|
||||
| **Berechtigungen ändern** | `p` | ACLs für Dateien oder Verzeichnisse ändern. |
|
||||
|
||||
## Enumeration
|
||||
@@ -330,7 +330,7 @@ az storage account local-user list \
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="Az PowerShell" }}
|
||||
```powershell
|
||||
```bash
|
||||
# Get storage accounts
|
||||
Get-AzStorageAccount | fl
|
||||
# Get rules to access the storage account
|
||||
@@ -402,7 +402,7 @@ az-file-shares.md
|
||||
../az-privilege-escalation/az-storage-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## Post-Exploitation
|
||||
## Nach der Ausnutzung
|
||||
|
||||
{{#ref}}
|
||||
../az-post-exploitation/az-blob-storage-post-exploitation.md
|
||||
|
||||
Reference in New Issue
Block a user