CVE-2022-22965 Spring Framework 任意文件写入漏洞
2024-2-22 13:44:52 Author: www.freebuf.com(查看原文) 阅读量:10 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

简介

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等字段,进行关键字过滤;

文章来源: https://www.freebuf.com/vuls/357232.html
如有侵权请联系:admin#unsafe.sh