AWS - Codepipeline Privesc

Unterstütze 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 diese 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 nicht die List/Get-Berechtigungen, die zum Erstellen einer Codepipeline benötigt werden, aber um sie auf der Webseite zu erstellen, benötigst du auch: 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 kannst du einen Befehl zum Ausführen angeben (rev shell?) und die Build-Phase als privilegierter Benutzer ausführen lassen. Das ist die Konfiguration, die der Angreifer benötigt, um sie zu kompromittieren:

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

Es könnte möglich sein, die verwendete Rolle und den ausgeführten Befehl in einer Codepipeline 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 zum Speichern von Artefakten für die Pipeline verwendet wird, falls die Aktion Zugriff auf diesen S3-Bucket für Eingabe- oder Ausgabe-Artefakte erfordert. Diese API gibt auch alle für die Aktion definierten geheimen Werte zurück.

Unterstütze HackTricks

Last updated