AWS - Codepipeline Privesc

Reading time: 3 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

codepipeline

Pour plus d'infos 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 to run, 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é ceci en effectuant le processus via la page web ; les permissions indiquées précédemment sont celles nécessaires pour créer un codepipeline (et pas uniquement les permissions List/Get), mais pour le créer via l'interface web vous aurez aussi 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 build project 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 mentions:

Lorsque cette API est appelée, CodePipeline returns temporary credentials for the S3 bucket utilisé pour stocker les artifacts pour le pipeline, si l'action nécessite l'accès à ce S3 bucket pour des artifacts d'entrée ou de sortie. Cette API returns any secret values defined for the action.

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks