AWS - RDS Privesc
RDS - रिलेशनल डेटाबेस सेवा
RDS के बारे में अधिक जानकारी के लिए देखें:
rds: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 भूमिका संलग्न है या नहीं, क्षेत्र 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 उदाहरण में संवेदनशील डेटा तक पहुंच या डेटा में अनधिकृत संशोधन। ध्यान दें कि कुछ DBs को अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता होती है जैसे Mysql, जिसे पैरामीटर समूहों में भूमिका ARN निर्दिष्ट करने की आवश्यकता होती है।
rds:CreateDBInstance
rds:CreateDBInstance
इस अनुमति के साथ एक हमलावर एक क्लस्टर के अंदर एक नया उदाहरण बना सकता है जो पहले से मौजूद है और जिसमें एक IAM भूमिका संलग्न है। वह मास्टर उपयोगकर्ता पासवर्ड को बदलने में असमर्थ होगा, लेकिन वह नए डेटाबेस उदाहरण को इंटरनेट पर उजागर करने में सक्षम हो सकता है:
rds:CreateDBInstance
, iam:PassRole
rds:CreateDBInstance
, iam:PassRole
TODO: टेस्ट करें
An attacker with the permissions rds:CreateDBInstance
and iam:PassRole
can एक निर्दिष्ट भूमिका के साथ एक नया RDS उदाहरण बना सकता है. The attacker can then potentially संवेदनशील डेटा तक पहुँच प्राप्त कर सकता है या उदाहरण के भीतर डेटा को संशोधित कर सकता है.
प्रोफ़ाइल आपके खाते में मौजूद होनी चाहिए.
प्रोफ़ाइल में एक IAM भूमिका होनी चाहिए जिसे Amazon EC2 को मानने की अनुमति हो.
उदाहरण प्रोफ़ाइल नाम और संबंधित IAM भूमिका नाम को
AWSRDSCustom
प्रीफिक्स से शुरू होना चाहिए.
संभावित प्रभाव: RDS उदाहरण में संवेदनशील डेटा तक पहुंच या डेटा में अनधिकृत संशोधन।
rds:AddRoleToDBInstance
, iam:PassRole
rds:AddRoleToDBInstance
, iam:PassRole
एक हमलावर जिसके पास rds:AddRoleToDBInstance
और iam:PassRole
की अनुमति है, वह एक मौजूदा RDS उदाहरण में एक निर्दिष्ट भूमिका जोड़ सकता है। इससे हमलावर को संवेदनशील डेटा तक पहुंच या उदाहरण के भीतर डेटा को संशोधित करने की अनुमति मिल सकती है।
DB उदाहरण को क्लस्टर के बाहर होना चाहिए इसके लिए
संभावित प्रभाव: RDS उदाहरण में संवेदनशील डेटा तक पहुंच या डेटा में अनधिकृत संशोधन।
Last updated