# AWS - Codebuild Enum

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

## CodeBuild

AWS **CodeBuild** est reconnu comme un **service d'intégration continue entièrement géré**. Le principal objectif de ce service est d'automatiser la séquence de compilation du code source, d'exécution des tests et de conditionnement du logiciel pour des fins de déploiement. Le principal avantage offert par CodeBuild réside dans sa capacité à soulager les utilisateurs de la nécessité de provisionner, gérer et faire évoluer leurs serveurs de construction. Cette commodité est due au fait que le service gère lui-même ces tâches. Les fonctionnalités essentielles d'AWS CodeBuild comprennent :

1. **Service géré** : CodeBuild gère et fait évoluer les serveurs de construction, libérant les utilisateurs de la maintenance des serveurs.
2. **Intégration continue** : Il s'intègre au flux de travail de développement et de déploiement, automatisant les phases de construction et de test du processus de publication du logiciel.
3. **Production de paquets** : Après les phases de construction et de test, il prépare les paquets logiciels, les rendant prêts pour le déploiement.

AWS CodeBuild s'intègre parfaitement avec d'autres services AWS, améliorant l'efficacité et la fiabilité du pipeline CI/CD (Intégration Continue/Déploiement Continu).

### **Identifiants Github/Gitlab/Bitbucket**

#### **Identifiants source par défaut**

C'est l'option héritée où il est possible de configurer certains **accès** (comme un token Github ou une application) qui seront **partagés entre les projets codebuild** afin que tous les projets puissent utiliser cet ensemble d'identifiants configurés.

Les identifiants stockés (tokens, mots de passe...) sont **gérés par codebuild** et il n'existe aucun moyen public de les récupérer via les API AWS.

#### Identifiant source personnalisé

Selon la plateforme de dépôt (Github, Gitlab et Bitbucket), différentes options sont fournies. Mais en général, toute option nécessitant de **stocker un token ou un mot de passe le stockera comme un secret dans le gestionnaire de secrets**.

Cela permet à **différents projets codebuild d'utiliser différents accès configurés** aux fournisseurs au lieu de simplement utiliser celui par défaut configuré.

### Enumeration
```bash
# List external repo creds (such as github tokens)
## It doesn't return the token but just the ARN where it's located
aws codebuild list-source-credentials

# Projects
aws codebuild list-shared-projects
aws codebuild list-projects
aws codebuild batch-get-projects --names <project_name> # Check for creds in env vars

# Builds
aws codebuild list-builds
aws codebuild list-builds-for-project --project-name <p_name>
aws codebuild list-build-batches
aws codebuild list-build-batches-for-project --project-name <p_name>

# Reports
aws codebuild list-reports
aws codebuild describe-test-cases --report-arn <ARN>
```
### Privesc

Dans la page suivante, vous pouvez vérifier comment **abuser des permissions de codebuild pour escalader les privilèges** :

{{#ref}}
../aws-privilege-escalation/aws-codebuild-privesc.md
{{#endref}}

### Post Exploitation

{{#ref}}
../aws-post-exploitation/aws-codebuild-post-exploitation/
{{#endref}}

### Unauthenticated Access

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

## References

- [https://docs.aws.amazon.com/managedservices/latest/userguide/code-build.html](https://docs.aws.amazon.com/managedservices/latest/userguide/code-build.html)

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