CVE-2022-22963 Spring Cloud Function SpEL RCE 简单分析
前言
刚曝出来的Spel表达式注入漏洞,这里简单分析一下
漏洞版本
|
|
环境搭建
地址:https://github.com/spring-cloud/spring-cloud-function/tree/v3.2.1/spring-cloud-function-samples/function-sample-pojo
导入idea中,找到SampleApplication
启动即可
漏洞分析
先来看一下diff
明显的SpEL表达式注入点,因为已知怎么利用,直接在代码处打个断点
先来看一下堆栈:
|
|
先进入到org.springframework.cloud.function.web.util.FunctionWebRequestProcessingHelper#processRequest
中,在这里处理request请求,最后进入到apply(input)
中
看一下input的值
其中确实存有post包的内容,继续跟进往下走
会判断targer是否为RoutingFunction,是的话然后进入到org.springframework.cloud.function.context.config.RoutingFunction#route
中
会尝试提取spring.cloud.function.routing-expression
的值,然后进入到org.springframework.cloud.function.context.config.RoutingFunction#functionFromExpression
中
最后到达SpEl表达式,造成注入,全程没有对spring.cloud.function.routing-expression
的值进行任何的防护措施,在diff中对代码进行了以下的修改
当isViaHeader
为true时,会使用SimpleEvaluationContext
去处理请求,从而达到防护的目的
复现结果: