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>
在 创建构建项目 期间,你可以指定一个 要运行的命令(反向 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