AWS - Codepipeline Privesc

Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Red Team de HackTricks en AWS)!

Otras formas de apoyar a HackTricks:

codepipeline

Para obtener más información sobre codepipeline, consulta:

pageAWS - DataPipeline, CodePipeline & CodeCommit Enum

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

Al crear un pipeline de código, puedes indicar un Rol IAM de codepipeline 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 realizando 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 compilación puedes indicar un comando a ejecutar (¿shell inversa?) y ejecutar la fase de compilación como usuario privilegiado, esa es la configuración que el atacante necesita para comprometer:

?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

AWS menciona:

Cuando se llama a esta API, CodePipeline devuelve credenciales temporales para el bucket de S3 utilizado para almacenar artefactos para el pipeline, si la acción requiere acceso a ese bucket de S3 para artefactos de entrada o salida. Esta API también devuelve cualquier valor secreto definido para la acción.

Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Red Team de HackTricks en AWS)!

Otras formas de apoyar a HackTricks:

Última actualización