Spring Boot Actuator的Env端点存在本地文件包含(LFI)漏洞CVE-2020-5421

文章目录

  • 0.前言
  • 1.参考文档
  • 2.基础介绍
  • 3.漏洞利用原理
  • 3.解决方案
    • 1. 升级Spring Boot版本
    • 2. 限制端点的访问
    • 3. 禁用环境端点
    • 4. 不公开敏感的Actuator端点
    • 5. 开启安全审计

在这里插入图片描述

0.前言

背景: Spring Boot Actuator的Env端点存在本地文件包含(LFI)漏洞CVE-2020-5421。被扫描到需要解决。

Spring Boot Actuator是Spring Boot的一个子项目,主要用于监控和管理Spring Boot应用程序。在开发或测试环境中,开发者通常会开启所有Actuator的端点,包括/env端点,以便于对应用程序进行诊断和调试。但在生产环境中,这种配置可能会导致安全问题。

1.参考文档

  1. Spring Boot官方网站: https://spring.io/projects/spring-boot
  2. Spring Boot GitHub仓库: https://github.com/spring-projects/spring-boot
  3. Spring官方博客: https://spring.io/blog

这个问题被记录在Spring
Boot的GitHub仓库中,具体的漏洞描述和解决办法可以在这个链接中找到:https://github.com/spring-projects/spring-boot/issues/。

另外,Pivotal也在他们的官方博客中发布了一个公告,解释了这个问题的严重性,以及他们如何处理这个问题:https://spring.io/blog/。

注意: 以上链接可能会随着时间推移而更新或改变 如果连接变了可以评论区留言谢谢。

2.基础介绍

CVE-2020-5421就是一个影响Spring Boot Actuator的安全漏洞。这个漏洞主要涉及到环境(Env)端点。这个端点本来是用来获取应用程序运行环境的详细信息的,但由于漏洞的存在,攻击者可以通过特制的请求,让/env端点返回服务器上任意文件的内容,这就是所谓的本地文件包含(LFI)漏洞。

这个LFI漏洞的存在,可能使的应用程序面临严重的安全风险。攻击者可以通过这个漏洞获取到服务器上的任何文件,包括应用程序的配置文件,数据库配置信息,甚至是系统的敏感文件如/etc/passwd。这可能会导致的应用程序的信息泄露,甚至是被完全控制。

3.漏洞利用原理

在Spring Boot Actuator的/env端点,开发者可以获取到应用程序运行环境的详细信息。然而,由于一项设计缺陷,攻击者可以通过发送特制的请求,让/env端点返回服务器上任意文件的内容。这就是所谓的本地文件包含(LFI)漏洞。

具体的利用方法是,攻击者可以发送一个POST请求到/env端点,如POST /actuator/env,然后在请求体中设置name参数为[systemProperties][java.home]value参数为任意文件的路径,如../../../etc/passwd

然后再发送一次GET请求到/env端点,读取这个文件的内容。由于/env端点会返回java.home系统属性的值,而这个值已经被攻击者修改为任意文件的路径,所以,服务器会返回这个文件的内容。

所以,这个漏洞的原理就是,攻击者通过修改系统属性java.home的值,来读取服务器上任意文件的内容。

这种攻击方法需要攻击者能够访问到的Actuator端点。在生产环境中,应该尽量限制Actuator端点的访问权限,或者完全禁用它。

3.解决方案

要解决这个本地文件包含(LFI)漏洞,可以采取以下的解决方案:

1. 升级Spring Boot版本

Pivotal(Spring Boot的开发商)已经在更高版本的Spring Boot中修复了这个漏洞。所以,可以通过升级的Spring Boot版本来解决这个问题。具体来说,应该至少升级到2.3.9.RELEASE、2.4.4或更高版本。官方地址https://spring.io/projects/spring-boot/

2. 限制端点的访问

在生产环境中,应该尽量限制Actuator端点的访问权限。可以通过Spring Security来实现这一点。只有经过身份验证的用户,才能访问Actuator端点。
要使用Spring Security来限制Actuator端点的访问,首先需要在的项目中引入Spring Security的依赖。如果使用的是Maven构建工具,可以在的pom.xml文件中添加如下的依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
</dependency>

然后,需要创建一个配置类,该类扩展了WebSecurityConfigurerAdapter,并覆盖了configure(HttpSecurity http)方法,如下:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests().anyRequest().authenticated().and().httpBasic();}}

