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

## CodeBuild

AWS **CodeBuild** word erken as 'n **volledig bestuurde deurlopende integrasie-diens**. Die hoofdoel van hierdie diens is om die reeks van bronkode saamstel, toetse uitvoer en die sagteware vir implementering te verpak te outomatiseer. Die voornaamste voordeel wat CodeBuild bied, is dat dit die behoefte van gebruikers om hul build-bedieners te voorsien, te bestuur en op te skaal verminder. Hierdie gerief bestaan omdat die diens self hierdie take bestuur. Essensiële kenmerke van AWS CodeBuild sluit in:

1. **Bestuurde diens**: CodeBuild bestuur en skaal die build-bedieners, sodat gebruikers vrygestel word van bedieneronderhoud.
2. **Deurlopende integrasie**: Dit integreer met die ontwikkel- en implementeringswerkvloei, en outomatiseer die bou- en toetsfases van die sagtewarevrystellingsproses.
3. **Pakketproduksie**: Na die bou- en toetsfases berei dit die sagtewarepakkette voor, sodat dit gereed is vir implementering.

AWS CodeBuild integreer naatloos met ander AWS-dienste, wat die doeltreffendheid en betroubaarheid van die CI/CD (Deurlopende Integrasie/Deurlopende Ontplooiing)-pyplyn verbeter.

### **Github/Gitlab/Bitbucket Toegangsbewyse**

#### **Standaard bron-toegangsbewyse**

Dit is die ou opsie waar dit moontlik is om 'n bepaalde **toegang** (soos 'n Github-token of -app) te konfigureer wat oor **codebuild projects** gedeel sal word, sodat al die projekte hierdie gekonfigureerde stel toegangsbewyse kan gebruik.

Die gestoorde toegangsbewyse (tokens, wagwoorde...) word **deur codebuild bestuur** en daar is geen openbare manier om dit vanaf AWS APIs op te haal nie.

#### Aangepaste bron-toegangsbewyse

Afhangend van die repository platform (Github, Gitlab en Bitbucket) word verskillende opsies voorsien. Maar oor die algemeen sal enige opsie wat vereis dat 'n **token of wagwoord gestoor word, dit as 'n geheim in die secrets manager stoor**.

Dit laat **verskillende codebuild projects toe om verskillende gekonfigureerde toegang** tot die verskaffers te gebruik in plaas van net die gekonfigureerde standaardtoegang.

### Enumerasie
```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>
```
> [!TIP]
> As jy `codebuild:StartBuild` het, onthou dat jy dikwels omgewingsveranderlikes tydens die build kan oorskryf (`--environment-variables-override`). Dit is genoeg vir sekere aanvalle selfs sonder `UpdateProject` of `buildspec` overrides (byvoorbeeld: om artifact/upload buckets te herlei om geheime te eksfiltreer, of om taal/runtime omgewingsveranderlikes te misbruik om opdragte uit te voer).

### Privesc

Op die volgende bladsy kan jy kyk hoe om **codebuild-permissies te misbruik om bevoegdhede te verhoog**:

{{#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}}

## Verwysings

- [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}}
