VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现

admin 2025年2月25日13:53:54评论13 views字数 1712阅读5分42秒阅读模式

VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现

点击↑蓝字

关注墨云安全

VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现

漏洞概述

Spring Cloud Function 是基于Spring Boot 的函数计算框架(FaaS),该项目提供了一个通用的模型,用于在各种平台上部署基于函数的软件,包括像 Amazon AWS Lambda 这样的 FaaS(函数即服务,function as a service)平台。它抽象出所有传输细节和基础架构,允许开发人员保留所有熟悉的工具和流程,并专注于业务逻辑。
在版本3.0.0到当前最新版本3.2.2(commit dc5128b),默认配置下,都存在Spring Cloud Function SpEL表达式注入漏洞。
漏洞复现
在IDEA中选择新建项目,然后选择Spring Initializr,输入随机项目名称,然后选择java版本和jdk版本后点击下一步。
VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现
选择Spring WebFunction作为依赖项,点击完成。
VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现
漏洞环境就搭建完成。因当前官方还未发布新版本,所以最新版本3.2.2也是存在漏洞的,若在官方出新版本后想要复现此漏洞,那么需要修改pom中spring-cloud-function-web的版本为3.2.2,如下图所示:
VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现
确认项目中的spring-cloud-function-web是存在漏洞版本后,就可以直接启动项目了,无需进行任何修改。
VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现
然后对本地8080端口发送payload即可。
VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现
漏洞分析
先看git提交记录,https://github.com/spring-cloud/spring-cloud-function/commit/0e89ee27b2e76138c16bcba6f4bca906c4f3744f ,在提交描述中,明确指出修复了RoutingFunction SpEL代码注入漏洞,并且可以看到目前只更新了两个文件,其中一个文件仅为单元测试。
VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现
在测试用例中也清楚写明了漏洞位置以及相关测试Payload。
VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现
通过测试用例可知,在给Spring Cloud Function的web服务发送包的时候,加一个相关的Header信息,然后跟入SpEL表达式即可执行命令。
VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现
在文件org.springframework.cloud.function.context.config.RoutingFunction中,请求进入到apply方法,接着调用了route方法,然后通过判断特定的消息头信息是否为空,如果不为空则调用functionFromExpression方法。
VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现
VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现
因调用到了SpEL对routingExpression进行解析,从而导致了SpEL表达式注入。
VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现
整个逻辑中由于完全信任从最开始传入的header信息,并且在解析SpEL表达式时候的evalContext使用的是功能更强同时安全隐患较大的StandardEcalutionContext
VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现
在官方最新的修补文件中,可以看到新增了headerEvalContext对象,该对象所对应的是使用了仅支持最基本功能的SimpleEvaluationContext
VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现
且在调用functionFromExpression方法的时候新增了一个isViaHead布尔类型的参数,用来判断该值是否是取自消息的header中,如果是则使用headerEvalContext对象来解析SpEL表达式。
VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现
修复建议
目前SpringCloud Function官方已针对此漏洞进行修复,但还没有发布正式版本,可拉取最新修复代码重新编译打包进行临时修补。
墨云科技建议您在升级前做好数据备份工作,避免出现数据丢失等问题。
官方已发布修复补丁参考地址:https://github.com/spring-cloud/spring-cloud-function/commit/0e89ee27b2e76138c16bcba6f4bca906c4f3744f
VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现

往期回顾

VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现

新型“战争”下的关键信息基础设施安全控制

从网络安全热门岗位看红蓝对抗发展趋势

墨云科技入选网络安全初创企业HOT50

VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现
引领智能网络攻防科技

VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现

点击在看
分享给小伙伴
↓↓点击阅读原文,了解更多墨云信息

原文始发于微信公众号(墨云安全):VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月25日13:53:54
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   VLab实验室 | SpringCloud Function SpEL漏洞环境搭建+漏洞复现https://cn-sec.com/archives/853723.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息