AWS - Codepipeline Privesc
codepipeline
有关 codepipeline 的更多信息,请查看:
iam: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>
在 创建构建项目 时,您可以指定一个 要运行的命令(反向 shell?)并以 特权用户 运行构建阶段,这就是攻击者需要妥协的配置:
?codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution
codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution
可能可以使用之前的权限修改所使用的角色和在代码管道上执行的命令。
codepipeline:pollforjobs
codepipeline:pollforjobs
当调用此 API 时,CodePipeline 返回用于存储管道工件的 S3 存储桶的临时凭证,如果该操作需要访问该 S3 存储桶以获取输入或输出工件。此 API 还 返回为该操作定义的任何秘密值。
Last updated