AWS - RDS Privesc
RDS - संबंधित डेटाबेस सेवा
RDS के बारे में अधिक जानकारी के लिए देखें:
pageAWS - Relational Database (RDS) Enumrds:ModifyDBInstance
rds:ModifyDBInstance
इस अनुमति के साथ एक हमलावर मास्टर उपयोगकर्ता का पासवर्ड संशोधित कर सकता है, और डेटाबेस के अंदर लॉगिन:
आपको डेटाबेस से संपर्क करने की आवश्यकता होगी (वे सामान्यत: केवल नेटवर्क के अंदर से ही पहुंचे जा सकते हैं)।
संभावित प्रभाव: डेटाबेस के अंदर संवेदनशील जानकारी खोजना।
rds-db:connect
दस्तावेज़ के अनुसार इस अनुमति वाले उपयोगकर्ता को डीबी इंस्टेंस से कनेक्ट करने की अनुमति हो सकती है।
RDS भूमिका IAM अनुमतियों का दुरुपयोग करें
Postgresql (Aurora)
यदि SELECT datname FROM pg_database;
चलाते समय आपको एक डेटाबेस मिलता है जिसका नाम rdsadmin
है, तो आप जान जाते हैं कि आप एक AWS postgresql डेटाबेस के अंदर हैं।
सबसे पहले आप यह जांच सकते हैं कि क्या इस डेटाबेस का उपयोग किसी अन्य AWS सेवा तक पहुंचने के लिए किया गया है। आप इसे स्थापित एक्सटेंशन्स देखकर जांच सकते हैं:
यदि आप कुछ ऐसा पाते हैं जैसे aws_s3
तो आप यह मान सकते हैं कि इस डेटाबेस के S3 पर किसी प्रकार का एक्सेस है (अन्य एक्सटेंशन जैसे aws_ml
और aws_lambda
भी हो सकते हैं)।
इसके अलावा, यदि आपको aws rds describe-db-clusters
चलाने की अनुमति है तो आप देख सकते हैं कि क्या क्लस्टर में कोई IAM Role जुड़ा हुआ है फ़ील्ड AssociatedRoles
में। यदि हां, तो आप यह मान सकते हैं कि डेटाबेस अन्य AWS सेवाओं तक पहुँचने के लिए तैयार की गई थी। रोल के नाम (या यदि आप रोल की अनुमतियों को प्राप्त कर सकते हैं) के आधार पर आप अनुमान लगा सकते हैं कि डेटाबेस के पास किस प्रकार का अतिरिक्त एक्सेस है।
अब, बकेट के अंदर एक फ़ाइल पढ़ने के लिए आपको पूरा पथ पता होना चाहिए। आप इसे पढ़ सकते हैं:
यदि आपके पास कच्चे AWS क्रेडेंशियल्स होते, तो आप इनका उपयोग करके S3 डेटा तक पहुंच सकते थे:
Postgresql को S3 तक पहुंचने के लिए किसी भी पैरामीटर समूह चर को बदलने की आवश्यकता नहीं है।
Mysql (Aurora)
एक mysql में, यदि आप क्वेरी SELECT User, Host FROM mysql.user;
चलाते हैं और वहाँ एक उपयोगकर्ता है जिसका नाम rdsadmin
है, तो आप मान सकते हैं कि आप AWS RDS mysql db के अंदर हैं।
mysql के अंदर show variables;
चलाएं और यदि चर जैसे aws_default_s3_role
, aurora_load_from_s3_role
, aurora_select_into_s3_role
के मान हैं, तो आप मान सकते हैं कि डेटाबेस S3 डेटा तक पहुंचने के लिए तैयार है।
इसके अलावा, यदि आपको aws rds describe-db-clusters
चलाने की अनुमति है तो आप जांच सकते हैं कि क्लस्टर के पास कोई संबंधित भूमिका है, जिसका मतलब आम तौर पर AWS सेवाओं तक पहुंच है)।
अब, एक बकेट के अंदर एक फ़ाइल पढ़ने के लिए आपको पूरा पथ पता होना चाहिए। आप इसे पढ़ सकते हैं:
rds:AddRoleToDBCluster
, iam:PassRole
rds:AddRoleToDBCluster
, iam:PassRole
एक हमलावर जिसके पास rds:AddRoleToDBCluster
और iam:PassRole
अनुमतियाँ हैं, एक मौजूदा RDS इंस्टेंस में एक निर्दिष्ट भूमिका जोड़ सकता है। यह हमलावर को संवेदनशील डेटा तक पहुंचने या इंस्टेंस के भीतर डेटा को संशोधित करने की अनुमति दे सकता है।
संभावित प्रभाव: RDS इंस्टेंस में संवेदनशील डेटा तक पहुंच या डेटा में अनधिकृत संशोधन। ध्यान दें कि कुछ डीबीज़ अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता होती है जैसे Mysql, जिसे aprameter समूहों में भूमिका ARN को निर्दिष्ट करने की आवश्यकता होती है।
rds:CreateDBInstance
rds:CreateDBInstance
केवल इस अनुमति के साथ ही एक हमलावर एक मौजूदा क्लस्टर के भीतर एक नया इंस्टेंस बना सकता है जिसमें पहले से ही एक IAM भूमिका जुड़ी होती है। उसे मास्टर उपयोगकर्ता पासवर्ड बदलने की अनुमति नहीं होगी, लेकिन वह नए डेटाबेस इंस्टेंस को इंटरनेट पर प्रकट कर सकता है:
rds:CreateDBInstance
, iam:PassRole
rds:CreateDBInstance
, iam:PassRole
कार्य: जांच
एक हमलावर जिसके पास rds:CreateDBInstance
और iam:PassRole
अनुमतियाँ हैं, एक नया RDS इंस्टेंस एक निर्दिष्ट भूमिका संलग्न करके बना सकता है। हमलावर फिर संभावित रूप से संवेदनशील डेटा तक पहुंच सकता है या इंस्टेंस के भीतर डेटा को संशोधित कर सकता है।
संलग्न करने के लिए कुछ आवश्यकताएँ भूमिका/इंस्टेंस-प्रोफ़ाइल की (यहाँ से यहाँ):
प्रोफ़ाइल को आपके खाते में मौजूद होना चाहिए।
प्रोफ़ाइल में एक IAM भूमिका होनी चाहिए जिसे Amazon EC2 को अनुमतियाँ स्वीकार करने के लिए हों।
इंस्टेंस प्रोफ़ाइल नाम और संबंधित IAM भूमिका नाम
AWSRDSCustom
उपसर्ग से शुरू होना चाहिए।
संभावित प्रभाव: आरडीएस इंस्टेंस में संवेदनशील डेटा तक पहुंच या डेटा में अनधिकृत संशोधन करने की अनुमति।
rds:AddRoleToDBInstance
, iam:PassRole
rds:AddRoleToDBInstance
, iam:PassRole
rds:AddRoleToDBInstance
और iam:PassRole
अनुमतियों के साथ एक हमलावर मौजूदा आरडीएस इंस्टेंस में एक निर्दिष्ट भूमिका जोड़ सकता है। यह हमलावर को संवेदनशील डेटा तक पहुंचने या इंस्टेंस के भीतर डेटा को संशोधित करने की अनुमति दे सकता है।
इसके लिए डीबी इंस्टेंस को एक क्लस्टर के बाहर होना चाहिए
संभावित प्रभाव: आरडीएस इंस्टेंस में संवेदनशील डेटा तक पहुंच या डेटा में अनधिकृत संशोधन।
Last updated