AWS - Codepipeline Privesc

Reading time: 3 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

codepipeline

Für mehr Infos zu codepipeline siehe:

AWS - DataPipeline, CodePipeline & CodeCommit Enum

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

Beim Erstellen einer Code-Pipeline kann man eine codepipeline IAM Role to run angeben, daher könnte man diese kompromittieren.

Abgesehen von den zuvor genannten Berechtigungen benötigt man Zugriff auf den Ort, an dem der Code gespeichert ist (S3, ECR, github, bitbucket...)

Ich habe das getestet, indem ich den Prozess über die Webseite durchgeführt habe. Die zuvor genannten Berechtigungen sind die nicht-List/Get-Berechtigungen, die zum Erstellen einer codepipeline benötigt werden, aber um sie über das Web zu erstellen, benötigt man außerdem: codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:<several>

Während der Erstellung des Build-Projekts kann man einen auszuführenden Befehl angeben (rev shell?) und die Build-Phase als privilegierter Benutzer ausführen lassen; genau diese Konfiguration benötigt ein Angreifer, um zu kompromittieren:

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

Mit den vorherigen Berechtigungen könnte es möglich sein, die verwendete Rolle und den in einer codepipeline ausgeführten Befehl zu ändern.

codepipeline:pollforjobs

AWS erwähnt:

Wenn diese API aufgerufen wird, gibt CodePipeline temporäre Zugangsdaten für den S3-Bucket zurück, der zum Speichern der Artefakte für die Pipeline verwendet wird, falls die Aktion Zugriff auf diesen S3-Bucket für Eingabe- oder Ausgabe-Artefakte benötigt. Diese API gibt außerdem alle für die Aktion definierten geheimen Werte zurück.

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks