AWS - Codepipeline Privesc
Last updated
Last updated
Za više informacija o codepipeline-u pogledajte:
AWS - DataPipeline, CodePipeline & CodeCommit Enumiam:PassRole
, codepipeline:CreatePipeline
, codebuild:CreateProject, codepipeline:StartPipelineExecution
Prilikom kreiranja code pipeline-a možete odrediti codepipeline IAM ulogu za pokretanje, stoga možete kompromitovati njih.
Osim prethodnih dozvola, potrebno je da imate pristup mestu gde je kod smešten (S3, ECR, github, bitbucket...)
Testirao sam ovo radeći proces na web stranici, dozvole koje su prethodno navedene nisu one potrebne za kreiranje codepipeline-a, ali za kreiranje u web okruženju takođe će vam biti potrebne: codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:<several>
Tokom kreiranja projekta za izgradnju možete odrediti komandu za pokretanje (rev shell?) i pokrenuti fazu izgradnje kao privilegovan korisnik, to je konfiguracija koja je potrebna napadaču:
codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution
Moguće je da se može izmeniti uloga korišćena i komanda izvršena na codepipeline-u sa prethodnim dozvolama.
codepipeline:pollforjobs
Kada se pozove ova API, CodePipeline vraća privremene akreditive za S3 bucket koji se koristi za čuvanje artefakata za pipeline, ako akcija zahteva pristup tom S3 bucket-u za ulazne ili izlazne artefakte. Ovaj API takođe vraća bilo koje tajne vrednosti definisane za akciju.