Spring Boot Actuator 未授权访问远程代码执行

1.漏洞描述

Actuator是Spring Boot提供的服务监控和管理中间件,默认配置会出现接口未授权访问,部分接口会泄露网站流量信息和内存信息等,使用Jolokia库特性甚至可以远程执行任意代码,获取服务器权限。

2.识别springboot

2.1 报错页面

Spring Boot Actuator 未授权访问远程代码执行_第1张图片

2.2 icon识别

springboot 站点默认icon图标为小叶子,如下图:

Spring Boot Actuator 未授权访问远程代码执行_第2张图片

3.利用方式

3.1 未授权路径

1.x版本直接访问 例如:http://192.168.1.1/env

2.x版本是在/actuator/目录下,例如http://192.168.1.1/actuator/env

Spring Boot Actuator 未授权访问远程代码执行_第3张图片

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

Spring Boot Actuator 未授权访问远程代码执行_第4张图片

 

3.2.3 通过对转储文件进行提取,检索password关键词,发现Redis登录方式

3.2.4 使用RESP.app成功登录至Redis数据库中

Spring Boot Actuator 未授权访问远程代码执行_第5张图片

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

你可能感兴趣的:(网络安全,spring,boot,web安全)