Spring Boot存在路径遍历漏洞CVE-2021-22118

这篇具有很好参考价值的文章主要介绍了Spring Boot存在路径遍历漏洞CVE-2021-22118。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


Spring Boot存在路径遍历漏洞CVE-2021-22118,Spring Boot 知识集锦,Spring Framework 漏洞解决,spring boot,后端,java

0.前言

背景:Spring Boot存在路径遍历漏洞。CVE-2021-22118:

Spring Boot存在路径遍历漏洞CVE-2021-22118,Spring Boot 知识集锦,Spring Framework 漏洞解决,spring boot,后端,java

官方 issue也有对此的记录,感兴趣可以看下
https://github.com/spring-projects/spring-boot/issues/26627

https://github.com/spring-projects/spring-boot/issues/27543
CVE-2021-22118 是一个在 Spring Boot 中发现的漏洞。该漏洞关系到 Spring Boot 的开发者工具(Devtools)中的远程更新(Remote Update)功能。在某些情况下,攻击者可能会利用这个功能进行目录遍历攻击,从而访问到系统中的敏感文件。

需要注意的是,这个漏洞只会影响到使用了 Spring Boot Devtools 的基于文件系统的应用,而且应用还必须满足以下两个条件之一:

  1. 远程更新功能被开启(spring.devtools.restart.enabled = true)。
  2. 应用使用了默认的 HTTP 更新 URL(spring.devtools.restart.remote-secret)。

如果你的应用满足以上条件,建议尽快进行修复。修复这个漏洞的方法有以下几种:

  1. 将 Spring Boot 升级到 2.3.10.RELEASE 或更高版本。
  2. 将 Spring Boot 升级到 2.4.5 或更高版本。
  3. 将 Spring Boot 升级到 2.5.0 或更高版本。

关于这个漏洞的详细信息,可以参考 Spring 官方的安全通告。
请注意,对于已经在生产环境中运行的应用,修改CORS配置可能会影响到正常的功能。因此,在实施这个修复之前,应该先进行充分的测试。

1.参考文档

CVE 官方网站 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-22118

2.基础介绍

CVE-2021-22118是在Spring Boot中发现的一个严重的路径遍历漏洞。这个漏洞使攻击者能够以应用程序的身份访问计算机的敏感文件和数据。

1. 影响的版本

这个漏洞影响了Spring Boot 2.3.02.3.72.4.0至`2.4.3以及2.5.0版本。

2. 漏洞利用原理:

漏洞源于Spring Boot在处理用户输入的URL时,未能正确处理“…/”这种可能引起路径遍历的模式。在Spring Boot应用程序配置了Spring MVC并使用了默认的资源处理时,攻击者可以通过精心构造的URL,访问到应用程序类路径上的文件。这就使得攻击者有可能通过这个漏洞访问和下载敏感文件,或者执行非法操作。

官方的修复方式是发布了新的版本,即Spring Boot 2.3.8、2.4.42.5.1。在这些版本中,官方对路径遍历的处理进行了改进。

具体来说,Spring Boot在处理用户请求的URL时,加强了对“…/”这种可能引起路径遍历的模式的处理。当应用程序检测到请求的URL包含这种模式时,会进行更严格的校验,以防止攻击者利用这种模式来访问应用程序类路径之外的文件或目录。

为了修复这个问题,受影响的用户应尽快将其Spring Boot版本升级到官方发布的新版本。实际上,这也是对待任何软件漏洞的通用策略:一旦发现有漏洞存在,就应该尽快升级到最新的、已修复该漏洞的版本。

3.解决方案

3.1. 方案1

Spring在其2.3.82.4.42.5.1版本中修复了这个漏洞。对于受到影响的用户,推荐尽快升级到这些版本。同时,作为临时措施,可以限制用户能访问的URL,或者在服务器端增加对用户提交的URL进行更严格的校验。

3.2. 方案2

临时解决方案
在Nginx中,你可以使用location指令和rewrite指令来拦截和阻止包含"…/"的请求,以下是一个基本的示例配置:

server {
    listen 80;
    server_name your_domain.com;

    location / {
        if ($request_uri ~* "\.\.\/") {
            return 403;
        }

        proxy_pass http://your_upstream;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

这个配置会监听80端口,并将请求代理到http://your_upstream,如果请求的URI中包含"…/“,Nginx会返回403状态码,即"禁止访问”。

这只是防止路径遍历攻击的一种方法,并不能完全保证安全。因此,升级到没有这个漏洞的Spring
Boot版本,仍然是最安全的解决方案。此外,你还应该定期更新Nginx版本,以应用最新的安全修复。

3. 方案3

在Spring Boot中你可以通过定制一个拦截器来防止路径遍历攻击。拦截器可以在处理请求前对请求的URL进行检查,如果URL包含非法字符(如"…/“或”./"),则可以拒绝该请求。== 这种可能会误拦截,大家使用的时候注意充分测试和考虑各种渠道==
一个简单示例可供参考

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Component
public class PathTraversalInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String uri = request.getRequestURI();
        if (uri.contains("../") || uri.contains("./")) {
            response.sendError(HttpServletResponse.SC_BAD_REQUEST);
            return false;
        }
        return true;
    }
}

需要在一个配置类中将这个拦截器注册到Spring的拦截器链中:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer {

    private final PathTraversalInterceptor pathTraversalInterceptor;

    public WebConfig(PathTraversalInterceptor pathTraversalInterceptor) {
        this.pathTraversalInterceptor = pathTraversalInterceptor;
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(pathTraversalInterceptor);
    }
}

这样,Spring将会在处理每个请求前,先执行PathTraversalInterceptorpreHandle方法来检查请求的URL。

这种方法 也只能作为临时的解决方案,它不能替代升级Spring
Boot到没有该漏洞的版本。因为攻击者可能会使用编码绕过你的检查,而升级Spring Boot可以彻底修复该漏洞。文章来源地址https://www.toymoban.com/news/detail-679016.html

到了这里,关于Spring Boot存在路径遍历漏洞CVE-2021-22118的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【漏洞复现】Apache_HTTP_2.4.50_路径穿越漏洞(CVE-2021-42013)

    感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规 说明 内容 漏洞编号 CVE-2021-42013 漏洞名称 Apache HTTP_2.4.50_路径穿越漏洞 漏洞评级 高危 影响范围 2.4.49 2.4.50 漏洞描述 CVE-2021-42013是由CVE-2021-41773的不完整修复导致的漏洞,攻击者可以使用路径遍历攻击将

    2024年02月05日
    浏览(34)
  • Jeecg-Boot 存在前台SQL注入漏洞(CVE-2023-1454)

    微信公众号搜索:南风漏洞复现文库 南风网络安全公众号首发 eecgBoot是一款基于BPM的低代码平台!前后端分离架构 SpringBoot 2.x,SpringCloud,Ant DesignVue,Mybatis-plus,Shiro,JWT,支持微服务。强大的代码生成器让前后端代码一键生成,实现低代码开发#x

    2024年02月06日
    浏览(156)
  • log4j2漏洞CVE-2021-44228复现笔记(纯步骤过程,没有复杂的知识点)

    前言: Apache Log4j 2 是对 Log4j 的升级,它比其前身 Log4j 1.x 提供了显着改进,并提供了 Logback 中可用的许多改进,同时修复了 Logback 架构中的一些固有问题。 2021 年 12 月,在 Apache Log4j2 中发现了一个 0-day 漏洞。Log4j 的 JNDI 支持并没有限制可以解析的名称。一些协议像rmi:和ld

    2024年02月12日
    浏览(46)
  • 【高危】Spring Boot在Cloud Foundry中部署存在路由限制绕过风险(CVE-2023-20873)

    Spring Boot是用于构建Java应用程序的框架,Cloud Foundry是用于部署和管理应用程序的云平台,/cloudfoundryapplication也会路由至Spring Boot actuator。 当 Spring Boot 的受影响版本部署在 Cloud Foundry 上且具有处理 /cloudfoundryapplication/** 请求的代码时(如/** ),则可能绕过路由限制访问到actuator,

    2024年02月01日
    浏览(69)
  • Apache(2.4.49 2.4.50)--目录遍历--命令执行--(CVE-2021-42013)&&(CVE-2021-41773)

    采用Vulfocus靶场环境进行复现,搭建操作和文章参考具体搭建教程参考vulfocus不能同步的解决方法/vulfocus同步失败。 Apache HTTP Server是美国阿帕奇(Apache)基金会的一款开源网页服务器。该服务器具有快速、可靠且可通过简单的API进行扩充的特点,发现 Apache HTTP Server 2.4.50 中针

    2024年02月08日
    浏览(42)
  • Spring boot使用Kafka Java反序列化漏洞 CVE-2023-34040

    背景:公司项目扫描到 Spring-Kafka上使用通配符模式匹配进行的安全绕过漏洞 CVE-2023-20873 中等风险 | 2023年8月23日 | CVE-2023-34040 在Spring for Apache Kafka 3.0.9及更早版本以及2.9.10及更早版本中,存在可能的反序列化攻击向量,但只有在应用了不常见的配置时才会出现。攻击者必须在

    2024年02月07日
    浏览(51)
  • CVE-2021–26855与CVE-2021–27065漏洞分析及复现

    文章首发先知社区:https://xz.aliyun.com/t/10098 微软在上半年三月披露了关于Exchange邮件服务器 CVE-2021–26855 (SSRF)与 CVE-2021–27065 (任意文件写入)的漏洞,这两个漏洞配合可以造成未授权的webshell写入,是非常严重的高危漏洞。漏洞刚出来那会儿并未注意,正好前两天4哥在群里发了个关

    2024年02月07日
    浏览(43)
  • CVE-2021-4034漏洞原理解析

    本篇文章主要叙述CVE-2021-4034漏洞,该漏洞影响的linux发行版众多,例如:Ubuntu、CentOS、Debian等等,该漏洞为Linux系统本地提权漏洞,利用脚本已经公开,利用简单且稳定,脚本地址:Github 当攻击者获取目标系统普通用户权限时,利用该脚本即可直接获得root权限,该漏洞的主要

    2023年04月12日
    浏览(42)
  • 漏洞修复--OpenSSH权限提升漏洞(CVE-2021-41617)

    官方已发布安全版本修复漏洞,腾讯安全专家建议受影响的用户请尽快更新至安全版本。 安全版本:OpenSSH 8.8 用户可根据所使用的发行版本,升级修复。 查看OpenSSH版本:rpm -qa | grep openssh 升级OpenSSL版本:yum -y install openssh centos7 用户,建议升级到如下版本:openssh-7.4p1-22.el7

    2024年02月15日
    浏览(42)
  • Weblogic漏洞 CVE-2021-2109 处理

    好记忆不如烂笔头,能记下点东西,就记下点,有时间拿出来看看,也会发觉不一样的感受. 目录 一、前言 二、影响版本 三、漏洞查阅 四、漏洞修复 4.1 补丁包下载  4.2 安装补丁包  4.3 具体操作 oracl 早就发布了weblogic的漏洞信息,但是因为各种原因没有及时处理(内网环境

    2024年02月04日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包