AWS - Elastic Beanstalk Privesc
Elastic Beanstalk
Mehr Informationen zu Elastic Beanstalk unter:
pageAWS - Elastic Beanstalk EnumUm sensible Aktionen in Beanstalk durchzuführen, benötigen Sie viele sensible Berechtigungen in vielen verschiedenen Diensten. Sie können beispielsweise die Berechtigungen überprüfen, die an arn:aws:iam::aws:policy/AdministratorAccess-AWSElasticBeanstalk
erteilt wurden.
elasticbeanstalk:RebuildEnvironment
, S3-Schreibberechtigungen & viele andere
elasticbeanstalk:RebuildEnvironment
, S3-Schreibberechtigungen & viele andereMit Schreibberechtigungen über den S3-Bucket, der den Code der Umgebung enthält, und Berechtigungen zum Neuaufbau der Anwendung (es ist elasticbeanstalk:RebuildEnvironment
erforderlich und einige weitere in Bezug auf S3
, EC2
und Cloudformation
), können Sie den Code ändern, die App neu erstellen und beim nächsten Zugriff auf die App wird Ihr neuer Code ausgeführt, was es dem Angreifer ermöglicht, die Anwendung und die IAM-Rollenanmeldeinformationen zu kompromittieren.
elasticbeanstalk:CreateApplication
, elasticbeanstalk:CreateEnvironment
, elasticbeanstalk:CreateApplicationVersion
, elasticbeanstalk:UpdateEnvironment
, iam:PassRole
, und mehr...
elasticbeanstalk:CreateApplication
, elasticbeanstalk:CreateEnvironment
, elasticbeanstalk:CreateApplicationVersion
, elasticbeanstalk:UpdateEnvironment
, iam:PassRole
, und mehr...Die genannten sowie mehrere S3
, EC2
, cloudformation
, autoscaling
und elasticloadbalancing
Berechtigungen sind erforderlich, um ein Raw Elastic Beanstalk-Szenario von Grund auf zu erstellen.
Erstellen einer AWS Elastic Beanstalk-Anwendung:
Erstellen Sie eine AWS Elastic Beanstalk-Umgebung (unterstützte Plattformen):
Wenn eine Umgebung bereits erstellt wurde und Sie keine neue erstellen möchten, könnten Sie einfach die bestehende aktualisieren.
Verpacken Sie Ihren Anwendungscode und Abhängigkeiten in eine ZIP-Datei:
Lade die ZIP-Datei in einen S3-Bucket hoch:
Erstellen Sie eine AWS Elastic Beanstalk-Anwendungsversion:
Bereitigen Sie die Anwendungsversion in Ihrer AWS Elastic Beanstalk-Umgebung vor:
elasticbeanstalk:CreateApplicationVersion
, elasticbeanstalk:UpdateEnvironment
, cloudformation:GetTemplate
, cloudformation:DescribeStackResources
, cloudformation:DescribeStackResource
, autoscaling:DescribeAutoScalingGroups
, autoscaling:SuspendProcesses
, autoscaling:SuspendProcesses
elasticbeanstalk:CreateApplicationVersion
, elasticbeanstalk:UpdateEnvironment
, cloudformation:GetTemplate
, cloudformation:DescribeStackResources
, cloudformation:DescribeStackResource
, autoscaling:DescribeAutoScalingGroups
, autoscaling:SuspendProcesses
, autoscaling:SuspendProcesses
Zunächst müssen Sie eine legitime Beanstalk-Umgebung mit dem Code erstellen, den Sie im Opfer ausführen möchten, indem Sie den vorherigen Schritten folgen. Möglicherweise ein einfaches Zip mit diesen 2 Dateien:
Berechtigungen
Überprüfen Sie, ob der Benutzer über die Berechtigung
iam:PassRole
für die Rolleaws-elasticbeanstalk-ec2-role
verfügt.Wenn der Benutzer nicht über die Berechtigung verfügt, um die Rolle zu übernehmen, kann ein Angriff durchgeführt werden, um die Berechtigung zu erhalten.
Überprüfen Sie, ob der Benutzer über die Berechtigung
iam:CreateServiceLinkedRole
für den Dienstelasticbeanstalk.amazonaws.com
verfügt.Wenn der Benutzer nicht über die Berechtigung verfügt, um die Service-Linked-Rolle zu erstellen, kann ein Angriff durchgeführt werden, um die Berechtigung zu erhalten.
Angriffsszenario
Erstellen Sie eine neue Rolle mit den erforderlichen Berechtigungen.
Weisen Sie der neuen Rolle die Richtlinie
AdministratorAccess
zu.Übernehmen Sie die Rolle
aws-elasticbeanstalk-ec2-role
mithilfe der erstellten Rolle.Überprüfen Sie, ob die Berechtigung erfolgreich eskaliert wurde, indem Sie auf AWS-Ressourcen zugreifen, die nur von der
aws-elasticbeanstalk-ec2-role
-Rolle zugänglich sind.
Empfohlene Maßnahmen
Überprüfen Sie regelmäßig die Berechtigungen der Benutzer und Rollen in AWS.
Vermeiden Sie die Vergabe von zu weitreichenden Berechtigungen, insbesondere
AdministratorAccess
.Implementieren Sie das Prinzip der minimalen Berechtigungen, um das Risiko von Berechtigungserweiterungen zu verringern.
Sobald Sie Ihre eigene Beanstalk-Umgebung mit Ihrer Reverse-Shell haben, ist es Zeit, sie in die Umgebung des Opfers zu migrieren. Dazu müssen Sie die Bucket-Richtlinie aktualisieren Ihres Beanstalk S3-Buckets, damit das Opfer darauf zugreifen kann (Beachten Sie, dass dies den Bucket für ALLE öffnet):
Last updated