AWS - Codepipeline Privesc

Wsparcie dla HackTricks

codepipeline

Aby uzyskać więcej informacji o codepipeline, sprawdź:

AWS - DataPipeline, CodePipeline & CodeCommit Enum

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

Podczas tworzenia pipeline'u kodu możesz wskazać rolę IAM codepipeline do uruchomienia, dlatego możesz je skompromitować.

Oprócz wcześniejszych uprawnień potrzebujesz dostępu do miejsca, w którym przechowywany jest kod (S3, ECR, github, bitbucket...)

Testowałem to, wykonując proces na stronie internetowej, uprawnienia wskazane wcześniej to nie List/Get, które są potrzebne do stworzenia pipeline'u kodu, ale do stworzenia 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żesz wskazać komendę do uruchomienia (rev shell?) i uruchomić fazę budowy jako użytkownik z uprawnieniami, to jest konfiguracja, której potrzebuje atakujący, aby skompromitować:

?codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution

Może być możliwe modyfikowanie roli używanej i komendy wykonywanej w codepipeline z wcześniejszymi uprawnieniami.

codepipeline:pollforjobs

AWS wspomina:

Gdy to API jest wywoływane, CodePipeline zwraca tymczasowe poświadczenia dla koszyka S3 używanego do przechowywania artefaktów dla pipeline'u, jeśli akcja wymaga dostępu do tego koszyka S3 dla artefaktów wejściowych lub wyjściowych. To API również zwraca wszelkie wartości sekretne zdefiniowane dla akcji.

Wsparcie dla HackTricks

Last updated