mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-15 14:23:16 -08:00
Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/
This commit is contained in:
@@ -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/\<org_name>/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/\<org>/\<repo>/api_
|
||||
- Es ist möglich, **SSH-Schlüssel** zu den Projekten hinzuzufügen.
|
||||
- _https://app.circleci.com/settings/project/github/\<org>/\<repo>/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}}
|
||||
|
||||
Reference in New Issue
Block a user