AWS - Codepipeline Privesc

Support HackTricks

codepipeline

Für weitere Informationen über codepipeline siehe:

AWS - DataPipeline, CodePipeline & CodeCommit Enum

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

Beim Erstellen einer Code-Pipeline kannst du eine Codepipeline IAM-Rolle angeben, die ausgeführt werden soll, daher könntest du sie kompromittieren.

Neben den vorherigen Berechtigungen benötigst du Zugriff auf den Ort, an dem der Code gespeichert ist (S3, ECR, GitHub, Bitbucket...)

Ich habe dies getestet, indem ich den Prozess auf der Webseite durchgeführt habe. Die zuvor angegebenen Berechtigungen sind die nicht List/Get-Berechtigungen, die benötigt werden, um eine Codepipeline zu erstellen, aber um sie im Web zu erstellen, benötigst du auch: codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:<mehrere>

Während der Erstellung des Build-Projekts kannst du einen Befehl angeben, der ausgeführt werden soll (rev shell?) und die Build-Phase als privilegierter Benutzer ausführen, das ist die Konfiguration, die der Angreifer benötigt, um zu kompromittieren:

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

Es könnte möglich sein, die verwendete Rolle und den auf einer Codepipeline ausgeführten Befehl mit den vorherigen Berechtigungen zu ändern.

codepipeline:pollforjobs

AWS erwähnt:

Wenn diese API aufgerufen wird, gibt CodePipeline temporäre Anmeldeinformationen für den S3-Bucket zurück, der verwendet wird, um Artefakte für die Pipeline zu speichern, wenn die Aktion Zugriff auf diesen S3-Bucket für Eingabe- oder Ausgabeartefakte benötigt. Diese API gibt auch alle geheimen Werte zurück, die für die Aktion definiert sind.

Support HackTricks

Last updated