AWS - रिलेशनल डेटाबेस (RDS) एन्‍यूमरेशन

Reading time: 7 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

बुनियादी जानकारी

AWS द्वारा पेश की गई Relational Database Service (RDS) क्लाउड में एक रिलेशनल डेटाबेस की तैनाती, संचालन और स्केलेबिलिटी को सरल बनाने के लिए डिज़ाइन की गई है। यह सेवा लागत कुशलता और स्केलेबिलिटी के फायदे प्रदान करती है और हार्डवेयर provisioning, डेटाबेस कॉन्फ़िगरेशन, पैचिंग और बैकअप जैसे श्रम-गहन कार्यों को स्वचालित करती है।

AWS RDS लोकप्रिय रिलेशनल डेटाबेस इंजन जैसे MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server, और Amazon Aurora (MySQL और PostgreSQL दोनों के साथ संगतता के साथ) का समर्थन करता है।

RDS की प्रमुख विशेषताएँ शामिल हैं:

  • डेटाबेस इंस्टेंस का प्रबंधन सरल किया गया है।
  • पढ़ने के प्रदर्शन को बेहतर करने के लिए read replicas का निर्माण।
  • उच्च उपलब्धता और failover तंत्र सुनिश्चित करने के लिए multi-Availability Zone (AZ) deployments की कॉन्फ़िगरेशन।
  • अन्य AWS सेवाओं के साथ इंटीग्रेशन, जैसे:
    • AWS Identity and Access Management (IAM) मजबूत एक्सेस कंट्रोल के लिए।
    • AWS CloudWatch व्यापक मॉनिटरिंग और मेट्रिक्स के लिए।
    • AWS Key Management Service (KMS) रहन-सहन पर एन्क्रिप्शन सुनिश्चित करने के लिए।

क्रेडेंशियल्स

DB क्लस्टर बनाते समय master username को कॉन्फ़िगर किया जा सकता है (डिफ़ॉल्ट रूप से admin)। इस उपयोगकर्ता का पासवर्ड उत्पन्न करने के लिए आप:

  • खुद एक password निर्दिष्ट कर सकते हैं
  • RDS से इसे auto generate करने के लिए कह सकते हैं
  • RDS से इसे AWS Secret Manager में KMS की के साथ एन्क्रिप्टेड रूप में प्रबंधित करवाने के लिए कह सकते हैं

प्रमाणीकरण

तीन प्रकार के प्रमाणीकरण विकल्प हैं, लेकिन master password का उपयोग हमेशा अनुमति है:

सार्वजनिक एक्सेस & VPC

डिफ़ॉल्ट रूप से डेटाबेस को कोई सार्वजनिक एक्सेस नहीं दिया जाता, हालांकि इसे अनुमति दी जा सकती है। इसलिए, डिफ़ॉल्ट रूप से केवल उसी VPC की मशीनें ही यदि चुना गया security group (जो EC2 SG में स्टोर होते हैं) इसकी अनुमति देती है तो इसे एक्सेस कर पाएंगी।

एक DB instance को एक्सपोज़ करने के बजाय, आप एक RDS Proxy बना सकते हैं जो DB क्लस्टर की scalability और availability को बेहतर बनाता है।

इसके अलावा, database port को भी संशोधित किया जा सकता है।

एन्क्रिप्शन

Encryption डिफ़ॉल्ट रूप से सक्षम होता है और AWS managed key का उपयोग करता है (इसके बजाय CMK चुना जा सकता है)।

Encryption सक्षम करने पर आप अपने स्टोरेज, स्नैपशॉट, read replicas और बैक-अप्स के लिए encryption at rest सक्षम कर रहे होते हैं। इस एन्क्रिप्शन को प्रबंधित करने के लिए कीज़ KMS के माध्यम से जारी की जा सकती हैं.
यह स्तर का एन्क्रिप्शन डेटाबेस बन जाने के बाद जोड़ा नहीं जा सकता। यह डेटाबेस के निर्माण के समय ही किया जाना चाहिए

हालाँकि, एक workaround जिससे आप एक अनएन्क्रिप्टेड डेटाबेस को एन्क्रिप्ट कर सकते हैं उपलब्ध है। आप अपने अनएन्क्रिप्टेड डेटाबेस का एक स्नैपशॉट बना सकते हैं, उस स्नैपशॉट की एक एन्क्रिप्टेड कॉपी बना सकते हैं, उस एन्क्रिप्टेड स्नैपशॉट का उपयोग करके नया डेटाबेस बना सकते हैं, और अंततः आपका नया डेटाबेस एन्क्रिप्टेड होगा।

Transparent Data Encryption (TDE)

