AWS - RDS Privesc
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
RDS के बारे में अधिक जानकारी के लिए देखें:
rds:ModifyDBInstance
उस अनुमति के साथ एक हमलावर मास्टर उपयोगकर्ता का पासवर्ड संशोधित कर सकता है, और डेटाबेस के अंदर लॉगिन:
आपको डेटाबेस से संपर्क करने में सक्षम होना चाहिए (वे आमतौर पर केवल आंतरिक नेटवर्क से सुलभ होते हैं)।
संभावित प्रभाव: डेटाबेस के अंदर संवेदनशील जानकारी खोजें।
दस्तावेज़ों के अनुसार, इस अनुमति के साथ एक उपयोगकर्ता DB इंस्टेंस से कनेक्ट कर सकता है।
यदि आप 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 के अंदर, यदि आप क्वेरी 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 इंस्टेंस में एक निर्दिष्ट भूमिका जोड़ सकता है। इससे हमलावर को संवेदनशील डेटा तक पहुंचने या इंस्टेंस के भीतर डेटा को संशोधित करने की अनुमति मिल सकती है।
संभावित प्रभाव: RDS उदाहरण में संवेदनशील डेटा तक पहुंच या डेटा में अनधिकृत संशोधन। ध्यान दें कि कुछ DBs को अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता होती है जैसे Mysql, जिसे पैरामीटर समूहों में भूमिका ARN निर्दिष्ट करने की आवश्यकता होती है।
rds:CreateDBInstance
इस अनुमति के साथ एक हमलावर एक क्लस्टर के अंदर एक नया उदाहरण बना सकता है जो पहले से मौजूद है और जिसमें एक IAM भूमिका संलग्न है। वह मास्टर उपयोगकर्ता पासवर्ड को बदलने में असमर्थ होगा, लेकिन वह नए डेटाबेस उदाहरण को इंटरनेट पर उजागर करने में सक्षम हो सकता है:
rds:CreateDBInstance
, iam:PassRole
TODO: Test
एक हमलावर जिसके पास rds:CreateDBInstance
और iam:PassRole
की अनुमति है, एक निर्दिष्ट भूमिका के साथ एक नया RDS उदाहरण बना सकता है। हमलावर फिर संभावित रूप से संवेदनशील डेटा तक पहुँच सकता है या उदाहरण के भीतर डेटा को संशोधित कर सकता है।
संलग्न करने के लिए भूमिका/उदाहरण-प्रोफ़ाइल की कुछ आवश्यकताएँ (से यहाँ):
प्रोफ़ाइल आपके खाते में मौजूद होनी चाहिए।
प्रोफ़ाइल में एक IAM भूमिका होनी चाहिए जिसे Amazon EC2 को मानने की अनुमति हो।
उदाहरण प्रोफ़ाइल का नाम और संबंधित IAM भूमिका का नाम AWSRDSCustom
उपसर्ग से शुरू होना चाहिए।
संभावित प्रभाव: RDS उदाहरण में संवेदनशील डेटा तक पहुंच या डेटा में अनधिकृत संशोधन।
rds:AddRoleToDBInstance
, iam:PassRole
एक हमलावर जिसके पास rds:AddRoleToDBInstance
और iam:PassRole
की अनुमति है, वह एक मौजूदा RDS उदाहरण में एक निर्दिष्ट भूमिका जोड़ सकता है। इससे हमलावर को संवेदनशील डेटा तक पहुंच या उदाहरण के भीतर डेटा को संशोधित करने की अनुमति मिल सकती है।
DB उदाहरण को क्लस्टर के बाहर होना चाहिए इसके लिए
संभावित प्रभाव: RDS उदाहरण में संवेदनशील डेटा तक पहुंच या डेटा में अनधिकृत संशोधन।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)