AWS - Codepipeline Privesc

Support 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>

ビルドプロジェクトの作成中に実行するコマンド(rev shell?)を指定し、ビルドフェーズを特権ユーザーとして実行するように設定できます。これが攻撃者が侵害するために必要な設定です:

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

前述の権限でcodepipelineで使用されるロールと実行されるコマンドを変更することが可能かもしれません。

codepipeline:pollforjobs

AWSは言及しています:

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

Support HackTricks

Last updated