AWS - Codepipeline Privesc
Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
codepipeline
Para más información sobre codepipeline revisa:
AWS - DataPipeline, CodePipeline & CodeCommit Enumiam:PassRole
, codepipeline:CreatePipeline
, codebuild:CreateProject, codepipeline:StartPipelineExecution
iam:PassRole
, codepipeline:CreatePipeline
, codebuild:CreateProject, codepipeline:StartPipelineExecution
Al crear un code pipeline puedes indicar un codepipeline IAM Role para ejecutar, por lo tanto, podrías comprometerlos.
Además de los permisos anteriores, necesitarías acceso al lugar donde se almacena el código (S3, ECR, github, bitbucket...)
Probé esto haciendo el proceso en la página web, los permisos indicados anteriormente no son los de List/Get necesarios para crear un codepipeline, pero para crearlo en la web también necesitarás: codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:<several>
Durante la creación del proyecto de construcción puedes indicar un comando para ejecutar (¿rev shell?) y ejecutar la fase de construcción como usuario privilegiado, esa es la configuración que el atacante necesita para comprometer:
![](https://cloud.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F1395576375-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhS1MeeqlxNyBIe5eNo6K%252Fuploads%252Fgit-blob-b9f6e462f1fe4ad368d78fe1dfd0fc5013fdb920%252Fimage%2520%28276%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=67f40056&sv=1)
![](https://cloud.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F1395576375-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhS1MeeqlxNyBIe5eNo6K%252Fuploads%252Fgit-blob-b1c5d6eb8391df23a754f48144afab0251daccdb%252Fimage%2520%28181%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=711dbdd6&sv=1)
?codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution
codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution
Podría ser posible modificar el rol utilizado y el comando ejecutado en un codepipeline con los permisos anteriores.
codepipeline:pollforjobs
codepipeline:pollforjobs
Cuando se llama a esta API, CodePipeline devuelve credenciales temporales para el bucket S3 utilizado para almacenar artefactos para el pipeline, si la acción requiere acceso a ese bucket S3 para artefactos de entrada o salida. Esta API también devuelve cualquier valor secreto definido para la acción.
Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated