AWS - Codepipeline Privesc

Soutenez HackTricks

codepipeline

Pour plus d'informations sur codepipeline, consultez :

AWS - DataPipeline, CodePipeline & CodeCommit Enum

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

Lors de la création d'un code pipeline, vous pouvez indiquer un codepipeline IAM Role à exécuter, vous pourriez donc les compromettre.

En plus des permissions précédentes, vous auriez besoin d'accès à l'endroit où le code est stocké (S3, ECR, github, bitbucket...)

J'ai testé cela en faisant le processus sur la page web, les permissions indiquées précédemment ne sont pas celles de List/Get nécessaires pour créer un codepipeline, mais pour le créer sur le web, vous aurez également besoin de : codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:<several>

Lors de la création du projet de build, vous pouvez indiquer une commande à exécuter (rev shell ?) et exécuter la phase de build en tant qu'utilisateur privilégié, c'est la configuration dont l'attaquant a besoin pour compromettre :

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

Il pourrait être possible de modifier le rôle utilisé et la commande exécutée sur un codepipeline avec les permissions précédentes.

codepipeline:pollforjobs

AWS mentionne :

Lorsque cette API est appelée, CodePipeline renvoie des identifiants temporaires pour le bucket S3 utilisé pour stocker les artefacts du pipeline, si l'action nécessite un accès à ce bucket S3 pour les artefacts d'entrée ou de sortie. Cette API renvoie également toutes les valeurs secrètes définies pour l'action.

Soutenez HackTricks

Last updated