AWS - Codepipeline Privesc
codepipeline
codepipeline에 대한 자세한 정보는 다음을 확인하세요:
pageAWS - DataPipeline, CodePipeline & CodeCommit Enumiam:PassRole
, codepipeline:CreatePipeline
, codebuild:CreateProject, codepipeline:StartPipelineExecution
iam:PassRole
, codepipeline:CreatePipeline
, codebuild:CreateProject, codepipeline:StartPipelineExecution
코드 파이프라인을 생성할 때 실행할 codepipeline IAM 역할을 지정할 수 있으므로 해당 역할을 침해할 수 있습니다.
이전 권한 외에도 코드가 저장된 위치에 액세스해야 합니다(S3, ECR, github, bitbucket...)
웹 페이지에서 프로세스를 수행하여 테스트했으며, 이전에 언급된 권한은 코드 파이프라인을 생성하는 데 필요한 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:pollforjobs
codepipeline:pollforjobs
AWS는 다음을 언급합니다:
이 API를 호출하면 CodePipeline이 파이프라인의 아티팩트를 저장하는 S3 버킷에 대한 임시 자격 증명을 반환합니다. 이는 작업이 해당 S3 버킷에 대한 입력 또는 출력 아티팩트에 액세스를 필요로 하는 경우입니다. 이 API는 또한 작업에 정의된 비밀 값도 반환합니다.
最終更新