AWS - Codepipeline Privesc
codepipeline
Aby uzyskać więcej informacji na temat codepipeline, sprawdź:
pageAWS - DataPipeline, CodePipeline & CodeCommit Enumiam:PassRole
, codepipeline:CreatePipeline
, codebuild:CreateProject, codepipeline:StartPipelineExecution
iam:PassRole
, codepipeline:CreatePipeline
, codebuild:CreateProject, codepipeline:StartPipelineExecution
Podczas tworzenia potoku kodu można wskazać rolę IAM codepipeline do uruchomienia, co może prowadzić do ich skompromitowania.
Oprócz wcześniejszych uprawnień będziesz potrzebować dostępu do miejsca, w którym przechowywany jest kod (S3, ECR, github, bitbucket...)
Przetestowałem to wykonując proces na stronie internetowej, uprawnienia wskazane wcześniej nie są wymagane do utworzenia codepipeline, ale do utworzenia go w sieci będziesz również potrzebować: codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:<several>
Podczas tworzenia projektu budowy można wskazać polecenie do wykonania (rev shell?) i uruchomić fazę budowy jako uprzywilejowany użytkownik, taka konfiguracja jest potrzebna dla atakującego:
?codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution
codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution
Możliwe jest modyfikowanie roli używanej i polecenia wykonywanego na codepipeline przy użyciu wcześniejszych uprawnień.
codepipeline:pollforjobs
codepipeline:pollforjobs
Gdy ta usługa API jest wywoływana, CodePipeline zwraca tymczasowe poświadczenia dla kubełka S3, używanego do przechowywania artefaktów dla potoku, jeśli działanie wymaga dostępu do tego kubełka S3 dla artefaktów wejściowych lub wyjściowych. To API również zwraca wartości tajne zdefiniowane dla działania.
Last updated