AWS - Codepipeline Privesc

Tip

学习并练习 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

codepipeline

有关 codepipeline 的更多信息,请参阅:

AWS - DataPipeline, CodePipeline & CodeCommit Enum

iam:PassRole, codepipeline:CreatePipeline, codebuild:CreateProject, codepipeline:StartPipelineExecution

创建 codepipeline 时,可以指定一个用于运行的 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>

创建 build project 期间,你可以指定一个要执行的 command(rev shell?),并将 build 阶段设置为以 特权用户 运行;这就是攻击者用来妥协的配置:

?codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution

使用上述权限,可能可以修改 codepipeline 所使用的角色和执行的命令。

codepipeline:pollforjobs

AWS 提到:

当调用此 API 时,如果该 action 需要访问用于存储管道工件的 S3 bucket 以获取输入或输出工件,CodePipeline 会返回该 S3 bucket 的临时凭证。该 API 还会 返回为该 action 定义的任何 secret 值

Tip

学习并练习 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks