# AWS - Codebuild Enum

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

## CodeBuild

AWS **CodeBuild** è riconosciuto come un **servizio di integrazione continua completamente gestito**. Lo scopo principale di questo servizio è automatizzare la sequenza di compilazione del codice sorgente, esecuzione dei test e imballaggio del software per scopi di distribuzione. Il principale vantaggio offerto da CodeBuild risiede nella sua capacità di alleviare gli utenti dalla necessità di fornire, gestire e scalare i propri server di build. Questa comodità è dovuta al fatto che il servizio stesso gestisce questi compiti. Le caratteristiche essenziali di AWS CodeBuild comprendono:

1. **Servizio Gestito**: CodeBuild gestisce e scala i server di build, liberando gli utenti dalla manutenzione dei server.
2. **Integrazione Continua**: Si integra con il flusso di lavoro di sviluppo e distribuzione, automatizzando le fasi di build e test del processo di rilascio del software.
3. **Produzione di Pacchetti**: Dopo le fasi di build e test, prepara i pacchetti software, rendendoli pronti per la distribuzione.

AWS CodeBuild si integra perfettamente con altri servizi AWS, migliorando l'efficienza e l'affidabilità della pipeline CI/CD (Integrazione Continua/Distribuzione Continua).

### **Credenziali Github/Gitlab/Bitbucket**

#### **Credenziali di origine predefinite**

Questa è l'opzione legacy in cui è possibile configurare alcuni **accessi** (come un token o un'app Github) che saranno **condivisi tra i progetti codebuild** in modo che tutti i progetti possano utilizzare questo set di credenziali configurato.

Le credenziali memorizzate (token, password...) sono **gestite da codebuild** e non esiste alcun modo pubblico per recuperarle dalle API AWS.

#### Credenziali di origine personalizzate

A seconda della piattaforma del repository (Github, Gitlab e Bitbucket) vengono fornite diverse opzioni. Ma in generale, qualsiasi opzione che richiede di **memorizzare un token o una password lo memorizzerà come un segreto nel gestore di segreti**.

Questo consente a **diversi progetti codebuild di utilizzare diversi accessi configurati** ai fornitori invece di utilizzare solo quello predefinito configurato.

### Enumerazione
```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

Nella pagina seguente, puoi controllare come **abuse codebuild permissions to escalate privileges**:

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

### Post Exploitation

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

### Unauthenticated Access

{{#ref}}
../aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access/README.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}}
