小迪安全v2023学习笔记(九十四讲)—— 云服务篇弹性计算云数据库实例元数据控制角色AK控制台接管
文章目录
- 前记
- 云上攻防——第九十四天
- 云服务篇&弹性计算&云数据库&实例元数据&控制角色&AK控制台接管
- 前置知识
- 元数据
- 各大云厂商元数据地址
- 多身份云访问控制
- RAM与元数据的关系
- 云服务 - 弹性计算-元数据&SSRF&AK
- 利用条件
- 案例演示 - 获取某服务器权限后横向移动
- SSRF
- 云服务 - 云数据库-外部连接&权限提升
- 云数据库架构
- 直接连接
- 间接连接
- 云上攻防 - 如何利用SSRF直接打穿云上内网
- 利用SSRF发现打点阿里云
- 2. 直接利用SSRF漏洞获取目标阿里云的元数据地址
- 3. 直接上CF利用框架 冲起来
- 4. 存储桶下载后里面翻出另一个AK信息,发现这个AK还具有ECS的权限
- 5. 直接使用CF拿下一键接管控制台
前记
- 今天是学习小迪安全的第九十四天,本节课是云上攻防的第二讲,内容主要是关于元数据以及云数据库的
- 然后以理解思路,扩大自己的攻击面为主,主要了解手法
云上攻防——第九十四天
云服务篇&弹性计算&云数据库&实例元数据&控制角色&AK控制台接管
前置知识
元数据
- 实例元数据(metadata)包含了弹性计算云服务器实例在阿里云系统中的信息,您可以在运行中的实例内方便地查看实例元数据,并基于实例元数据配置或管理实例。
- 基本信息:实例 ID、IP 地址、网卡 MAC 地址、操作系统类型等信息。实例标识包括实例标识文档和实例标识签名,所有信息均实时生成,常用于快速辨别实例身份。
各大云厂商元数据地址
- 各个厂商的元数据地址都能够在他们的官方文档中找到,然后需要通过该厂商的机子访问才能获取相应数据
阿里云元数据地址:http://100.100.100.200/
腾讯云元数据地址:http://metadata.tencentyun.com/
华为云元数据地址:http://169.254.169.254/
亚马云元数据地址:http://169.254.169.254/
微软云元数据地址:http://169.254.169.254/
谷歌云元数据地址:http://metadata.google.internal/
多身份云访问控制
-
这里我们以阿里云的RAM访问控制为例,讲解一下这是个什么东西
-
其实我们可以把他类比成一个公司的职员,公司的核心是老板,然后他可以指定很多人,让每个人管理某个/某几个具体的事物。比如张三负责人事,那张三拥有招聘、开除、查看人事档案的权利;李四负责财务,李四就拥有管理公司财政的权利等等
-
就是为了安全,将权限划分出去,让不同的用户管理不同的事,并且互不干涉
-
创建这个用户之后,我们就可以通过他的账号密码,或者AccessKey登入阿里云账户
RAM与元数据的关系
- 那么我们为什么要讲这个东西呢,因为他和权限相关,也就是我们攻击一个网站的最终目的——拿shell,只要我们能够获取某个RAM用户的凭证信息,那不就拿到shell了吗?
- 而这个RAM用户的凭证信息,他就存放在元数据里面,比如这里是阿里云,我们就可以通过访问:
http://100.100.100.200/latest/meta-data/ram/security-credentials/<RAM用户名>
拿到他的信息 - 详细看官网介绍:通过元数据服务从ECS实例内部获取实例属性等信息_云服务器 ECS(ECS)-阿里云帮助中心
云服务 - 弹性计算-元数据&SSRF&AK
利用条件
- 我们要利用这个元数据拿取凭证信息,有三个条件:
- 元数据通道开启(默认开启)
- 用户配置了访问控制角色,并绑定实例
- 能够直接/间接访问到上述元数据地址
- 直接访问:获取某台云服务器权限,能够执行命令
- 间接访问:利用SSRF漏洞读取云服务器元数据
- 其实基本就是要满足二、三两个条件,然后我们进行案例演示
案例演示 - 获取某服务器权限后横向移动
-
假设我们已经获取到了某台云服务器的权限,并且这个实例满足上面的所有要求:
-
然后就一步步执行如下命令获取关键信息即可:
# 获取所有元数据列表
curl http://100.100.100.200/latest/meta-data/# 获取RAM用户名
curl http://100.100.100.200/latest/meta-data/ram/security-credentials/# 获取具体RAM用户临时凭证
curl http://100.100.100.200/latest/meta-data/ram/security-credentials/<RAM用户名>
- 上面就是我们获取到的
test
用户的临时身份凭证,然后我们就可以使用CF工具去进行AK横向移动,这个工具已经删库了,但是狐狸工具箱里面还有 - 他的利用手册:https://wiki.teamssix.com/CF/
- 先配置RAM用户凭证:
.\cf.exe config
- 然后直接一键接管当前用户的控制台:
.\cf.exe alibaba console
- 我们就可以通过这个用户直接登录控制台,接管整个用户,当然这里也可以一键列出当前访问凭证的云服务资源:
.\cf.exe alibaba ecs ls
- 也可以一键命令执行:
.\cf.exe alibaba ecs exec -b
- 但是使用这个命令他会发送短信告警,然后的话这里扫描或者执行命令成功与否的前提是当前的RAM用户有对应的权限,如果没有那也是没用的
- 如果能够执行命令,那我们就直接通过了当前这台云主机接管了整个云服务,所以危害还是比较大的
SSRF
-
当然在实战中的话,直接拿到某台云服务器的权限是有点不现实的,因为目前云服务在架构的安全性上都非常高,那这时候我们更多的利用手段是通过SSRF去让云服务器自己访问他的内网——即访问元数据地址
-
假设我们在云服务器上搭建了这样一个网站:
-
直接访问
www.baidu.com
能够成功跳转,说明可能存在SSRF,然后我们先要确定他是不是云服务器,属于哪个云厂商,查询他的IP/域名:
-
比如这里我的服务器就是阿里云的服务器,然后我们就可以尝试访问阿里云的元数据:
-
也确实能够访问到,之后我们就直接用CF工具利用就行了,这里如果他没有回显,那我们的解决方式之前也讲过,就不再赘述
云服务 - 云数据库-外部连接&权限提升
云数据库架构
-
对于云数据库RDS,我这里给一张阿里云的架构图来看看他的安全性如何:
-
你可以看到RDS数据库的位置在安全隔离的内网环境,通过专有网络VPC去访问,也就是说我们无法通过外网去直接连接访问,即使某台云服务器被攻陷,如果它不是与数据库处于同一内网VPC,那也无法访问到该数据库
直接连接
-
但是,我们说没有绝对的安全,最大的漏洞其实就是人,这里我们是可以设置云数据库在外网访问的:
-
然后通过Navicat连接:
-
账号密码可以通过在配置文件中查找,或者直接尝试爆破,有的也可能出现在OSS中
间接连接
- 如果它没有开通外网连接,也没有开通外网白名单,只允许特定的VPC访问,那我们就只能去尝试利用某台云服务器作为跳板机去连接了
云上攻防 - 如何利用SSRF直接打穿云上内网
- 然后这里也是,小迪拿了一个真实案例作为演示,学习人家是怎么利用SSRF漏洞打穿云上内网,接管整个云服务器的
利用SSRF发现打点阿里云
-
这里SSRF漏洞的触发点在UEditor编辑器的上传图片功能处,我们尝试让服务器从https://baidu.com?.jpg获取图片:
-
可以看到能够成功获取,可能存在SSRF漏洞
2. 直接利用SSRF漏洞获取目标阿里云的元数据地址
-
编写一个python脚本去通过目标地址获取元数据:
-
这里也是成功获取到RAM用户的临时身份凭证
3. 直接上CF利用框架 冲起来
4. 存储桶下载后里面翻出另一个AK信息,发现这个AK还具有ECS的权限
5. 直接使用CF拿下一键接管控制台