Spring RCE漏洞
Spring RCE漏洞
一、漏洞概况与影响
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