在这个配置中,首先使用requestMatcher(EndpointRequest.toAnyEndpoint())来指定这个安全配置只应用于Actuator端点的请求。然后,使用authorizeRequests().anyRequest().authenticated()来要求所有的请求都必须经过身份验证。最后,使用httpBasic()来启用HTTP基本认证。

然后,需要在的application.propertiesapplication.yml中设置一个用户名和密码,这个用户名和密码将用于身份验证。例如:

spring.security.user.name=admin
spring.security.user.password=secret

这样,只有知道用户名和密码的人,才能访问的Actuator端点。

3. 禁用环境端点

如果不需要环境端点,也可以选择禁用它。可以在的application.propertiesapplication.yml中设置management.endpoint.env.enabled=false来禁用环境端点。

4. 不公开敏感的Actuator端点

默认情况下,Spring Boot 只会暴露少数几个不敏感的Actuator端点,比如“health”和“info”。应该确保这个设置没有被修改,避免公开其他可能带来安全隐患的端点。

5. 开启安全审计

如果公司的devops 平台做的好的话,可以在发布扫描环节扫描这些。或者通过开启安全审计,可以记录谁访问了哪些端点,何时访问的,访问了哪些数据。这对于检测和防止潜在的攻击非常有用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/60374.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C51基础实验 LED闪烁】

51单片机项目基础篇 LED闪烁1、硬件电路设计和原理分析2、软件设计2.1、功能实现&#xff1a;LED闪烁2.2、通过 KEIL 软件自带仿真查看延时时间 4、编译结果5、结束语 LED闪烁 前言&#xff1a; 前一篇学会了点亮一颗LED以及驱动原理&#xff0c;那么这篇紧接着就来解锁LED的新…

【业务功能篇90】微服务-springcloud-检索服务-ElasticSearch实战运用-DSL语句

商城检索服务 1.检索页面的搭建 商品检索页面我们放在search服务中处理&#xff0c;首页我们需要在mall-search服务中支持Thymeleaf。添加对应的依赖 <!-- 添加Thymeleaf的依赖 --><dependency><groupId>org.springframework.boot</groupId><artifa…

(笔记二)利用opencv调用鼠标事件在图像上绘制图形

目录 &#xff08;1&#xff09;查看cv2所支持的鼠标事件&#xff08;2&#xff09;通过鼠标事件在图像上做标记&#xff08;3&#xff09;高级操作&#xff1a;通过移动鼠标在图像绘制图形、曲线 该功能主要创建一个鼠标事件发生时执行的回调函数。鼠标事件可以是任何与鼠标有…

根据身高重建队列【贪心算法】

根据身高重建队列 假设有打乱顺序的一群人站成一个队列&#xff0c;数组 people 表示队列中一些人的属性&#xff08;不一定按顺序&#xff09;。每个 people[i] [hi, ki] 表示第 i 个人的身高为 hi &#xff0c;前面 正好 有 ki 个身高大于或等于 hi 的人。 请你重新构造并返…

SQL注入漏洞复现(CVE-2017-8917)

文章目录 搭建环境启动环境漏洞复现报错注入使用sqlmap 前提条件&#xff1a; 1.安装docker docker pull medicean/vulapps:j_joomla_22.安装docker-compose docker run -d -p 8000:80 medicean/vulapps:j_joomla_23.下载vulhub Docker Compose是 docker 提供的一个命令行工具&…

Mysql中九种索引失效场景分析

表数据&#xff1a; 索引情况&#xff1a; 其中a是主键&#xff0c;对应主键索引&#xff0c;bcd三个字段组成联合索引&#xff0c;e字段为一个索引 情况一&#xff1a;不符合最左匹配原则 去掉b1的条件后就不符合最左匹配原则了&#xff0c;导致索引失效 情况二&#xff…

go学习-指针 标识符

指针&#xff0c;以及标识符 1.指针 &#xff08;1&#xff09;.基本介绍 1&#xff09;基本数据类型&#xff0c;变量存的值&#xff0c;也叫值类型 2&#xff09;获取变量的地址用&&#xff0c;比如 var num int ,获取num的地址&#xff1a;&num 3)指针类型&…

小程序隐私保护授权处理方式之弹窗组件

欢迎点击关注-前端面试进阶指南&#xff1a;前端登顶之巅-最全面的前端知识点梳理总结 *分享一个使用比较久的&#x1fa9c; 小程序隐私保护授权弹窗组件 调用wx.getUserProfile进行授权时&#xff0c;返回错误信息&#xff1a;{errMsg: “getUserProfile:fail api scope is…

