AWS - Codepipeline Privesc
codepipeline
Für weitere Informationen zu Codepipeline siehe:
pageAWS - DataPipeline, CodePipeline & CodeCommit Enumiam:PassRole
, codepipeline:CreatePipeline
, codebuild:CreateProject, codepipeline:StartPipelineExecution
iam:PassRole
, codepipeline:CreatePipeline
, codebuild:CreateProject, codepipeline:StartPipelineExecution
Beim Erstellen einer Codepipeline können Sie eine Codepipeline-IAM-Rolle zum Ausführen angeben, daher könnten Sie diese kompromittieren.
Neben den zuvor genannten Berechtigungen benötigen Sie Zugriff auf den Speicherort des Codes (S3, ECR, GitHub, Bitbucket...)
Ich habe dies durch den Prozess auf der Webseite getestet, die zuvor angegebenen Berechtigungen sind nicht die zum Erstellen einer Codepipeline erforderlichen List/Get-Berechtigungen, aber um sie auf der Webseite zu erstellen, benötigen Sie 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 können Sie einen auszuführenden Befehl (Rev-Shell?) angeben und die Build-Phase als privilegierter Benutzer ausführen, das ist die Konfiguration, die der Angreifer benötigt:
?codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution
codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution
Es könnte möglich sein, die verwendete Rolle und den ausgeführten Befehl auf einer Codepipeline mit den zuvor genannten Berechtigungen zu ändern.
codepipeline:pollforjobs
codepipeline:pollforjobs
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, wenn die Aktion Zugriff auf diesen S3-Bucket für Eingabe- oder Ausgabeartefakte erfordert. Diese API gibt auch alle für die Aktion definierten geheimen Werte zurück.
Last updated