实战|由actuator/health泄露导致的RCE

作者:小乳酸,转载于公众号网络安全之旅。

0x01 前言

现在spingboot的站点越来越多,在测试spingBoot未授权时,百分之九十的人看到只有actuator/health和actuator/info时,都会视若无睹。然而在一次日常漏洞挖掘过程中,我看到了不一样的actuator/health泄露,进一步拿下了服务器权限。

0x02 漏洞背景

一次众测活动,授权对目标子域进行渗透,我们称目标为target.com。

0x03 漏洞挖掘过程

使用theHarvester对其进行子域名收集,发现了一个后台登陆的系统,称它为qwq.target.com,指纹为spingboot。登录抓包,抓取登录的url,url为https://qwq.target.com/common/login。使用dirsearch对其接口进行目录探测,字典为spingboot专用字典。发现actuator/health和actuator/info对外暴露。大多数的actuator/health为下图内容:

《实战|由actuator/health泄露导致的RCE》
然而这次的actuator/health为下图所示:

《实战|由actuator/health泄露导致的RCE》
关注一下services下面的十四个参数,通过观察,我从这十四个参数中发现common,没错,登录的接口恰好就是这个参数。
OK,奇怪的想法诞生了,将这十四个参数构造成字典,使用Wfuzz对https://qwq.target.com/FUZZ/actuator/env进行探测,庆幸的是在message-api/actuator/env中返回了200状态码。至此,spingboot未授权已经可以提交报告了。
然而在后续的渗透中,在使用burp对https://qwq.target.com/common/进行目录探测时,发现logout返回报文中,发现了rememberMe=deleteMe字段。没错,这个系统竟然是shiro框架。
下载heapdump文件进行分析,我们使用jvisualvm进行分析,将下载heapdump文件导入到jvisualvm,搜索字段rememberme。

《实战|由actuator/health泄露导致的RCE》

我们得到了一串数字,使用脚本将其转换为明文key。
《实战|由actuator/health泄露导致的RCE》
成功命令执行。
《实战|由actuator/health泄露导致的RCE》

0x04 厂商反馈

这个漏洞也获得了项目的最高奖金,但是这个思路为我在日后的漏洞挖掘中提供了不少灵感。
《实战|由actuator/health泄露导致的RCE》

0x05 总结

1、发现与往常不一样的点要格外关注。
2、指纹识别最好能带上目录。
3、多观察,多尝试。

点赞