AWS - RDS Privesc
RDS - Relational Database Service
Więcej informacji o RDS znajdziesz tutaj:
AWS - Relational Database (RDS) Enumrds:ModifyDBInstance
rds:ModifyDBInstance
Z tą uprawnieniem atakujący może zmodyfikować hasło użytkownika głównego i zalogować się do bazy danych:
Musisz mieć możliwość połączenia się z bazą danych (zazwyczaj są one dostępne tylko z wewnętrznych sieci).
Potencjalny wpływ: Znalezienie wrażliwych informacji w bazach danych.
rds-db:connect
Według dokumentacji użytkownik z tym uprawnieniem może połączyć się z instancją DB.
Nadużycie uprawnień RDS Role IAM
Postgresql (Aurora)
Jeśli uruchomisz SELECT datname FROM pg_database;
i znajdziesz bazę danych o nazwie rdsadmin
, wiesz, że jesteś wewnątrz AWS postgresql database.
Najpierw możesz sprawdzić, czy ta baza danych była używana do uzyskania dostępu do jakiejkolwiek innej usługi AWS. Możesz to sprawdzić, patrząc na zainstalowane rozszerzenia:
Jeśli znajdziesz coś takiego jak aws_s3
, możesz założyć, że ta baza danych ma jakiś rodzaj dostępu do S3 (istnieją inne rozszerzenia, takie jak aws_ml
i aws_lambda
).
Również, jeśli masz uprawnienia do uruchomienia aws rds describe-db-clusters
, możesz zobaczyć tam, czy klaster ma przypisaną jakąkolwiek 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ąć, jaki dodatkowy dostęp ma baza danych.
Teraz, aby odczytać plik wewnątrz bucketu, musisz znać pełną ścieżkę. Możesz to odczytać za pomocą:
Jeśli masz surowe poświadczenia AWS, możesz ich również użyć do uzyskania dostępu do danych S3 za pomocą:
Postgresql nie wymaga zmiany żadnej zmiennej grupy parametrów, aby uzyskać dostęp do S3.
Mysql (Aurora)
Wewnątrz mysql, jeśli uruchomisz zapytanie SELECT User, Host FROM mysql.user;
i jest tam użytkownik o nazwie rdsadmin
, możesz założyć, że jesteś wewnątrz AWS RDS mysql db.
Wewnątrz mysql uruchom 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 S3.
Również, jeśli masz uprawnienia do uruchomienia aws rds describe-db-clusters
, możesz sprawdzić, czy klaster ma jakąkolwiek przypisaną rolę, co zazwyczaj oznacza dostęp do usług AWS.
Aby odczytać plik wewnątrz bucket, musisz znać pełną ścieżkę. Możesz to odczytać za pomocą:
rds:AddRoleToDBCluster
, iam:PassRole
rds:AddRoleToDBCluster
, iam:PassRole
Atakujący z uprawnieniami rds:AddRoleToDBCluster
i iam:PassRole
może dodać określoną rolę do istniejącej instancji RDS. Może to pozwolić atakującemu na dostęp do wrażliwych danych lub modyfikację danych w instancji.
Potential Impact: Dostęp do wrażliwych danych lub nieautoryzowane modyfikacje danych w instancji RDS. Należy zauważyć, że niektóre bazy danych wymagają dodatkowych konfiguracji, takich jak Mysql, który wymaga określenia ARN roli w grupach parametrów.
rds:CreateDBInstance
rds:CreateDBInstance
Tylko z tym uprawnieniem atakujący mógłby utworzyć nową instancję w istniejącym klastrze, który ma przypisaną rolę IAM. Nie będzie w stanie zmienić hasła użytkownika głównego, ale może być w stanie wystawić nową instancję bazy danych do internetu:
rds:CreateDBInstance
, iam:PassRole
rds:CreateDBInstance
, iam:PassRole
TODO: Test
Atakujący z uprawnieniami rds:CreateDBInstance
i iam:PassRole
może utworzyć nową instancję RDS z przypisaną określoną rolą. Atakujący może następnie potencjalnie uzyskać dostęp do wrażliwych danych lub zmodyfikować dane w instancji.
Niektóre wymagania dotyczące roli/profilu instancji do przypisania (z tutaj):
Profil musi istnieć na Twoim koncie.
Profil musi mieć rolę IAM, którą Amazon EC2 ma uprawnienia do przejęcia.
Nazwa profilu instancji i powiązana nazwa roli IAM muszą zaczynać się od prefiksu
AWSRDSCustom
.
Potencjalny wpływ: Dostęp do wrażliwych danych lub nieautoryzowane modyfikacje danych w instancji RDS.
rds:AddRoleToDBInstance
, iam:PassRole
rds:AddRoleToDBInstance
, iam:PassRole
Atakujący z uprawnieniami rds:AddRoleToDBInstance
i iam:PassRole
może dodać określoną rolę do istniejącej instancji RDS. Może to pozwolić atakującemu na dostęp do wrażliwych danych lub modyfikację danych w instancji.
Instancja DB musi być poza klastrem
Potencjalny wpływ: Dostęp do wrażliwych danych lub nieautoryzowane modyfikacje danych w instancji RDS.
Last updated