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)
For more information about RDS check:
AWS - Relational Database (RDS) Enumrds:ModifyDBInstance
With that permission an attacker can змінити пароль майстер-користувача, and the login inside the database:
Вам потрібно буде зв'язатися з базою даних (зазвичай вони доступні лише з внутрішніх мереж).
Потенційний вплив: Знайти чутливу інформацію всередині баз даних.
Згідно з документацією, користувач з цим дозволом може підключитися до екземпляра БД.
Якщо виконуючи SELECT datname FROM pg_database;
ви знайдете базу даних під назвою rdsadmin
, ви знаєте, що ви всередині AWS postgresql бази даних.
Спочатку ви можете перевірити, чи використовувалася ця база даних для доступу до будь-якої іншої служби AWS. Ви можете перевірити це, подивившись на встановлені розширення:
Якщо ви знайдете щось на кшталт aws_s3
, ви можете припустити, що ця база даних має якийсь доступ до S3 (є й інші розширення, такі як aws_ml
та aws_lambda
).
Також, якщо у вас є дозволи на виконання aws rds describe-db-clusters
, ви можете побачити, чи кластер має прикріплену IAM роль у полі AssociatedRoles
. Якщо так, ви можете припустити, що база даних була підготовлена для доступу до інших сервісів AWS. Виходячи з імені ролі (або якщо ви можете отримати дозволи ролі), ви могли б вгадати, який додатковий доступ має база даних.
Тепер, щоб прочитати файл всередині бакету, вам потрібно знати повний шлях. Ви можете прочитати його за допомогою:
Якщо у вас є сирі AWS облікові дані, ви також можете використовувати їх для доступу до даних S3 за допомогою:
Postgresql не потрібно змінювати жодну змінну групи параметрів, щоб мати доступ до S3.
Всередині mysql, якщо ви виконаєте запит SELECT User, Host FROM mysql.user;
і є користувач з ім'ям rdsadmin
, ви можете припустити, що ви знаходитесь всередині AWS RDS mysql db.
Всередині mysql виконайте show variables;
і якщо змінні, такі як aws_default_s3_role
, aurora_load_from_s3_role
, aurora_select_into_s3_role
, мають значення, ви можете припустити, що база даних готова до доступу до даних S3.
Також, якщо у вас є дозволи на виконання aws rds describe-db-clusters
, ви можете перевірити, чи має кластер будь-яку асоційовану роль, що зазвичай означає доступ до сервісів AWS).
Тепер, щоб прочитати файл всередині бакету, вам потрібно знати повний шлях. Ви можете прочитати його за допомогою:
rds:AddRoleToDBCluster
, iam:PassRole
Зловмисник з правами rds:AddRoleToDBCluster
та iam:PassRole
може додати вказану роль до існуючого екземпляра RDS. Це може дозволити зловмиснику отримати доступ до чутливих даних або змінити дані в межах екземпляра.
Потенційний вплив: Доступ до чутливих даних або несанкціоновані зміни даних у екземплярі RDS. Зверніть увагу, що деякі БД вимагають додаткових налаштувань, таких як Mysql, який потребує вказати роль ARN у групах параметрів.
rds:CreateDBInstance
Лише з цим дозволом зловмисник може створити новий екземпляр всередині кластера, який вже існує і має прикріплену IAM роль. Він не зможе змінити пароль майстер-користувача, але може мати можливість виставити новий екземпляр бази даних в інтернет:
rds:CreateDBInstance
, iam:PassRole
TODO: Test
Зловмисник з правами rds:CreateDBInstance
та iam:PassRole
може створити новий екземпляр RDS з прикріпленою вказаною роллю. Зловмисник може потім потенційно отримати доступ до чутливих даних або змінити дані в екземплярі.
Деякі вимоги до ролі/профілю екземпляра для прикріплення (з тут):
Профіль повинен існувати у вашому обліковому записі.
Профіль повинен мати IAM роль, яку Amazon EC2 має право приймати.
Ім'я профілю екземпляра та пов'язане ім'я IAM ролі повинні починатися з префікса AWSRDSCustom
.
Потенційний вплив: Доступ до чутливих даних або несанкціоновані зміни даних у RDS екземплярі.
rds:AddRoleToDBInstance
, iam:PassRole
Зловмисник з дозволами rds:AddRoleToDBInstance
та iam:PassRole
може додати вказану роль до існуючого RDS екземпляра. Це може дозволити зловмиснику доступ до чутливих даних або змінити дані в межах екземпляра.
DB екземпляр повинен бути поза кластером для цього
Потенційний вплив: Доступ до чутливих даних або несанкціоновані зміни даних у екземплярі RDS.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)