# AWS - CodeBuild Post Exploitation

{{#include ../../../../banners/hacktricks-training.md}}

## CodeBuild

Pour plus d'informations, consultez :

{{#ref}}
../../aws-services/aws-codebuild-enum.md
{{#endref}}

### 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 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}}
../../aws-privilege-escalation/aws-secrets-manager-privesc.md
{{#endref}}

### Abuser de l'Accès au Repo CodeBuild

Pour configurer **CodeBuild**, il aura besoin de **l'accès au repo de code** qu'il va utiliser. Plusieurs plateformes pourraient héberger ce code :

<figure><img src="../../../../images/image (96).png" alt=""><figcaption></figcaption></figure>

Le **projet CodeBuild doit avoir accès** au fournisseur de source configuré, soit via **un rôle IAM** soit avec un **jeton github/bitbucket ou un accès OAuth**.

Un attaquant avec **des permissions élevées sur un CodeBuild** pourrait abuser de cet accès configuré pour divulguer le code du repo configuré et d'autres où les identifiants définis ont accès.\
Pour ce faire, un attaquant n'aurait qu'à **changer l'URL du dépôt pour chaque dépôt auquel les identifiants de configuration ont accès** (notez que le site web aws les listera tous pour vous) :

<figure><img src="../../../../images/image (107).png" alt=""><figcaption></figcaption></figure>

Et **changer les commandes Buildspec pour exfiltrer chaque dépôt**.

> [!WARNING]
> 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

### 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
aws codebuild list-source-credentials
```
{{#ref}}
aws-codebuild-token-leakage.md
{{#endref}}

### `codebuild:DeleteProject`

Un attaquant pourrait supprimer un projet CodeBuild entier, entraînant la perte de la configuration du projet et impactant les applications dépendant du projet.
```bash
aws codebuild delete-project --name <value>
```
**Impact potentiel** : Perte de la configuration du projet et interruption de service pour les applications utilisant le projet supprimé.

### `codebuild:TagResource` , `codebuild:UntagResource`

Un attaquant pourrait ajouter, modifier ou supprimer des balises des ressources CodeBuild, perturbant l'allocation des coûts de votre organisation, le suivi des ressources et les politiques de contrôle d'accès basées sur les balises.
```bash
aws codebuild tag-resource --resource-arn <value> --tags <value>
aws codebuild untag-resource --resource-arn <value> --tag-keys <value>
```
**Impact potentiel** : Perturbation de l'allocation des coûts, du suivi des ressources et des politiques de contrôle d'accès basées sur des balises.

### `codebuild:DeleteSourceCredentials`

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** : 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}}