智慧排水监测系统:创新监测技术保障排水系统安全运行

城市排水系统作为城市基础设施的重要组成部分&#xff0c;其安全运行直接关系到环境卫生、居民生活和城市发展。为了确保排水系统的顺畅运行&#xff0c;传统的监测手段已经不能满足日益复杂的城市排水需求&#xff0c;物联网技术的快速发展为排水系统的监测带来了巨大的便利&a…

科普宣传片制作思路

科普宣传片可以针对不同的科学领域和主题&#xff0c;包括自然科学、生命科学、物理学、化学、天文学、地球科学、环境保护等&#xff0c;提供具体的案例、实验和研究成果&#xff0c;帮助观众更好地理解和应用科学知识。科普宣传片的制作思路可以根据具体的科普主题和目标观众…

基于ssm vue智慧城市实验室主页系统源码和论文

基于ssm vue智慧城市实验室主页系统源码和论文059 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方…

基于协同滤波推荐算法的图书管理系统

目录 一、项目概述 二、技术框架 三、功能设计 四、数据库设计 五、项目截图 六、技术文档 一、项目概述 Hi&#xff0c;大家好&#xff0c;今天分享的项目是《基于协同滤波推荐算法的图书管理系统》&#xff0c;对用户登录注册、图书推荐、图书管理、用户信息进行管理&…

Vue3响应式原理 私

响应式的本质&#xff1a;当数据变化后会自动执行某个函数映射到组件&#xff0c;自动触发组件的重新渲染。 响应式的实现方式就是劫持数据&#xff0c;Vue3的reactive就是通过Proxy劫持数据&#xff0c;由于劫持的是整个对象&#xff0c;所以可以检测到任何对象的修改&#xf…

版本控制 Git工具的使用

版本控制的概念&#xff1a; 版本控制&#xff08;Revision control&#xff09;是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史&#xff0c;方便查看更改历史记录&#xff0c;备份以便恢复以前的版本的软件工程技术。简单来说就是用于管理多人协同开发…

C语言每日一练------(Day3)

本专栏为c语言练习专栏&#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新&#xff0c;通过每天练习&#xff0c;进一步对c语言的重难点知识进行更深入的学习。 今天练习题的关键字&#xff1a; 尼科彻斯定理 等差数列 &#x1f493;博主csdn个人主页&#xff1a…

2023_Spark_实验一:Windows中基础环境安装

Ⅰ、WINDOWS中安装JDK1.8 一、下载安装包 链接&#xff1a;百度网盘 请输入提取码 所在文件夹&#xff1a;根目录或者大数据必备工具--》开发工具(前端后端)--》后端 下载文件名称&#xff1a;jdk-8u191-windows-x64.exe 二、安装JDK 1.现在转到下载的exe文件可用的文件夹&…

【Vue3+Ts】项目启动准备和配置项目代码规范和css样式的重置

项目启动准备 创建项目&#xff08; 使用Vite 构建工具创建项目模板&#xff09;目录介绍插件安装创建别名编译说明项目配置配置icon和标题配置项目别名配置ts.config.json检测vscode的插件是否配置 配置项目代码规范集成editorconfig配置prettier工具库ESLint检测配置 CSS样式…

transformer实现词性标注

1、self-attention 1.1、self-attention结构图 上图是 Self-Attention 的结构&#xff0c;在计算的时候需要用到矩阵 Q(查询), K(键值), V(值)。在实际中&#xff0c;Self-Attention 接收的是输入(单词的表示向量 x组成的矩阵 X) 或者上一个 Encoder block 的输出。而 Q, K, V…

Hive-启动与操作(2)

&#x1f947;&#x1f947;【大数据学习记录篇】-持续更新中~&#x1f947;&#x1f947; 个人主页&#xff1a;beixi 本文章收录于专栏&#xff08;点击传送&#xff09;&#xff1a;【大数据学习】 &#x1f493;&#x1f493;持续更新中&#xff0c;感谢各位前辈朋友们支持…

测试左移——代码审计SonarQube 平台搭建

一、sonarqube代码分析技术体系 1、代码分析工具 IDE 辅助功能 xcode、android studio阿里巴巴 java 开发手册 ide 插件支持 独立的静态分析工具 spotbugs、findbugs、androidlint、scan-build、Checkstyle、FindSecBugspmd 阿里巴巴 java 开发手册 pmd 插件 综合性的代码…