0x01 漏洞介绍
Spring Framework 是一个开源的轻量级J2EE应用程序开发框架。
3月31日,VMware发布安全公告,修复了Spring Framework中的远程代码执行漏洞(CVE-2022-22965)。在 JDK 9 及以上版本环境下,可以利用此漏洞在未授权的情况下在目标系统上写入恶意程序从而远程执行任意代码。
0x02 影响范围
影响组件:org.springframework:spring-beans
影响版本:< 5.3.18 和 < 5.2.20.RELEASE 的Spring框架均存在该漏洞
JDK版本:JDK>=9
部署方式:war包部署在TOMCAT中
0x03 漏洞原理
漏洞爆发之后,在学习大佬的分析之后发现,这个Spring最新0day漏洞其实不是全新的那种新洞,而是CVE-2010-1622这个漏洞的一种绕过情况。
这个CVE-2010-1622漏洞的原因是Spring参数绑定时,可以注入一个Java pojo对象,这个对象可以是恶意的去注册一些敏感tomcat的属性,最后通过修改Tomcat的配置来执行危险操作。
所以最新的CVE-2022-22965漏洞就是绕过了这个限制,可以说是Java 9的环境下坑了Spring一把,JDK9中存在可以绕过黑名单禁用的类,导致了这个漏洞,最后利用方式也就和之前一样了。
下面部分细讲这个问题。
0x04 Spring参数绑定
首先就是先理一下Spring中的参数绑定
简单来说,springmvc中可以自动的去给参数赋值。
例如我们常见的穿参数的方式就是下面这种
http://localhost:8080/spring4shell_war/?name=zzz&age=123