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)
Aby uzyskać więcej informacji o RDS, sprawdź:
AWS - Relational Database (RDS) Enumrds:ModifyDBInstance
Dzięki temu uprawnieniu atakujący może zmienić hasło użytkownika głównego oraz logowanie w bazie danych:
Będziesz musiał skontaktować się z bazą danych (zwykle są one dostępne tylko z wewnętrznych sieci).
Potencjalny wpływ: Znalezienie wrażliwych informacji w bazach danych.
Zgodnie z dokumentacją użytkownik z tym uprawnieniem mógłby połączyć się z instancją DB.
Jeśli uruchamiając SELECT datname FROM pg_database;
znajdziesz bazę danych o nazwie rdsadmin
, wiesz, że jesteś w bazie danych AWS postgresql.
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 jakiegoś rodzaju dostęp do S3 (są 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ć, czy klaster ma przypisaną jakąkolwiek rolę IAM w polu AssociatedRoles
. Jeśli tak, możesz założyć, że baza danych była przygotowana do uzyskania dostępu do innych usług AWS. Na podstawie nazwa roli (lub jeśli możesz uzyskać uprawnienia roli) możesz zgadnąć, jaki dodatkowy dostęp ma baza danych.
Teraz, aby przeczytać plik w obrębie bucketu, musisz znać pełną ścieżkę. Możesz to przeczytać za pomocą:
Jeśli miałeś surowe dane uwierzytelniające AWS, mógłbyś je również wykorzystać do uzyskania dostępu do danych S3 za pomocą:
Postgresql nie musi zmieniać żadnej zmiennej grupy parametrów, aby uzyskać dostęp do S3.
Wewnątrz mysql, jeśli uruchomisz zapytanie SELECT User, Host FROM mysql.user;
i jest użytkownik o nazwie rdsadmin
, możesz założyć, że jesteś w 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 uzyskania dostępu do danych S3.
Ponadto, 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 przeczytać plik wewnątrz bucketu, musisz znać pełną ścieżkę. Możesz go przeczytać za pomocą:
rds:AddRoleToDBCluster
, iam:PassRole
Atakujący z uprawnieniami rds:AddRoleToDBCluster
i iam:PassRole
może dodać określoną rolę do istniejącego instancji RDS. Może to umożliwić atakującemu dostęp do wrażliwych danych lub modyfikację danych w obrębie instancji.
Potencjalny wpływ: 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 musi określić ARN roli w grupach parametrów.
rds:CreateDBInstance
Tylko z tym uprawnieniem atakujący mógłby stworzyć nową instancję w istniejącym klastrze, która już istnieje i ma przypisaną rolę IAM. Nie będzie mógł zmienić hasła głównego użytkownika, ale może być w stanie wystawić nową instancję bazy danych do internetu:
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ć w twoim koncie.
Profil musi mieć rolę IAM, którą Amazon EC2 ma uprawnienia do przyję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
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, aby to
Potencjalny wpływ: Dostęp do wrażliwych danych lub nieautoryzowane modyfikacje danych w instancji RDS.
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)