AWS - Codepipeline Privesc

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

codepipeline

codepipeline の詳細は次を参照:

AWS - DataPipeline, CodePipeline & CodeCommit Enum

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>

build project の作成中に、実行するコマンド(rev shell?)を指定でき、ビルドフェーズを特権ユーザーで実行する設定にできる。これが攻撃者が奪取するために必要な構成である:

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

これらの権限を使って、codepipeline で使用されるロールや実行されるコマンドを変更できる可能性がある。

codepipeline:pollforjobs

AWS mentions:

この API が呼び出されると、CodePipeline は、アクションが入出力アーティファクトのためにその S3 バケットへのアクセスを必要とする場合、パイプラインのアーティファクトを格納するために使用される S3 バケットに対する 一時的な資格情報を返します。この API はまた、アクションに定義された 任意のシークレット値も返します

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする