前言:
云平台作为降低企业资源成本的工具,在当今各大公司系统部署场景内已经成为不可或缺的重要组成部分,并且由于各类应用程序需要与其他内外部服务或程序进行通讯而大量使用凭证或密钥,因此在漏洞挖掘过程中经常会遇到一类漏洞:云主机秘钥泄露。此漏洞使攻击者接管云服务器的权限,对内部敏感信息查看或者删除等操作。此篇文章围绕如何发现秘钥泄露、拿到秘钥后如何利用展开。
0X01漏洞概述:(ak、sk拿到后的利用,阿里云、腾讯云。)
云主机通过使用Access
Key Id / Secret Access Key加密的方法来验证某个请求的发送者身份。Access Key
Id(AK)用于标示用户,Secret Access Key(SK)是用户用于加密认证字符串和云厂商用来验证认证字符串的密钥,其中SK必须保密。
云主机接收到用户的请求后,系统将使用AK对应的相同的SK和同样的认证机制生成认证字符串,并与用户请求中包含的认证字符串进行比对。如果认证字符串相同,系统认为用户拥有指定的操作权限,并执行相关操作;如果认证字符串不同,系统将忽略该操作并返回错误码。
AK/SK原理使用对称加解密。
0x02秘钥泄露常见场景
通过上面描述我们知道云主机密钥如果泄露就会导致云主机被控制,危害很大。
在漏洞挖掘过程中常见的泄露场景有以下几种:
1、报错页面或者debug信息调试。
2、GITHUB关键字、FOFA等。
3、网站的配置文件
4、js文件中泄露
5、源码泄露。APK、小程序反编译后全局搜索查询。
6、文件上传、下载的时候也有可能会有泄露,比如上传图片、上传文档等位置。
7、HeapDump文件。
0x03实战举例
案例一:HeapDump文件中的ak\sk泄露
HeapDump文件是JVM虚拟机运行时内存的一个快照,通常用于性能分析等,但是因为其保存了对象、类等相关的信息,如果被泄露也会造成信息泄露。
1、Spring Actuator heapdump文件造成的秘钥泄露。
扫描工具:https://github.com/F6JO/RouteVulScan
解压工具:https://github.com/wyzxxz/heapdump_tool
访问某一网站时进行测试发现存在spring未授权,此时查看是否有heapdump文件,下载解压,全局搜索可发现秘钥泄露。
2、通过暴破路径的方式获取。
在文件存储位置会有一些敏感文件泄露,比如请求下载云服务器上某文件时候抓包分析。可以在请求位置暴破文件名,云服务器会返回带有访问秘钥的敏感文件。
得到文件地址后访问下载,下载后用工具爬取内容。发现泄露ak\sk
工具链接:https://github.com/whwlsfb/JDumpSpider
案例二:Js文件泄露秘钥
使用工具:trufflehog
访问某网站,使用插件trufflehog探测,会在Findings位置显示是否有密钥泄露。(网站采用异步加载也适用)
案例三:小程序上传等功能点泄露。
某小程序打开后在个人中心头像位置
点击头像抓包:
可以看到accesskeyid\acesskeysecret泄露。
渗透测试过程中可以多关注上传图片、下载文件、查看图片等等位置,说不定就有ak\sk泄露。
案例四:配置信息中的ak\sk泄露
常见的nacos后台配置列表,打开示例可以看到一些配置信息,可以看到有ak\sk泄露。
0x04漏洞利用
1、ak\sk接管存储桶。
使用工具或者云主机管理平台可以直接接管存储桶,接管桶后可以对桶内信息进行查看、上传、编辑、删除等操作。
OSS Browser--阿里云官方提供的OSS图形化管理工具
https://github.com/aliyun/oss-browser
可以看到登入存储桶后可以查看、上传、删除、下载桶内文件,造成存储桶接管的危害。
腾讯云云主机接管平台:
https://cosbrowser.cloud.tencent.com/web/bucket
行云管家(支持多家云主机厂商):
可以选不同厂商的云主机导入。
选择主机导入:
通过行云管家接管主机后,不仅可以访问OSS服务,还可以直接重置服务器密码,接管服务器。
可以对主机进行重启、暂停、修改主机信息等操作。
2、拿到ak\sk后可以尝试对主机进行命令执行。
CF 云环境利用框架
https://github.com/teamssix/cf/releases
使用cf查看该主机可做的操作权限,可以看到能执行命令。
cf tencent cvm exec -c whoami等等。
详情参考:https://wiki.teamssix.com/CF/ECS/exec.html
针对阿里云主机rce
工具链接:https://github.com/mrknow001/aliyun-accesskey-Tools
输入ak\sk查询主机,选择主机名填入,查看云助手列表是true或者false,为true可执行命令。