AWS - Codebuild Enum

Tip

Impara & pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Impara & pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Impara & pratica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Sostieni HackTricks

CodeBuild

AWS CodeBuild è riconosciuto come un servizio fully managed di continuous integration. Lo scopo principale di questo servizio è automatizzare la sequenza di compilazione del codice sorgente, l’esecuzione dei test e il packaging del software per il deploy. Il vantaggio principale offerto da CodeBuild è la possibilità di eliminare la necessità per gli utenti di provisionare, gestire e scalare i server di build, poiché il servizio stesso si occupa di queste attività. Le funzionalità 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 workflow di sviluppo e deployment, 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 il deployment.

AWS CodeBuild si integra perfettamente con altri servizi AWS, migliorando l’efficienza e l’affidabilità della pipeline CI/CD (Continuous Integration/Continuous Deployment).

Credenziali Github/Gitlab/Bitbucket

Credenziali sorgente predefinite

Questa è l’opzione legacy dove è possibile configurare alcuni access (come un Github token o un’app) che saranno condivisi tra i progetti CodeBuild così tutti i progetti possono usare questo set di credenziali configurato.

Le credenziali memorizzate (token, password…) sono gestite da CodeBuild e non esiste un modo pubblico per recuperarle tramite le API AWS.

Credenziali sorgente personalizzate

A seconda della piattaforma del repository (Github, Gitlab e Bitbucket) vengono fornite opzioni diverse. Ma in generale, qualsiasi opzione che richieda di memorizzare un token o una password la salverà come secret in Secrets Manager.

Questo permette a diversi progetti CodeBuild di usare accessi configurati differenti ai provider invece di usare soltanto quello predefinito.

Enumerazione

# 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

Se hai codebuild:StartBuild, ricordati che spesso puoi sovrascrivere gli env vars al momento della build (--environment-variables-override). Questo è sufficiente per alcuni attacchi anche senza i permessi UpdateProject o override di buildspec (per esempio: reindirizzare artifact/upload buckets per esfiltrare segreti, o abusare degli env vars di language/runtime per eseguire comandi).

Privesc

Nella pagina seguente puoi vedere come abuse codebuild permissions to escalate privileges:

AWS - Codebuild Privesc

Post Exploitation

AWS - CodeBuild Post Exploitation

Accesso non autenticato

AWS - CodeBuild Unauthenticated Access

Riferimenti

Tip

Impara & pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Impara & pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Impara & pratica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Sostieni HackTricks