# AWS - CodeBuild Post Exploitation

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

## CodeBuild

Per ulteriori informazioni, consulta:

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

### Check Secrets

Se in CodeBuild sono state impostate credenziali per connettersi a Github, Gitlab o Bitbucket sotto forma di personal tokens, password o OAuth token, queste **credentials saranno memorizzate come secrets nel secret manager**.\
Pertanto, se hai accesso in lettura al secret manager potrai ottenere questi secrets e pivotare verso la piattaforma connessa.

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

### Abuse CodeBuild Repo Access

Per configurare **CodeBuild** è necessario avere **accesso al repository del codice** che verrà utilizzato. Diversi provider possono ospitare questo codice:

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

Il **progetto CodeBuild deve avere accesso** al source provider configurato, sia tramite **IAM role** sia con un github/bitbucket **token o accesso OAuth**.

Un attacker con **permessi elevati su un progetto CodeBuild** potrebbe abusare di questo accesso configurato per leak il codice del repo configurato e di altri a cui le credenziali impostate hanno accesso.\
Per farlo, un attacker dovrebbe semplicemente **cambiare l'URL del repository verso ogni repo a cui le credenziali di configurazione hanno accesso** (nota che la console AWS elencherà tutti per te):

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

E **modificare i comandi Buildspec per exfiltrate ogni repo**.

> [!WARNING]
> Tuttavia, questo **compito è ripetitivo e noioso** e se è stato configurato un github token con **write permissions**, un attacker **non sarà in grado di (ab)use di tali permessi** poiché non ha accesso al token.\
> O forse ce l'ha? Controlla la sezione successiva

### Leaking Access Tokens from AWS CodeBuild

Puoi leak gli accessi concessi in CodeBuild verso piattaforme come Github. Verifica se è stato dato accesso a piattaforme esterne con:
```bash
aws codebuild list-source-credentials
```
{{#ref}}
aws-codebuild-token-leakage.md
{{#endref}}

### Untrusted PR execution via webhook filter misconfiguration

Se i filtri dei webhook sono deboli, attaccanti esterni possono far buildare le loro PRs in progetti CodeBuild privilegiati e poi eseguire codice arbitrario nella CI.

{{#ref}}
aws-codebuild-untrusted-pr-webhook-bypass.md
{{#endref}}

### `codebuild:DeleteProject`

Un attaccante potrebbe eliminare un intero progetto CodeBuild, causando la perdita della configurazione del progetto e impattando le applicazioni che dipendono dal progetto.
```bash
aws codebuild delete-project --name <value>
```
**Impatto potenziale**: Perdita della configurazione del progetto e interruzione del servizio per le applicazioni che utilizzano il progetto eliminato.

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

Un attacker potrebbe aggiungere, modificare o rimuovere tag dalle risorse CodeBuild, compromettendo l'allocazione dei costi della tua organizzazione, il tracciamento delle risorse e le politiche di controllo degli accessi basate sui tag.
```bash
aws codebuild tag-resource --resource-arn <value> --tags <value>
aws codebuild untag-resource --resource-arn <value> --tag-keys <value>
```
**Impatto potenziale**: Interruzione dell'allocazione dei costi, del tracciamento delle risorse e delle policy di controllo accessi basate sui tag.

### `codebuild:DeleteSourceCredentials`

Un attaccante potrebbe eliminare le credenziali di origine per un repository Git, compromettendo il normale funzionamento delle applicazioni che dipendono dal repository.
```sql
aws codebuild delete-source-credentials --arn <value>
```
**Potential Impact**: Interruzione del normale funzionamento delle applicazioni che dipendono dal repository interessato a causa della rimozione delle credenziali di origine.

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