AWS - RDS Privesc
RDS - Usługa baz danych relacyjnych
Aby uzyskać więcej informacji na temat RDS, sprawdź:
pageAWS - Relational Database (RDS) Enumrds:ModifyDBInstance
rds:ModifyDBInstance
Z tym uprawnieniem atakujący może zmienić hasło głównego użytkownika oraz logowanie do bazy danych:
Będziesz musiał móc skontaktować się z bazą danych (zazwyczaj są one dostępne tylko z wewnątrz sieci).
Potencjalny wpływ: Znalezienie wrażliwych informacji w bazach danych.
rds-db:connect
Zgodnie z dokumentacją użytkownik z tym uprawnieniem mógłby połączyć się z instancją bazy danych.
Nadużycie uprawnień roli IAM RDS
Postgresql (Aurora)
Jeśli wykonasz SELECT datname FROM pg_database;
i znajdziesz bazę danych o nazwie rdsadmin
, to oznacza, że jesteś w bazie danych AWS postgresql.
Najpierw możesz sprawdzić, czy ta baza danych została użyta do uzyskania dostępu do innej usługi AWS. Możesz to sprawdzić, analizując zainstalowane rozszerzenia:
Jeśli znajdziesz coś takiego jak aws_s3
, możesz założyć, że ta baza danych ma pewien rodzaj dostępu do S3 (istnieją inne rozszerzenia, takie jak aws_ml
i aws_lambda
).
Ponadto, jeśli masz uprawnienia do uruchomienia polecenia aws rds describe-db-clusters
, możesz zobaczyć, czy klaster ma przypisaną jakąś rolę IAM w polu AssociatedRoles
. Jeśli tak, możesz założyć, że baza danych została przygotowana do dostępu do innych usług AWS. Na podstawie nazwy roli (lub jeśli możesz uzyskać uprawnienia roli) możesz zgadnąć, jakie dodatkowe uprawnienia ma baza danych.
Teraz, aby odczytać plik wewnątrz kubełka, musisz znać pełną ścieżkę. Możesz to zrobić za pomocą:
Jeśli masz surowe dane uwierzytelniające AWS, możesz ich również użyć do uzyskania dostępu do danych w S3 za pomocą:
Postgresql nie musi zmieniać żadnej zmiennej grupy parametrów, aby móc uzyskać dostęp do S3.
Mysql (Aurora)
Wewnątrz mysql, jeśli wykonasz zapytanie SELECT User, Host FROM mysql.user;
i istnieje użytkownik o nazwie rdsadmin
, możesz założyć, że znajdujesz się w bazie danych AWS RDS mysql.
Wewnątrz mysql wykonaj show variables;
i jeśli zmienne takie jak aws_default_s3_role
, aurora_load_from_s3_role
, aurora_select_into_s3_role
mają wartości, możesz założyć, że baza danych jest przygotowana do dostępu do danych z S3.
Dodatkowo, jeśli masz uprawnienia do uruchomienia aws rds describe-db-clusters
możesz sprawdzić, czy klaster ma jakąkolwiek powiązaną rolę, co zazwyczaj oznacza dostęp do usług AWS).
Teraz, aby odczytać plik wewnątrz kubełka, musisz znać pełną ścieżkę. Możesz to odczytać za pomocą:
rds:AddRoleToDBCluster
, iam:PassRole
rds:AddRoleToDBCluster
, iam:PassRole
Atakujący posiadający uprawnienia rds:AddRoleToDBCluster
i iam:PassRole
może dodać określoną rolę do istniejącej instancji RDS. Może to umożliwić atakującemu dostęp do poufnych danych lub modyfikację danych w instancji.
Potencjalny wpływ: Dostęp do danych poufnych lub nieautoryzowane modyfikacje danych w instancji RDS. Należy zauważyć, że niektóre bazy danych wymagają dodatkowych konfiguracji, takich jak Mysql, który musi określić ARN roli w grupach parametrów również.
rds:CreateDBInstance
rds:CreateDBInstance
Tylko z tym uprawnieniem atakujący mógłby utworzyć nową instancję wewnątrz istniejącego klastra, który ma przypisaną rolę IAM. Nie będzie mógł zmienić hasła głównego użytkownika, ale może wystawić nową instancję bazy danych do internetu:
rds:CreateDBInstance
, iam:PassRole
rds:CreateDBInstance
, iam:PassRole
TODO: Test
Atakujący posiadający uprawnienia rds:CreateDBInstance
i iam:PassRole
może utworzyć nową instancję RDS z przypisaną określoną rolą. Następnie atakujący może potencjalnie uzyskać dostęp do danych poufnych lub modyfikować dane wewnątrz instancji.
Niektóre wymagania dotyczące roli/profilu instancji do przypisania (z tutaj):
Profil musi istnieć w twoim koncie.
Profil musi mieć rolę IAM, którą Amazon EC2 ma uprawnienia do przejęcia.
Nazwa profilu instancji i nazwa powiązanej roli IAM muszą zaczynać się od prefiksu
AWSRDSCustom
.
Potencjalne skutki: Dostęp do poufnych danych lub nieautoryzowane modyfikacje danych w instancji RDS.
rds:AddRoleToDBInstance
, iam:PassRole
rds:AddRoleToDBInstance
, iam:PassRole
Atakujący posiadający uprawnienia rds:AddRoleToDBInstance
i iam:PassRole
może dodać określoną rolę do istniejącej instancji RDS. Może to umożliwić atakującemu dostęp do poufnych danych lub modyfikację danych w instancji.
Instancja bazy danych musi znajdować się poza klastrem, aby to zadziałało.
Potencjalne skutki: Dostęp do wrażliwych danych lub nieautoryzowane modyfikacje danych w instancji RDS.
Last updated