# AWS - Codepipeline Privesc

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

## codepipeline

Za više informacija o codepipeline pogledajte:

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

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

Kada kreirate code pipeline, možete naznačiti **codepipeline IAM ulogu za izvršavanje**, stoga ih možete kompromitovati.

Pored prethodnih dozvola, potrebna vam je **pristup mestu gde je kod smešten** (S3, ECR, github, bitbucket...)

Testirao sam ovo radeći proces na veb stranici, prethodno navedene dozvole nisu List/Get one potrebne za kreiranje codepipeline, ali za kreiranje na vebu će vam takođe biti potrebne: `codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:<several>`

Tokom **kreiranja build projekta** možete naznačiti **komandu za izvršavanje** (rev shell?) i da se faza izgradnje izvršava kao **privilegovani korisnik**, to je konfiguracija koju napadač treba da kompromituje:

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

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

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

Možda bi bilo moguće izmeniti ulogu koja se koristi i komandu koja se izvršava na codepipeline sa prethodnim dozvolama.

### `codepipeline:pollforjobs`

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

> Kada se ovaj API pozove, CodePipeline **vraća privremene akreditive za S3 bucket** koji se koristi za skladištenje artefakata za pipeline, ako akcija zahteva pristup tom S3 bucketu za ulazne ili izlazne artefakte. Ovaj API takođe **vraća sve tajne vrednosti definisane za akciju**.

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