AWS - RDS Privesc
Last updated
Last updated
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
有关 RDS 的更多信息,请查看:
AWS - Relational Database (RDS) Enumrds:ModifyDBInstance
拥有该权限的攻击者可以修改主用户的密码,以及数据库内的登录:
您需要能够联系数据库(它们通常仅在内部网络中可访问)。
潜在影响: 在数据库中查找敏感信息。
根据文档,具有此权限的用户可以连接到数据库实例。
如果运行**SELECT datname FROM pg_database;
时发现名为rdsadmin
的数据库,您就知道您在AWS postgresql 数据库**中。
首先,您可以检查此数据库是否已用于访问任何其他 AWS 服务。您可以通过查看已安装的扩展来检查这一点:
如果你发现类似 aws_s3
的东西,你可以假设这个数据库对 S3 有某种访问权限(还有其他扩展,如 aws_ml
和 aws_lambda
)。
此外,如果你有权限运行 aws rds describe-db-clusters
,你可以在 AssociatedRoles
字段中查看 集群是否附加了任何 IAM 角色。如果有,你可以假设这个数据库是 为访问其他 AWS 服务而准备的。根据 角色的名称(或者如果你能获取 角色的权限),你可以 猜测 数据库具有的额外访问权限。
现在,要 读取存储桶中的文件,你需要知道完整路径。你可以使用以下命令读取它:
如果你拥有原始 AWS 凭证,你也可以使用它们访问 S3 数据,方法是:
Postgresql 不需要更改任何参数组变量 就可以访问 S3。
在 mysql 中,如果你运行查询 SELECT User, Host FROM mysql.user;
并且有一个用户叫 rdsadmin
,你可以假设你在一个 AWS RDS mysql 数据库 中。
在 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: 测试
拥有权限 rds:CreateDBInstance
和 iam:PassRole
的攻击者可以 创建一个附加指定角色的新 RDS 实例。攻击者随后可能 访问敏感数据 或修改实例中的数据。
附加角色/实例配置文件的一些要求(来自 这里):
配置文件必须在您的账户中存在。
配置文件必须有一个 IAM 角色,Amazon EC2 有权限假设。
实例配置文件名称和关联的 IAM 角色名称必须以前缀 AWSRDSCustom
开头。
潜在影响:访问敏感数据或对RDS实例中的数据进行未经授权的修改。
rds:AddRoleToDBInstance
, iam:PassRole
拥有权限 rds:AddRoleToDBInstance
和 iam:PassRole
的攻击者可以 将指定角色添加到现有的RDS实例。这可能允许攻击者 访问敏感数据 或修改实例中的数据。
DB实例必须位于集群之外
潜在影响:访问RDS实例中的敏感数据或对数据的未经授权的修改。
学习和实践AWS黑客技术:HackTricks培训AWS红队专家(ARTE) 学习和实践GCP黑客技术:HackTricks培训GCP红队专家(GRTE)