AWS - Codepipeline Privesc
codepipeline
codepipeline에 대한 자세한 정보는 다음을 참조하십시오:
AWS - DataPipeline, CodePipeline & CodeCommit Enumiam:PassRole
, codepipeline:CreatePipeline
, codebuild:CreateProject, codepipeline:StartPipelineExecution
iam:PassRole
, codepipeline:CreatePipeline
, codebuild:CreateProject, codepipeline:StartPipelineExecution
code pipeline을 생성할 때 실행할 codepipeline IAM Role을 지정할 수 있으므로 이를 손상시킬 수 있습니다.
이전 권한 외에도 코드가 저장된 위치에 대한 액세스(S3, ECR, github, bitbucket...)가 필요합니다.
웹 페이지에서 이 과정을 수행하면서 테스트했으며, 이전에 언급한 권한은 codepipeline을 생성하는 데 필요한 List/Get 권한이 아니지만, 웹에서 생성하려면 다음 권한도 필요합니다: codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:<several>
빌드 프로젝트 생성 중에 실행할 명령(rev shell?)과 특권 사용자로 빌드 단계를 실행하도록 지정할 수 있으며, 이는 공격자가 손상시키기 위해 필요한 구성입니다:
?codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution
codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution
이전 권한으로 codepipeline에서 사용된 역할과 실행된 명령을 수정할 수 있을 가능성이 있습니다.
codepipeline:pollforjobs
codepipeline:pollforjobs
이 API가 호출되면 CodePipeline은 파이프라인의 아티팩트를 저장하는 데 사용되는 S3 버킷에 대한 임시 자격 증명을 반환합니다. 작업이 입력 또는 출력 아티팩트에 대해 해당 S3 버킷에 액세스해야 하는 경우 이 API는 작업에 대해 정의된 비밀 값도 반환합니다.
Last updated