0x1前言
在打野的时候意外发现了一个站点存在spring boot信息泄露,之前就有看到一些文章可以直接rce啥的,今天刚好试试。通过敏感信息发现存在accesskey泄露,就想直接通过解密,获取敏感信息,接管云平台。
首先说下这个漏洞的产生。主要是因为程序员开发时没有意识到暴露路由可能会造成安全风险,或者没有按照标准流程开发,忘记上线时需要修改/切换生产环境的配置。我们是可以通过访问/v2/api-docs和/swagger-ui.html去验证是否存在的。
0x2漏洞利用
本次我们想获取/actuator/env里面的明文信息,那么有三种方法可以获取。
第一种:通过/jolokia接口获取明文
利用条件:
1. 目标网站存在 /jolokia 或 /actuator/jolokia 接口
2. 目标使用了 jolokia-core 依赖(版本要求暂未知)
第二种:通过/env接口发送明文到你vps上
1. 可以 GET 请求目标网站的 /env
2. 可以 POST 请求目标网站的 /env
3. 可以 POST 请求目标网站的 /refresh 接口刷新配置(存在 spring-boot-starter-actuator依赖)
4. 目标使用了 spring-cloud-starter-netflix-eureka-client 依赖
5. 目标可以请求攻击者的服务器(请求可出外网)
第三种:和第二种差不多,只是方式不一样
1. 通过 POST /env 设置属性触发目标对外网指定地址发起任意 http 请求
2. 目标可以请求攻击者的服务器(请求可出外网)
第四种:通过/heapdump下载到本地解密
1、可正常 GET 请求目标 /heapdump 或 /actuator/heapdump 接口
而我这边采用第四种方法去获取。先下载一个heapdump文件。
其实我看了好多篇文章,使用jvisualvm.exe尝试去解开heapdump,但是都无法正常获取,可能也是我操作有问题,后续使用Eclipse Memory Analyzer,完美解决。
使用Eclipse Memory Analyzer去查询对应的字段:
select * from java.util.LinkedHashMap $Entry x WHERE (toString(x.key).contains("accessKeySecret"))
注意:这边默认是不支持模糊查询的,必须字段完全匹配才能查询到字段。如仅输入accessKey是查询不到accessKeySecret的字段值的。
0x3接管云平台
成功获取accessKeySecret和accessKeyId后,接下来我们就可以使用cf进行接管云平台了。
链接:https://github.com/teamssix/cf
使用cf config配置accessKeySecret和accessKeyId:
配置完直接一键接管:cf alibaba console
这边会生成地址和账号密码,拿去登录即可获取云平台账号权限:
这边可以看到,他是有5台服务器实例的,直接获取5台服务器权限。
0x4结尾
其实我之前不只尝试了第四种,而是被迫使用第四种方式获取明文信息。尝试前面三种,都是以500报错结束,具体也不知道是什么原因,有大佬知道的可以教一下。
本文其实只是想让大家了解一下一些漏洞和一些信息泄露的用法,其实很多东西都是没有含金量的,说破不值钱。自己最近接触了很多刚开始学习安全的人,都不知道从何入手。对于刚刚开始学习的人,个人建议可以多看看漏洞原理和别人的文章,从中吸取经验和渗透思路,很多实力其实都是经验累积出来的。可能有时候看到别人文章,会觉得就是一帆风顺的,很简单,但是其实很多人只是没把自己走了多少弯路,踩了多少坑说出来罢了。本人也只是刚开始摸索的小白,本身学习是学无止境的,纯靠兴趣去驱动。
本文参考:https://github.com/LandGrey/SpringBootVulExploit
本文作者:合天网安实验室
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/198838.html