type
status
date
slug
summary
tags
category
icon
password
一、环境搭建
环境需要安装Dockers引擎和Docker-compose,参考Centos7的安装
然后按着安装说明进行安装即可
1.踩坑
出现Zone.NotOnSale

使用如下命令去查询可用地区,并使用

即使使用回显结果中的地区也总是无法创建靶场,依旧是会报出Zone.NotOnSale的错误代码,提了issue后得到的回复是得需要修改配置文件。具体如下:
具体修改如下,将上述文件中的instance_type和system_disk_size做修改,并添加system_disk_category的键和值。

修改完即可成功搭建靶场。
出现EntityAlreadyExists.Policy
看提示可以知道存在名为AdministratorAccess的权限策略阻碍了靶场的搭建

可以通过OpenAPI去删除相关的策略

即可搭建靶场
其它
在几番折腾后,可能存在其他的配置没删干净,导致靶场无法搭建,可以按下面步骤进行清理。
- 及时靶场搭建失败也要使用如下命令销毁搭建的实例
- 删除存在的RAM角色

之后即可再次尝试靶场的搭建
二、攻防示例
1、元数据泄露
SSRF会导致元数据的获取

2、凭据泄露
云场景下的凭证泄露可以分成以下几种:
- 控制台账号密码泄露,例如登录控制台的账号密码
- 临时凭证泄露
- 访问密钥泄露,即 AccessKeyId、SecretAccessKey 泄露
- 实例登录凭证泄露,例如 AWS 在创建 EC2 生成的证书文件遭到泄露
对于这类凭证信息的收集,一般可以通过以下几种方法进行收集:
- Github 敏感信息搜索
- 反编译目标 APK、小程序
- 目标网站源代码泄露
3、任意命令执行(需要ak、sk)
首先使用DescribeInstances参数获得ECS的所有信息
可以看到有一个InstanceId参数

将InstanceId参数代入下面的命令即可再ECS上执行命令

再到ECS实例中去观察,即可发现命令已经执行成功

反弹shell
在新服务器中开启监听

执行命令进行反弹

4、控制台接管(需要ak、sk)
CreateUser接口
调用CreateUser接口创建一个RAM用户

CreateLoginProfile接口
调用CreateLoginProfile接口为创建好的RAM用户启动Web控制台登录

AttachPolicyToUser
调用AttachPolicyToUser接口为指定用户添加权限策略

GetAccountAlias接口
首先通过调用GetAccountAlias接口查看账号别名

使用RAM账号登录阿里云控制台

选择通行密钥再次输入一遍密码即可实现控制台的登录


5、恶意镜像
获取控制台权限后,可导入存在后门的镜像,下次目标用户在选用镜像创建实例的时候,就会触发镜像中植入的恶意代码了。

6、RAM配置不当导致的控制台接管(需要能访问到ram/)
如果ECS存在安全漏洞的同时,还存在RAM角色的授权,那很可能会导致该用户的临时凭证泄露
在能访问ram/的前提下,当访问
/latest/meta-data/ram/
接口时,如果有security-credentials/
的响应,就说明改ECS存在RAM角色的授权。
在不知道ram角色名的情况下,如果请求/ram/security-credentials/目录,则会返回RAM角色名

此时我们再请求role-serve即可获得该RAM的临时凭证

接下来就是配置临时密钥

创建RAM角色,配置登陆密码,并授予AdministratorAccess权限策略

登录控制台

如果我们获取到的临时凭据在权限很小的时候,是无法创建RAM用户登录控制台的
三、权限维持
1、云函数
通过云函数的方式创建后门
2、后门镜像
获取控制台权限后,可导入存在后门的镜像,下次目标用户在选用镜像创建实例的时候,就会触发镜像中植入的恶意代码了。

3、创建访问密钥
即:
四、防御绕过
正常我们是没有办法直接结束进程阿里云的云盾的(ROOT用户也不行)

如果我们强制Kill就会收到告警(实测并未收到)
可以在云安全中心把所有能关的监控都关了,可以最大可能的杜绝告警信息的传递

五、信息搜集
1、元数据
在阿里云ECS常见下可以直接请求:http://100.100.100.200/latest/meta-data/ ,来获取元数据

有时候我们请求http://100.100.100.200/latest/meta-data/会发现返回404,这是因为没有配置Ram用户
2、子网信息
在云场景下,可以直接通过控制台看到目标的网段情况。
七、横向移动
1、访问凭证
当拿到目标的临时访问凭证或者访问密钥后,可以通过命令行或者也可以通过控制台的方式进行内网横向移动。