Spring RCE漏洞目录

  • Spring RCE漏洞
    • 一、漏洞概况与影响
    • 二、Spring动态参数绑定
    • 三、漏洞复现
    • 四、漏洞原理
    • 五、漏洞排查和修复

一、漏洞概况与影响

CVE编号:CVE-2022-22965

受影响范围:

  • Spring Framework 5.3.X < 5.3.18
  • Spring Framework 5.2.X < 5.2.20
  • JDK >=9
  • 使用Tomcat中间件且开启了Tomcat日志记录的应用系统

二、Spring动态参数绑定

将HTTP请求中的的请求参数或者请求体内容,根据Controller方法的参数,自动完成类型转换和赋值。

PropertyDescriptor类

JDK自带:

作用:自动调用类对象的get/set方法,进行取值和赋值。

BeanWrapperlmpl类

Spring自带:

作用:对Spring容器中管理的对象,自动调用get/set方法,进行取值和赋值。由PropertyDescriptor类包装。

三、漏洞复现

1、在vulhub中开启靶机CVE-2022-22965

2、用python脚本修改Tomcat日志文件

python vulhub_CVE-2022-22965_poc.py --url=http://192.168.142.133:8080

3、利用

http://192.168.142.133:8080/tomcatwar.jsp?pwd=j&cmd=id

四、漏洞原理

因为Spring进行参数绑定的时候会自带一个class属性,可以通过class属性找到其他属性构造一条利用链去修改了Tomcat日志配置文件导致日志文件文件名,文件内容,存储路径被修改成jsp恶意文件,最终导致命令任意执行。

五、漏洞排查和修复

排查:

1、是否启用Spring参数绑定功能

2、JDK版本9+

3、Tomcat部署方式及版本

4、Tomcat Access功能

5、流量分析

6、日志分析

修复:

1、升级Spring

2、升级Tomcat

3、安装安全产品,比如WAF