AWS - Codepipeline Privesc

ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

codepipeline

codepipelineに関する詳細情報は次を参照してください:

pageAWS - DataPipeline, CodePipeline & CodeCommit Enum

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>も必要です。

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

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

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

codepipeline:pollforjobs

AWSは言及しています:

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

最終更新