1.漏洞描述
Actuator是Spring Boot提供的服务监控和管理中间件,默认配置会出现接口未授权访问,部分接口会泄露网站流量信息和内存信息等,使用Jolokia库特性甚至可以远程执行任意代码,获取服务器权限。
2.识别springboot
2.1 报错页面
2.2 icon识别
springboot 站点默认icon图标为小叶子,如下图:
3.利用方式
3.1 未授权路径
1.x版本直接访问 例如:http://192.168.1.1/env
2.x版本是在/actuator/目录下,例如http://192.168.1.1/actuator/env
3.2 漏洞复现
3.2.1 通过访问/actuator/heapdump,直接下载heapdump文件
3.2.2 Heapdump,即堆转储文件,是一个Java进程在某个时间点上的内存快照。HeapDump记录了JVM中堆内存运行的情况,保存了Java对象、类以及线程栈以及本地变量等信息,最重要的是里面可能存有数据库密码信息。
因为heapdump_tool工具需要使用jhat,新版的java中已经移除,我这里用的是JDumpSpider
java -jar .\JDumpSpider-1.0-SNAPSHOT-full.jar .\heapdump
HeapDump敏感信息提取工具1:GitHub - whwlsfb/JDumpSpider: HeapDump敏感信息提取工具https://github.com/whwlsfb/JDumpSpider
HeapDump敏感信息提取工具2:GitHub - wyzxxz/heapdump_tool: heapdump敏感信息查询工具,例如查找 spring heapdump中的密码明文,AK,SK等https://github.com/wyzxxz/heapdump_tool
3.2.3 通过对转储文件进行提取,检索password关键词,发现Redis登录方式
3.2.4 使用RESP.app成功登录至Redis数据库中
4.修复建议
4.1 禁用所有接口,将配置改成:endpoints.enabled = false
4.2 引入spring-boot-starter-security依赖:org.springframework.boot
spring-boot-starter-security
开启security功能,配置访问权限验证,类似配置如下:management.port=8099
management.security.enabled=true
security.user.name=xxxxx
security.user.password=xxxxxx