AWS - RDS Privesc
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Kwa maelezo zaidi kuhusu RDS angalia:
AWS - Relational Database (RDS) Enumrds:ModifyDBInstance
Kwa ruhusa hiyo mshambuliaji anaweza kubadilisha nenosiri la mtumiaji mkuu, na kuingia ndani ya hifadhidata:
Utahitaji kuwa na uwezo wa kuwasiliana na hifadhidata (zinapatikana kwa kawaida tu kutoka ndani ya mitandao).
Athari Zinazoweza Kutokea: Pata taarifa nyeti ndani ya hifadhidata.
Kulingana na docs mtumiaji mwenye ruhusa hii anaweza kuungana na mfano wa DB.
Ikiwa unakimbia SELECT datname FROM pg_database;
unapata hifadhidata inayoitwa rdsadmin
unajua uko ndani ya hifadhidata ya AWS postgresql.
Kwanza unaweza kuangalia ikiwa hifadhidata hii imetumika kufikia huduma nyingine yoyote ya AWS. Unaweza kuangalia hii kwa kutazama nyongeza zilizowekwa:
Ikiwa unapata kitu kama aws_s3
unaweza kudhani kuwa hifadhidata hii ina aina fulani ya ufikiaji juu ya S3 (kuna nyongeza nyingine kama aws_ml
na aws_lambda
).
Pia, ikiwa una ruhusa za kukimbia aws rds describe-db-clusters
unaweza kuona huko ikiwa klasta ina IAM Role yoyote iliyoambatanishwa katika uwanja AssociatedRoles
. Ikiwa ipo, unaweza kudhani kuwa hifadhidata ilikuwa imeandaliwa kufikia huduma nyingine za AWS. Kulingana na jina la jukumu (au ikiwa unaweza kupata ruhusa za jukumu) unaweza kukisia ni ufikiaji gani wa ziada hifadhidata ina.
Sasa, ili kusoma faili ndani ya bucket unahitaji kujua njia kamili. Unaweza kuisoma kwa:
Ikiwa ungekuwa na raw AWS credentials unaweza pia kuzitumia kufikia data ya S3 kwa:
Postgresql haitaji kubadilisha chochote katika kikundi cha vigezo ili kuweza kufikia S3.
Ndani ya mysql, ukikimbia swali SELECT User, Host FROM mysql.user;
na kuna mtumiaji anayeitwa rdsadmin
, unaweza kudhani uko ndani ya AWS RDS mysql db.
Ndani ya mysql kimbia show variables;
na ikiwa vigezo kama aws_default_s3_role
, aurora_load_from_s3_role
, aurora_select_into_s3_role
, vina thamani, unaweza kudhani hifadhidata imeandaliwa kufikia data za S3.
Pia, ikiwa una ruhusa ya kukimbia aws rds describe-db-clusters
unaweza kuangalia ikiwa klasta ina jukumu lolote lililounganishwa, ambalo kwa kawaida linamaanisha ufikiaji wa huduma za AWS).
Sasa, ili kusoma faili ndani ya bakuli unahitaji kujua njia kamili. Unaweza kuisoma kwa:
rds:AddRoleToDBCluster
, iam:PassRole
Mshambuliaji mwenye ruhusa rds:AddRoleToDBCluster
na iam:PassRole
anaweza kuongeza jukumu lililobainishwa kwenye mfano wa RDS uliopo. Hii inaweza kumwezesha mshambuliaji kupata data nyeti au kubadilisha data ndani ya mfano huo.
Madhara Yanayoweza Kutokea: Ufikiaji wa data nyeti au mabadiliko yasiyoidhinishwa kwenye data katika RDS instance. Kumbuka kwamba baadhi ya DB zinahitaji mipangilio ya ziada kama Mysql, ambayo inahitaji kubainisha ARN ya jukumu katika vikundi vya aprameter pia.
rds:CreateDBInstance
Kwa ruhusa hii tu mshambuliaji anaweza kuunda instance mpya ndani ya klasta ambayo tayari ipo na ina IAM role iliyounganishwa. Hataweza kubadilisha nenosiri la mtumiaji mkuu, lakini anaweza kuwa na uwezo wa kufichua instance mpya ya database kwa mtandao:
rds:CreateDBInstance
, iam:PassRole
TODO: Jaribu
Mshambuliaji mwenye ruhusa rds:CreateDBInstance
na iam:PassRole
anaweza kuunda mfano mpya wa RDS wenye jukumu lililounganishwa. Mshambuliaji anaweza kisha kupata data nyeti au kubadilisha data ndani ya mfano huo.
Mahitaji mengine ya jukumu/profili ya mfano kuunganishwa (kutoka hapa):
Profaili lazima iwepo katika akaunti yako.
Profaili lazima iwe na jukumu la IAM ambalo Amazon EC2 ina ruhusa ya kulichukua.
Jina la profaili ya mfano na jina la jukumu la IAM lililounganishwa lazima ianze na kiambishi AWSRDSCustom
.
Madhara Yanayoweza Kutokea: Ufikiaji wa data nyeti au mabadiliko yasiyoidhinishwa kwenye data katika RDS instance.
rds:AddRoleToDBInstance
, iam:PassRole
Mshambuliaji mwenye ruhusa rds:AddRoleToDBInstance
na iam:PassRole
anaweza kuongeza jukumu lililotajwa kwenye RDS instance iliyopo. Hii inaweza kumwezesha mshambuliaji kufikia data nyeti au kubadilisha data ndani ya instance hiyo.
DB instance lazima iwe nje ya kundi kwa hili
Madhara Yanayoweza Kutokea: Ufikiaji wa data nyeti au mabadiliko yasiyoidhinishwa kwenye data katika RDS instance.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)