Springboot之Actuator-heapdump漏洞

免责声明:由于传播、利用本文所发布的而造成的任何直接或者间接的后果及损失,均由使用者本人承担

Springboot

​ Spring Boot为了解决Spring Framework的入门难度大、配置繁琐而诞生,简化了Spring框架的配置,达到了快速开发提高效率

Actuator

​ springboot下的一个监控服务,无访问控制的情况下,可以通过HTTP 和 JMX访问,也就意味着存在未授权访问漏洞。在其中,不同的断点对应着不同的目标信息

​ 在渗透测试过程中,对攻击者来着,特别需要留意的几个端点

Endpoint ID Description exploit
/env 主机运行开放的所有服务 根据开发的服务,利用历史披露漏洞
/heapdump 内存转储文件 下载后提取shiroKey、ak/sk、springboot-admin-client账号密码等等
/trace/httptrace 请求追踪信息 cookie/session等会话凭证泄露
/actuator 监控主节点 对端点来说,类似书签管理器
/refresh 刷新配置 触发进程刷新,以此来执行我们传入的命令

补充:在springboot 1.x版本中,直接在上下文路径拼接断点即可访问。但是,到了springboot 2.x版本中,必须加入/actuator,例如

1
2
https://www.example.com/env				//version:1.x
https://www.example.com/actuator/env //version:2.x

heapdump漏洞复现

​ 这里演示heapdump的利用-从内存转储文件中来获取Java 应用程序的内存使用情况。虽然/env下有RCE漏洞,但是有一个Eureka-Client的功能依赖作为前置条件,还需搭配/refresh,没有/refresh,即使有env下的RCE,有Eureka-Client,也不可能利用成功。在实战中,对于笔者来说从没遇到过,反而heapdump 频率确实非常之高。

环境搭建

​ 这里使用的是阿里云spring脚手架:https://start.aliyun.com/

image-20240317154654078

image-20240317154838485

pom.xml

​ 引入actuator的依赖

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
application.properties

​ 配置暴露所有actuator端点

1
management.endpoints.web.exposure.include=*
启动并访问

image-20240317155450633

image-20240317155646582

漏洞利用

​ 解析heapdump有常用的三款工具:MAT、jvisualvm、JDumpSpider,比较推荐JDumpSpider,这里演示后两种

​ 访问

image-20240317155904840

image-20240317160019518

jvisualvm

​ Java VisualVM,简称 JVisualVM,是 JDK 自带的一个图形化工具,用于监控、故障排除和性能调优 Java 应用程序。它位于 JAVA_HOME/bin 目录下,提供了丰富的功能,能够帮助开发人员对 Java 应用程序进行监控和分析。对于我们来说,就是可以直接查看heapdump中的信息。

image-20240317160648167

image-20240317160731842

装入 => 选择heapdump

image-20240317160950829

后续对敏感信息的获取,比如shiro的密钥,ak/sk,Redis的明文密码等等等,都需要使用OQL语法,在oql控制台中进行查询

没装组件,凑个图

image-20240317163759422

JDumpSpider

https://github.com/whwlsfb/JDumpSpider

​ 这个比jvisualvm更人性化一点,毕竟jvisualvm不是为了做渗透的,它自动对敏感信息进行读取,我们就不用再用oql语句查询了

image-20240317164125859

​ 后面的信息就不截图了,总之得到了heapdump可以说目标机器已经被拿下了

end