AWS - Codepipeline Privesc
Last updated
Last updated
Codepipeline hakkında daha fazla bilgi için:
AWS - DataPipeline, CodePipeline & CodeCommit Enumiam:PassRole
, codepipeline:CreatePipeline
, codebuild:CreateProject, codepipeline:StartPipelineExecution
Bir code pipeline oluştururken çalıştırılacak bir codepipeline IAM Rolü belirtebilirsiniz, bu nedenle onları tehlikeye atabilirsiniz.
Önceki izinlere ek olarak, kodun depolandığı yere erişiminiz olması gerekecektir (S3, ECR, github, bitbucket...).
Bunu web sayfasında yaparak test ettim, önceki belirtilen izinler bir codepipeline oluşturmak için gereken List/Get izinleri değildir, ancak web üzerinde oluşturmak için ayrıca şunlara ihtiyacınız olacaktır: codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:<several>
Build projesi oluşturulurken çalıştırılacak bir komut belirtebilirsiniz (ters kabuk?) ve build aşamasını yetkili kullanıcı olarak çalıştırmak için yapılandırma saldırganın tehlikeye atması gereken konfigürasyondur:
codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution
Önceki izinlerle bir codepipeline'da kullanılan rolü ve yürütülen komutu değiştirmek mümkün olabilir.
codepipeline:pollforjobs
Bu API çağrıldığında, CodePipeline, eylemin giriş veya çıkış sanatçıları için o S3 kovasına erişim gerektiriyorsa, bu API, bu S3 kovası için geçici kimlik bilgilerini döndürür. Bu API ayrıca, eylem için tanımlanan herhangi bir gizli değeri de döndürür.