AWS - Codepipeline Privesc

Reading time: 4 minutes

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

コードパイプラインを作成する際に、実行するための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>

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

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

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

codepipeline:pollforjobs

AWSは次のように述べています:

この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をサポートする