# AWS - Codebuild Enum

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

## CodeBuild

AWS **CodeBuild** se prepoznaje kao **potpuno upravljana usluga kontinuirane integracije**. Primarna svrha ove usluge je automatizacija sekvence kompajliranja izvornog koda, izvršavanja testova i pakovanja softvera za svrhe implementacije. Glavna prednost koju nudi CodeBuild leži u njegovoj sposobnosti da olakša korisnicima potrebu za obezbeđivanjem, upravljanjem i skaliranjem svojih build servera. Ova pogodnost dolazi zato što sama usluga upravlja tim zadacima. Osnovne karakteristike AWS CodeBuild obuhvataju:

1. **Upravljana usluga**: CodeBuild upravlja i skalira build servere, oslobađajući korisnike od održavanja servera.
2. **Kontinuirana integracija**: Integrira se sa razvojnim i implementacionim radnim tokom, automatizujući faze build-a i testiranja procesa objavljivanja softvera.
3. **Proizvodnja paketa**: Nakon faza build-a i testiranja, priprema softverske pakete, čineći ih spremnim za implementaciju.

AWS CodeBuild se besprekorno integriše sa drugim AWS uslugama, poboljšavajući efikasnost i pouzdanost CI/CD (Kontinuirana integracija/Kontinuirana implementacija) lanca.

### **Github/Gitlab/Bitbucket akreditivi**

#### **Podrazumevani izvorni akreditivi**

Ovo je opcija iz prošlosti gde je moguće konfigurisati neke **pristupe** (kao što je Github token ili aplikacija) koji će biti **deljeni među codebuild projektima** tako da svi projekti mogu koristiti ovaj konfigurisani set akreditiva.

Skladišteni akreditivi (tokeni, lozinke...) su **upravlja od strane codebuild** i ne postoji javni način da se do njih dođe putem AWS API-ja.

#### Prilagođeni izvorni akreditiv

U zavisnosti od platforme repozitorijuma (Github, Gitlab i Bitbucket) pružaju se različite opcije. Ali generalno, svaka opcija koja zahteva **smeštanje tokena ili lozinke će ih sačuvati kao tajnu u menadžeru tajni**.

To omogućava **različitim codebuild projektima da koriste različite konfigurisane pristupe** provajderima umesto da koriste samo konfigurisani podrazumevani. 

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

Na sledećoj stranici možete proveriti kako da **zloupotrebite codebuild dozvole za eskalaciju privilegija**:

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