# AWS - Codepipeline Privesc

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

## codepipeline

Per ulteriori informazioni su codepipeline consulta:

{{#ref}}
../../aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md
{{#endref}}

### `iam:PassRole`, `codepipeline:CreatePipeline`, `codebuild:CreateProject, codepipeline:StartPipelineExecution`

Quando crei una code pipeline puoi indicare un **codepipeline IAM Role da utilizzare**, quindi potresti comprometterlo.

Oltre alle autorizzazioni precedenti avresti bisogno di **accesso al luogo dove il codice è memorizzato** (S3, ECR, github, bitbucket...)

Ho testato questo eseguendo il processo nella pagina web; le autorizzazioni indicate precedentemente sono quelle non di tipo List/Get necessarie per creare una codepipeline, ma per crearla via web avrai anche bisogno di: `codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:<several>`

Durante la **creazione del build project** puoi indicare un **comando da eseguire** (rev shell?) e far eseguire la fase di build come **privileged user**; questa è la configurazione che l'attaccante cerca per compromettere:

![](<../../../images/image (276).png>)

![](<../../../images/image (181).png>)

### ?`codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution`

Potrebbe essere possibile modificare il ruolo usato e il comando eseguito su una codepipeline con le autorizzazioni precedenti.

### `codepipeline:pollforjobs`

[AWS mentions](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PollForJobs.html):

> Quando questa API viene chiamata, CodePipeline **restituisce credenziali temporanee per il bucket S3** usato per memorizzare gli artifact per la pipeline, se l'azione richiede accesso a quel bucket S3 per artifact di input o output. Questa API **restituisce anche eventuali valori segreti definiti per l'azione**.

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