AWS - RDS Privesc
RDS - Serviço de Banco de Dados Relacional
Para mais informações sobre o RDS, verifique:
pageAWS - Relational Database (RDS) Enumrds:ModifyDBInstance
rds:ModifyDBInstance
Com essa permissão, um atacante pode modificar a senha do usuário mestre e o login dentro do banco de dados:
Você precisará ser capaz de entrar em contato com o banco de dados (geralmente só são acessíveis de dentro das redes).
Impacto Potencial: Encontrar informações sensíveis dentro dos bancos de dados.
rds-db:connect
De acordo com a documentação um usuário com essa permissão poderia se conectar à instância do banco de dados.
Abuso das permissões IAM do RDS Role
Postgresql (Aurora)
Se ao executar SELECT datname FROM pg_database;
você encontrar um banco de dados chamado rdsadmin
você saberá que está dentro de um banco de dados postgresql da AWS.
Primeiro, você pode verificar se este banco de dados foi usado para acessar qualquer outro serviço da AWS. Você poderia verificar isso olhando as extensões instaladas:
Se encontrar algo como aws_s3
, você pode assumir que este banco de dados tem algum tipo de acesso sobre o S3 (há outras extensões como aws_ml
e aws_lambda
).
Além disso, se tiver permissões para executar aws rds describe-db-clusters
, você pode verificar se o cluster tem algum IAM Role anexado no campo AssociatedRoles
. Se houver, você pode assumir que o banco de dados foi preparado para acessar outros serviços da AWS. Com base no nome da função (ou se puder obter as permissões da função), você poderia adivinhar quais acessos extras o banco de dados possui.
Agora, para ler um arquivo dentro de um bucket, você precisa saber o caminho completo. Você pode lê-lo com:
Se você tivesse credenciais AWS brutas você também poderia usá-las para acessar dados do S3 com:
O Postgresql não precisa alterar nenhuma variável do grupo de parâmetros para poder acessar o S3.
Mysql (Aurora)
Dentro de um mysql, se você executar a consulta SELECT User, Host FROM mysql.user;
e houver um usuário chamado rdsadmin
, você pode assumir que está dentro de um banco de dados AWS RDS mysql.
Dentro do mysql, execute show variables;
e se as variáveis como aws_default_s3_role
, aurora_load_from_s3_role
, aurora_select_into_s3_role
, tiverem valores, você pode assumir que o banco de dados está preparado para acessar dados do S3.
Além disso, se você tiver permissões para executar aws rds describe-db-clusters
você pode verificar se o cluster tem algum papel associado, o que geralmente significa acesso aos serviços da AWS).
Agora, para ler um arquivo dentro de um bucket você precisa saber o caminho completo. Você pode lê-lo com:
rds:AddRoleToDBCluster
, iam:PassRole
rds:AddRoleToDBCluster
, iam:PassRole
Um atacante com as permissões rds:AddRoleToDBCluster
e iam:PassRole
pode adicionar uma função especificada a uma instância RDS existente. Isso poderia permitir que o atacante acesse dados sensíveis ou modifique os dados dentro da instância.
Impacto Potencial: Acesso a dados sensíveis ou modificações não autorizadas nos dados na instância RDS. Note que alguns bancos de dados requerem configurações adicionais, como o Mysql, que precisa especificar o ARN da função nos grupos de parâmetros também.
rds:CreateDBInstance
rds:CreateDBInstance
Apenas com essa permissão, um atacante poderia criar uma nova instância dentro de um cluster que já existe e tem uma função IAM anexada. Ele não poderá alterar a senha do usuário mestre, mas pode expor a nova instância do banco de dados à internet:
rds:CreateDBInstance
, iam:PassRole
rds:CreateDBInstance
, iam:PassRole
TODO: Test
Um atacante com as permissões rds:CreateDBInstance
e iam:PassRole
pode criar uma nova instância RDS com uma função especificada anexada. O atacante pode então potencialmente acessar dados sensíveis ou modificar os dados dentro da instância.
Alguns requisitos da função/perfil de instância para anexar (de aqui):
O perfil deve existir em sua conta.
O perfil deve ter uma função IAM que a Amazon EC2 tem permissão para assumir.
O nome do perfil da instância e o nome da função IAM associada devem começar com o prefixo
AWSRDSCustom
.
Impacto Potencial: Acesso a dados sensíveis ou modificações não autorizadas nos dados na instância RDS.
rds:AddRoleToDBInstance
, iam:PassRole
rds:AddRoleToDBInstance
, iam:PassRole
Um atacante com as permissões rds:AddRoleToDBInstance
e iam:PassRole
pode adicionar uma função especificada a uma instância RDS existente. Isso poderia permitir que o atacante acesse dados sensíveis ou modifique os dados dentro da instância.
A instância do banco de dados deve estar fora de um cluster para isso.
Impacto Potencial: Acesso a dados sensíveis ou modificações não autorizadas nos dados na instância RDS.
Última actualización