登录后更精彩...O(∩_∩)O...
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Spring Cloud Function SPEL表达式注入漏洞(CVE-2022-22963)
1.漏洞描述
Spring Cloud 中的serveless框架的SpringCloudFunction是SpringBoot开发的一个Servless中间件(FAAS),支持基于SpEL的函数式动态路由。当Spring Cloud Function 启用动态路由functionRouter时, RoutingFunction 类的 apply 方法将HTTP请求头spring.cloud.function.routing-expression参数当做SPEL表达式进行处理,造成Spel表达式注入,攻击者可通过该漏洞远程执行任意指令。
简单了解了一下FaaS的的函数交付模式,和之前研究的容器安全场景下的微服务架构非常的契合,以往的大多数环境主要通过虚拟机交付逐渐演变了成了VPS、容器、API到现在的函数即服务;资产被更加充分的利用。
2.影响版本
3.0.0 <= Spring Cloud Function 版本 <= v3.2.2(commit dc5128b之前)
3.POC和EXP
下载地址:https://github.com/chaosec2021/EXP-POC/tree/main/Spring-cloud-function-SpEL-RCE
4.漏洞环境搭建
本次环境使用docker+vulhub搭建,进入vulhub/spring/CVE-2022-22963目录,执行docker-compose up –d安装
端口默认8080,访问Spring Web页面
直接访问对应8080端口,利用BP抓包改包即可
5.漏洞复现使用POC脚本检测,可以批量检测
创建url.txt,内容为http://10.10.3.69:8080/
使用exp脚本反弹shell
Kali开启监听
反弹shell
6.修复建议
官方目前发布了修复此漏洞的 commit:https://github.com/spring-cloud/spring-cloud-function/commit/0e89ee27b2e76138c16bcba6f4bca906c4f3744f,可下载官方的修复代码重新编译打包。
官方补丁:
spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/RoutingFunction.java
private final SimpleEvaluationContext headerEvalContext = SimpleEvaluationContext.forPropertyAccessors(DataBindingPropertyAccessor.forReadOnlyAccess()).build();
自己排查建议
1、添加一个isViaHeader
为true时:headerEvalContext = SimpleEvaluationContext
为false时:evalContext = new StandardEvaluationContext
参考: https://blog.csdn.net/senior_artist/article/details/124266115
|