Translated ['', 'src/pentesting-cloud/aws-security/aws-services/aws-rela

This commit is contained in:
Translator
2025-11-01 11:04:57 +00:00
parent 85453efe92
commit e750a87939
2 changed files with 64 additions and 46 deletions
@@ -1,76 +1,76 @@
# AWS - Relational Database (RDS) Enum
# AWS - Σχεσιακή Βάση Δεδομένων (RDS) Enum
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Βασικές Πληροφορίες
Η **Υπηρεσία Σχεσιακής Βάσης Δεδομένων (RDS)** που προσφέρεται από την AWS έχει σχεδιαστεί για να απλοποιεί την ανάπτυξη, λειτουργία και κλιμάκωση μιας **σχεσιακής βάσης δεδομένων στο cloud**. Αυτή η υπηρεσία προσφέρει τα πλεονεκτήματα της οικονομικής αποδοτικότητας και της κλιμάκωσης, ενώ αυτοματοποιεί χρονοβόρες εργασίες όπως η προμήθεια υλικού, η διαμόρφωση βάσης δεδομένων, η εφαρμογή ενημερώσεων και τα αντίγραφα ασφαλείας.
Η **Relational Database Service (RDS)** που προσφέρει η AWS έχει σχεδιαστεί για να απλοποιεί την ανάπτυξη, τη λειτουργία και την κλιμάκωση μιας **σχεσιακής βάσης δεδομένων στο cloud**. Αυτή η υπηρεσία προσφέρει πλεονεκτήματα σε κόστος και κλιμάκωση, ενώ αυτοματοποιεί εργασίες που απαιτούν πολλή χειρονακτική εργασία όπως παροχή hardware, ρύθμιση βάσης δεδομένων, patching και backups.
Η AWS RDS υποστηρίζει διάφορες ευρέως χρησιμοποιούμενες μηχανές σχεσιακών βάσεων δεδομένων, συμπεριλαμβανομένων των MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server και Amazon Aurora, με συμβατότητα και για MySQL και PostgreSQL.
Το AWS RDS υποστηρίζει διάφορους ευρέως χρησιμοποιούμενους relational database engines όπως MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server και Amazon Aurora, με συμβατότητα για MySQL και PostgreSQL.
Τα κύρια χαρακτηριστικά του RDS περιλαμβάνουν:
Κύρια χαρακτηριστικά του RDS περιλαμβάνουν:
- **Η διαχείριση των στιγμιότυπων βάσεων δεδομένων** είναι απλοποιημένη.
- Δημιουργία **αναγνωστικών αντιγράφων** για τη βελτίωση της απόδοσης ανάγνωσης.
- Διαμόρφωση **αναπτύξεων πολλαπλών Ζωνών Διαθεσιμότητας (AZ)** για να διασφαλιστεί η υψηλή διαθεσιμότητα και οι μηχανισμοί εναλλαγής.
- **Η διαχείριση των database instances** απλοποιείται.
- Δημιουργία **read replicas** για βελτίωση της απόδοσης ανάγνωσης.
- Ρύθμιση **multi-Availability Zone (AZ) deployments** για διασφάλιση υψηλής διαθεσιμότητας και μηχανισμών failover.
- **Ενσωμάτωση** με άλλες υπηρεσίες AWS, όπως:
- AWS Identity and Access Management (**IAM**) για ισχυρό έλεγχο πρόσβασης.
- AWS **CloudWatch** για ολοκληρωμένη παρακολούθηση και μετρήσεις.
- AWS Key Management Service (**KMS**) για τη διασφάλιση κρυπτογράφησης σε κατάσταση ηρεμίας.
- AWS Identity and Access Management (**IAM**) για στιβαρό έλεγχο πρόσβασης.
- AWS **CloudWatch** για παρακολούθηση και metrics.
- AWS Key Management Service (**KMS**) για κρυπτογράφηση at rest.
## Credentials
Κατά τη δημιουργία του DB cluster, το κύριο **όνομα χρήστη** μπορεί να διαμορφωθεί (**`admin`** από προεπιλογή). Για να δημιουργήσετε τον κωδικό πρόσβασης αυτού του χρήστη μπορείτε να:
Κατά τη δημιουργία του DB cluster το κύριο **username** μπορεί να ρυθμιστεί (**`admin`** από προεπιλογή). Για να δημιουργήσετε το password αυτού του χρήστη μπορείτε να:
- **Υποδείξετε** έναν **κωδικό πρόσβασης** εσείς
- Πείτε στην RDS να **δημιουργήσει αυτόματα** τον κωδικό
- Πείτε στην RDS να τον διαχειριστεί στο **AWS Secret Manager** κρυπτογραφημένο με ένα κλειδί KMS
- **Καταχωρήσετε** ένα **password** εσείς
- Ζητήσετε από το RDS να το **auto generate**
- Ζητήσετε από το RDS να το διαχειρίζεται στο **AWS Secret Manager** κρυπτογραφημένο με ένα KMS key
<figure><img src="../../../images/image (144).png" alt=""><figcaption></figcaption></figure>
### Authentication
Υπάρχουν 3 τύποι επιλογών αυθεντικοποίησης, αλλά η χρήση του **κύριου κωδικού πρόσβασης επιτρέπεται πάντα**:
Υπάρχουν 3 τύποι επιλογών authentication, αλλά η χρήση του **master password επιτρέπεται πάντα**:
<figure><img src="../../../images/image (227).png" alt=""><figcaption></figcaption></figure>
### Public Access & VPC
### Δημόσια Πρόσβαση & VPC
Από προεπιλογή **δεν παρέχεται δημόσια πρόσβαση** στις βάσεις δεδομένων, ωστόσο **μπορεί να παραχωρηθεί**. Επομένως, από προεπιλογή μόνο οι μηχανές από την ίδια VPC θα μπορούν να έχουν πρόσβαση αν η επιλεγμένη **ομάδα ασφαλείας** (που αποθηκεύεται στο EC2 SG) το επιτρέπει.
Εξ ορισμού **δεν παρέχεται δημόσια πρόσβαση** στις βάσεις δεδομένων, ωστόσο **μπορεί να παραχωρηθεί**. Συνεπώς, εξ ορισμού μόνο μηχανές από το ίδιο VPC θα μπορούν να έχουν πρόσβαση σε αυτήν αν το επιλεγμένο **security group** (are stored in EC2 SG) το επιτρέπει.
Αντί να εκθέσετε μια DB instance, είναι δυνατό να δημιουργήσετε ένα **RDS Proxy** που **βελτιώνει** την **κλιμάκωση** & **διαθεσιμότητα** του DB cluster.
Αντί να εκθέσετε ένα DB instance, είναι δυνατή η δημιουργία ενός **RDS Proxy** που **βελτιώνει** την **scalability** & **availability** του DB cluster.
Επιπλέον, η **θύρα της βάσης δεδομένων μπορεί να τροποποιηθεί** επίσης.
Επιπλέον, η **θύρα της βάσης δεδομένων μπορεί επίσης να τροποποιηθεί**.
### Encryption
### Κρυπτογράφηση
**Η κρυπτογράφηση είναι ενεργοποιημένη από προεπιλογή** χρησιμοποιώντας ένα διαχειριζόμενο κλειδί AWS (ένα CMK μπορεί να επιλεγεί αντί αυτού).
**Η κρυπτογράφηση είναι ενεργοποιημένη από προεπιλογή** χρησιμοποιώντας ένα AWS managed key (ενα CMK μπορεί να επιλεγεί ως εναλλακτική).
Με την ενεργοποίηση της κρυπτογράφησής σας, ενεργοποιείτε **την κρυπτογράφηση σε κατάσταση ηρεμίας για την αποθήκευσή σας, τα στιγμιότυπα, τα αναγνωστικά αντίγραφα και τα αντίγραφα ασφαλείας σας**. Κλειδιά για τη διαχείριση αυτής της κρυπτογράφησης μπορούν να εκδοθούν χρησιμοποιώντας **KMS**.\
Δεν είναι δυνατό να προστεθεί αυτό το επίπεδο κρυπτογράφησης αφού έχει δημιουργηθεί η βάση δεδομένων σας. **Πρέπει να γίνει κατά τη διάρκεια της δημιουργίας της**.
Ενεργοποιώντας την κρυπτογράφησή σας, ενεργοποιείτε **encryption at rest για το storage, τα snapshots, τα read replicas και τα backups σας**. Τα κλειδιά για τη διαχείριση αυτής της κρυπτογράφησης μπορούν να εκδοθούν χρησιμοποιώντας **KMS**.\
Δεν είναι δυνατό να προστεθεί αυτό το επίπεδο κρυπτογράφησης αφού η βάση δεδομένων έχει δημιουργηθεί. **Πρέπει να γίνει κατά τη δημιουργία της**.
Ωστόσο, υπάρχει μια **λύση που σας επιτρέπει να κρυπτογραφήσετε μια μη κρυπτογραφημένη βάση δεδομένων ως εξής**. Μπορείτε να δημιουργήσετε ένα στιγμιότυπο της μη κρυπτογραφημένης βάσης δεδομένων σας, να δημιουργήσετε ένα κρυπτογραφημένο αντίγραφο αυτού του στιγμιότυπου, να χρησιμοποιήσετε αυτό το κρυπτογραφημένο στιγμιότυπο για να δημιουργήσετε μια νέα βάση δεδομένων και, τελικά, η βάση δεδομένων σας θα είναι κρυπτογραφημένη.
Ωστόσο, υπάρχει μια **παρέμβαση (workaround) που σας επιτρέπει να κρυπτογραφήσετε μια μη κρυπτογραφημένη βάση δεδομένων ως εξής**. Μπορείτε να δημιουργήσετε ένα snapshot της μη κρυπτογραφημένης βάσης σας, να δημιουργήσετε ένα κρυπτογραφημένο αντίγραφο αυτού του snapshot, να χρησιμοποιήσετε αυτό το κρυπτογραφημένο snapshot για να δημιουργήσετε μια νέα βάση δεδομένων και, τελικά, η βάση δεδομένων σας θα είναι κρυπτογραφημένη.
#### Transparent Data Encryption (TDE)
Μαζί με τις δυνατότητες κρυπτογράφησης που είναι εγγενείς στο RDS σε επίπεδο εφαρμογής, το RDS υποστηρίζει επίσης **επιπλέον μηχανισμούς κρυπτογράφησης σε επίπεδο πλατφόρμας** για την προστασία των δεδομένων σε κατάσταση ηρεμίας. Αυτό περιλαμβάνει **Transparent Data Encryption (TDE)** για Oracle και SQL Server. Ωστόσο, είναι κρίσιμο να σημειωθεί ότι ενώ το TDE ενισχύει την ασφάλεια κρυπτογραφώντας τα δεδομένα σε κατάσταση ηρεμίας, μπορεί επίσης να **επηρεάσει την απόδοση της βάσης δεδομένων**. Αυτή η επίδραση στην απόδοση είναι ιδιαίτερα αισθητή όταν χρησιμοποιείται σε συνδυασμό με τις κρυπτογραφικές λειτουργίες MySQL ή τις κρυπτογραφικές λειτουργίες Microsoft Transact-SQL.
Εκτός από τις δυνατότητες κρυπτογράφησης που παρέχει το RDS σε επίπεδο εφαρμογής, το RDS υποστηρίζει επίσης **επιπλέον μηχανισμούς κρυπτογράφησης σε επίπεδο πλατφόρμας** για την προστασία των δεδομένων at rest. Αυτό περιλαμβάνει **Transparent Data Encryption (TDE)** για Oracle και SQL Server. Ωστόσο, είναι σημαντικό να σημειωθεί ότι ενώ το TDE βελτιώνει την ασφάλεια κρυπτογραφώντας τα δεδομένα at rest, μπορεί επίσης να **επηρεάσει την απόδοση της βάσης δεδομένων**. Αυτή η επίπτωση στην απόδοση είναι ιδιαίτερα εμφανής όταν χρησιμοποιείται σε συνδυασμό με MySQL cryptographic functions ή Microsoft Transact-SQL cryptographic functions.
Για να χρησιμοποιήσετε το TDE, απαιτούνται ορισμένα προκαταρκτικά βήματα:
1. **Συσχέτιση Ομάδας Επιλογών**:
- Η βάση δεδομένων πρέπει να συσχετιστεί με μια ομάδα επιλογών. Οι ομάδες επιλογών λειτουργούν ως δοχεία για ρυθμίσεις και δυνατότητες, διευκολύνοντας τη διαχείριση της βάσης δεδομένων, συμπεριλαμβανομένων των βελτιώσεων ασφαλείας.
- Ωστόσο, είναι σημαντικό να σημειωθεί ότι οι ομάδες επιλογών είναι διαθέσιμες μόνο για συγκεκριμένες μηχανές βάσεων δεδομένων και εκδόσεις.
2. **Συμπερίληψη του TDE στην Ομάδα Επιλογών**:
- Αφού συσχετιστεί με μια ομάδα επιλογών, η επιλογή Oracle Transparent Data Encryption πρέπει να συμπεριληφθεί σε αυτήν την ομάδα.
- Είναι ουσιώδες να αναγνωρίσετε ότι μόλις προστεθεί η επιλογή TDE σε μια ομάδα επιλογών, γίνεται μόνιμο χαρακτηριστικό και δεν μπορεί να αφαιρεθεί.
3. **Λειτουργίες Κρυπτογράφησης TDE**:
- Το TDE προσφέρει δύο διακριτές λειτουργίες κρυπτογράφησης:
- **Κρυπτογράφηση Χώρου Τραπεζών TDE**: Αυτή η λειτουργία κρυπτογραφεί ολόκληρους πίνακες, παρέχοντας ευρύτερη προστασία δεδομένων.
- **Κρυπτογράφηση Στήλης TDE**: Αυτή η λειτουργία επικεντρώνεται στην κρυπτογράφηση συγκεκριμένων, μεμονωμένων στοιχείων μέσα στη βάση δεδομένων, επιτρέποντας πιο λεπτομερή έλεγχο σχετικά με τα δεδομένα που κρυπτογραφούνται.
1. **Option Group Association**:
- Η βάση δεδομένων πρέπει να συσχετιστεί με ένα option group. Τα option groups λειτουργούν ως δοχεία για ρυθμίσεις και χαρακτηριστικά, διευκολύνοντας τη διαχείριση της βάσης δεδομένων, συμπεριλαμβανομένων των βελτιώσεων ασφάλειας.
- Ωστόσο, είναι σημαντικό να σημειωθεί ότι τα option groups είναι διαθέσιμα μόνο για συγκεκριμένους database engines και εκδόσεις.
2. **Inclusion of TDE in Option Group**:
- Μόλις συσχετιστεί με ένα option group, η επιλογή Oracle Transparent Data Encryption πρέπει να προστεθεί σε αυτό το group.
- Είναι απαραίτητο να αναγνωριστεί ότι μόλις προστεθεί η επιλογή TDE σε ένα option group, γίνεται μόνιμη και δεν μπορεί να αφαιρεθεί.
3. **TDE Encryption Modes**:
- Το TDE προσφέρει δύο διακριτούς τρόπους κρυπτογράφησης:
- **TDE Tablespace Encryption**: Αυτός ο τρόπος κρυπτογραφεί ολόκληρα tablespaces, παρέχοντας ευρύτερο επίπεδο προστασίας δεδομένων.
- **TDE Column Encryption**: Αυτός ο τρόπος επικεντρώνεται στην κρυπτογράφηση συγκεκριμένων, ατομικών πεδίων μέσα στη βάση δεδομένων, επιτρέποντας πιο λεπτομερή έλεγχο στο ποια δεδομένα κρυπτογραφούνται.
Η κατανόηση αυτών των προϋποθέσεων και των λειτουργικών λεπτομερειών του TDE είναι κρίσιμη για την αποτελεσματική εφαρμογή και διαχείριση της κρυπτογράφησης εντός του RDS, διασφαλίζοντας τόσο την ασφάλεια των δεδομένων όσο και τη συμμόρφωση με τις απαραίτητες προδιαγραφές.
Η κατανόηση αυτών των προαπαιτούμενων και των λειτουργικών λεπτομερειών του TDE είναι κρίσιμη για την αποτελεσματική εφαρμογή και διαχείριση της κρυπτογράφησης στο RDS, διασφαλίζοντας τόσο την ασφάλεια των δεδομένων όσο και τη συμμόρφωση με τα απαραίτητα πρότυπα.
### Enumeration
### Καταγραφή
```bash
# Clusters info
## Get Endpoints, username, port, iam auth enabled, attached roles, SG
@@ -80,6 +80,10 @@ 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?
@@ -91,6 +95,7 @@ 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
@@ -105,25 +110,25 @@ 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
```
### Μη Αυθεντικοποιημένη Πρόσβαση
### Μη Εξουσιοδοτημένη Πρόσβαση
{{#ref}}
../aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum/README.md
{{#endref}}
### Privilege Escalation
### Privesc
{{#ref}}
../aws-privilege-escalation/aws-rds-privesc/README.md
{{#endref}}
### Μετά την Εκμετάλλευση
### Post Exploitation
{{#ref}}
../aws-post-exploitation/aws-rds-post-exploitation/README.md
{{#endref}}
### Επιμονή
### Persistence
{{#ref}}
../aws-persistence/aws-rds-persistence/README.md
@@ -131,7 +136,7 @@ aws rds modify-db-instance --db-instance-identifier <ID> --master-user-password
### SQL Injection
Υπάρχουν τρόποι πρόσβασης σε δεδομένα DynamoDB με **SQL σύνταξη**, επομένως, τυπικές **SQL injections είναι επίσης δυνατές**.
Υπάρχουν τρόποι πρόσβασης στα δεδομένα του DynamoDB με **SQL syntax**, επομένως οι τυπικές **SQL injections** είναι επίσης δυνατές.
{{#ref}}
https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html
@@ -12,11 +12,11 @@
## Δημόσια Θύρα
Είναι δυνατό να δοθεί δημόσια πρόσβαση στη **βάση δεδομένων από το διαδίκτυο**. Ο attacker θα πρέπει ωστόσο να **γνωρίζει το username και το password,** να έχει IAM access, ή να χρησιμοποιήσει ένα **exploit** για να εισέλθει στη βάση δεδομένων.
Είναι δυνατό να δοθεί δημόσια πρόσβαση στη **βάση δεδομένων από το internet**. Ο επιτιθέμενος ωστόσο θα χρειαστεί να **γνωρίζει το όνομα χρήστη και τον κωδικό**, IAM access, ή ένα **exploit** για να εισέλθει στη βάση δεδομένων.
## Δημόσιες RDS Snapshots
## Δημόσια RDS Snapshots
Η AWS επιτρέπει το να δοθεί **πρόσβαση σε οποιονδήποτε για να κατεβάσει RDS snapshots**. Μπορείτε να απαριθμήσετε αυτές τις δημόσιες RDS snapshots πολύ εύκολα από τον δικό σας λογαριασμό:
AWS επιτρέπει να δοθεί **πρόσβαση σε οποιονδήποτε για να κατεβάσει RDS snapshots**. Μπορείτε να απαριθμήσετε αυτά τα δημόσια RDS snapshots πολύ εύκολα από τον δικό σας λογαριασμό:
```bash
# Public RDS snapshots
aws rds describe-db-snapshots --include-public
@@ -32,6 +32,19 @@ aws rds describe-db-snapshots --snapshot-type public [--region us-west-2]
## Even if in the console appear as there are public snapshot it might be public
## snapshots from other accounts used by the current account
```
## Δημόσια RDS Cluster Snapshots
Παρομοίως, μπορείτε να αναζητήσετε cluster snapshots
```bash
# Public RDS cluster snapshots
aws rds describe-db-cluster-snapshots --include-public
## Search by account ID
aws rds describe-db-cluster-snapshots --include-public --query 'DBClusterSnapshots[?contains(DBClusterSnapshotIdentifier, `284546856933:`) == `true`]'
# From the own account you can check if there is any public cluster snapshot with:
aws rds describe-db-cluster-snapshots --snapshot-type public [--region us-west-2]
```
### Πρότυπο δημόσιου URL
```
mysql://{user_provided}.{random_id}.{region}.rds.amazonaws.com:3306