CVE-2022-22965 Spring Framework 任意文件写入漏洞

2024-03-07 1,047 0

简介

Spring Framework 是 Spring 里面的一个基础开源框架,主要用于 JavaEE 的企业开发。

前置知识

SpringMVC参数绑定

为了方便编程,SpringMVC 支持将 HTTP 请求中的的请求参数或者请求体内容,根据 Controller 方法的参数,自动完成类型转换和赋值。Controller 方法可以直接使用这些参数,避免了需要编写大量的代码从HttpServletRequest 中获取请求数据以及类型转换。同时,SpringMVC 支持多层嵌套的参数绑定。

Java Bean PropertyDescriptor

PropertyDescriptor 是 JDK 自带的 java.beans 包下的类,意为属性描述器,用于获取符合 Java Bean 规范的对象属性和 get、set 方法。

Spring BeanWrapperImpl

在 Spring 中,BeanWrapper 接口是对 Bean 的包装,定义了大量可以非常方便的方法对 Bean 的属性进行访问和设置。BeanWrapperImpl 类是 BeanWrapper 接口的默认实现,BeanWrapperImpl.wrappedObject 属性即为被包装的 Bean 对象,BeanWrapperImpl 对 Bean 的属性访问和设置最终调用的是 PropertyDescriptor。

Tomcat AccessLogValve 和 access_log

Tomcat 的 Valve 用于处理请求和响应,通过组合了多个 Valve 的 Pipeline,来实现按次序对请求和响应进行一系列的处理。其中 AccessLogValve 用来记录访问日志 access_log。Tomcat 的 server.xml 中默认配置了AccessLogValve,所有部署在 Tomcat 中的 Web 应用均会执行该 Valve。

配置文件中的重要属性 class.module.classLoader.resources.context.parent.pipeline.first.pattern:Tomcat日志文件的文件内容 class.module.classLoader.resources.context.parent.pipeline.first.suffix:Tomcat日志文件的文件后缀 class.module.classLoader.resources.context.parent.pipeline.first.directory:Tomcat日志文件的存放路径 class.module.classLoader.resources.context.parent.pipeline.first.prefix:Tomcat日志文件的文件名 class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat:Tomcat日志文件的日期后缀(空值即可)

漏洞概述

旧版本的 Spring Framework 中存在任意文件写入漏洞,被利用会导致 RCE。

漏洞原理

SpringMVC 支持将 HTTP 请求中的的请求参数或者请求体内容,根据 Controller 方法的参数,自动完成类型转换和赋值,同时 SpringMVC 支持多层嵌套的参数绑定。攻击者通过 HTTP 请求修改日志文件的文件名、文件内容、文件后缀、文件存放路径参数的值,从而在服务器生成木马文件。

影响版本

JDK 版本:JDK 9+

Spring Framework 版本:

Spring Framework 5.3.X < 5.3.18

Spring Framework 5.2.X < 5.2.20

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

中间件:Tomcat

漏洞复现

环境搭建

下载 Tomcat 9.0.60

下载地址:https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.60/bin/

解压即可使用

部署 WAR 包

下载地址:https://pan.baidu.com/s/1MHQkPA0kvdhyTR0sXToPFQ?pwd=squ5

将提前下载好的项目 war 包放置在 ~\apache-tomcat-9.0.60\webapps 目录下。

先将该目录下的ROOT文件夹删除,再将下载后的项目war包放置于该目录,并更改名为ROOT.war。

开启Tomcat

启动文件 startup.bat 在 ~\apache-tomcat-9.0.60\bin 目录下,直接双击启动。

运行框中出现Spring字样,则代表项目war包部署成功,并且停在“毫秒后服务器启动”便代表Tomcat运行成功。

PS:启动文件中文乱码

修改 ~\apache-tomcat-9.0.60\conf 目录下 logging.properties 文件

将所有的 UTF-8 修改为 GBK 即可

再次双击启动即可

漏洞利用

访问目标网站

访问网址:http://IP:8080

运行EXP文件

下载地址:https://pan.baidu.com/s/1cLwdSmQKclc9xqRy6rTPlA?pwd=g6tt

命令:python exploit.py --url http://IP:8080/

文件执行成功,并生成木马文件 xiaoyuan.jsp,木马参数为 cmd。

挂马成功!

修复建议

  1. 将Spring框架升级到最新版本;
  2. 降低JDK版本至JDK8;
  3. 将Tomcat升级至最新版本;
  4. 利用WAF、IPS等应用层的入侵检测设备,针对目前公开的EXP是通过POST上传jsp文件,参数中都带有class、classloader等字段,进行关键字过滤;

4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

办事处网络安全监控与事件响应;国外员工终端安全性怎么保障 | FB甲方群话题讨论
拿不下总统之位,那就用热加载拿下验证码识别与爆破好了!
Sooty:一款SoC分析一体化与自动化CLI工具
shiro CVE-2016-6802 路径绕过(越权)
Apache Solr 身份验证绕过漏洞(CVE-2024-45216)详解
llama_index的CVE-2024-4181漏洞根因分析

发布评论