RDS में एप्लिकेशन स्तर पर उपलब्ध एन्क्रिप्शन क्षमताओं के साथ-साथ RDS प्लेटफ़ॉर्म-स्तरीय अतिरिक्त एन्क्रिप्शन तंत्र भी समर्थन करता है ताकि data at rest सुरक्षित रहे। इसमें Oracle और SQL Server के लिए Transparent Data Encryption (TDE) शामिल है। हालांकि, यह ध्यान रखना महत्वपूर्ण है कि जबकि TDE data at rest को एन्क्रिप्ट करके सुरक्षा बढ़ाता है, यह डेटाबेस प्रदर्शन को प्रभावित भी कर सकता है। यह प्रदर्शन प्रभाव विशेष रूप से तब दिखाई देता है जब इसे MySQL क्रिप्टोग्राफिक फ़ंक्शंस या Microsoft Transact-SQL क्रिप्टोग्राफिक फ़ंक्शंस के साथ उपयोग किया जाए।

TDE का उपयोग करने के लिए कुछ प्रारंभिक कदम आवश्यक हैं:

  1. Option Group Association:
  • डेटाबेस को एक option group के साथ संबद्ध होना चाहिए। Option groups सेटिंग्स और फीचर्स के कंटेनर के रूप में कार्य करते हैं, जो डेटाबेस प्रबंधन और सुरक्षा सुधारों को सुविधाजनक बनाते हैं।
  • हालांकि, ध्यान रहे कि option groups केवल कुछ विशिष्ट डेटाबेस इंजन और वर्ज़न के लिए उपलब्ध होते हैं।
  1. Inclusion of TDE in Option Group:
  • एक बार option group से जुड़ जाने पर, Oracle Transparent Data Encryption विकल्प को उस ग्रुप में शामिल करना होगा।
  • यह समझना आवश्यक है कि एक बार TDE विकल्प option group में जोड़ दिया गया, तो वह स्थायी हो जाता है और इसे हटाया नहीं जा सकता।
  1. TDE Encryption Modes:
  • TDE दो अलग-अलग एन्क्रिप्शन मोड प्रदान करता है:
    • TDE Tablespace Encryption: यह मोड पूरे tablespace को एन्क्रिप्ट करता है, जिससे व्यापक स्तर पर डेटा सुरक्षा मिलती है।
    • TDE Column Encryption: यह मोड डेटाबेस के विशिष्ट कॉलम्स या तत्वों को एन्क्रिप्ट करने पर केंद्रित है, जिससे आप यह नियंत्रित कर सकते हैं कि कौन सा डेटा एन्क्रिप्ट होगा।

इन पूर्वापेक्षाओं और TDE के संचालन संबंधी जटिलताओं को समझना RDS के भीतर एन्क्रिप्शन को प्रभावी ढंग से लागू और प्रबंधित करने के लिए महत्वपूर्ण है, जिससे डेटा सुरक्षा और आवश्यक मानकों का पालन सुनिश्चित होता है।

एन्यूमरेशन

bash
# Clusters info
## Get Endpoints, username, port, iam auth enabled, attached roles, SG
aws rds describe-db-clusters
aws rds describe-db-cluster-endpoints #Cluster URLs
aws rds describe-db-cluster-backtracks --db-cluster-identifier <cluster-name>

## Cluster snapshots
aws rds describe-db-cluster-snapshots
aws rds describe-db-cluster-snapshots --include-public --snapshot-type public

## Restore cluster snapshot as new instance
aws rds restore-db-instance-from-db-snapshot --db-cluster-identifier <ID> --snapshot-identifier <ID>

# Get DB instances info
aws rds describe-db-instances #username, url, port, vpc, SG, is public?
aws rds describe-db-security-groups

## Find automated backups
aws rds describe-db-instance-automated-backups

## Find snapshots
aws rds describe-db-snapshots
aws rds describe-db-snapshots --include-public --snapshot-type public

## Restore snapshot as new instance
aws rds restore-db-instance-from-db-snapshot --db-instance-identifier <ID> --db-snapshot-identifier <ID> --availability-zone us-west-2a

# Any public snapshot in the account
aws rds describe-db-snapshots --snapshot-type public

# Proxies
aws rds describe-db-proxy-endpoints
aws rds describe-db-proxy-target-groups
aws rds describe-db-proxy-targets

## reset credentials of MasterUsername
aws rds modify-db-instance --db-instance-identifier <ID> --master-user-password <NewPassword> --apply-immediately

Unauthenticated Access

AWS - RDS Unauthenticated Enum

Privesc

AWS - RDS Privesc

Post Exploitation

AWS - RDS Post Exploitation

Persistence

AWS - RDS Persistence

SQL Injection

DynamoDB डेटा को SQL syntax के साथ एक्सेस करने के तरीके मौजूद हैं — इसलिए सामान्य SQL injections भी संभव हैं।

SQL Injection - HackTricks

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें