spring cloud function 最新3.2.3 版本 trick

admin 2022年4月1日00:24:22评论267 views字数 955阅读3分11秒阅读模式

之前3.0.0.RELEASE <= spring cloud function <=3.2.2 之间的版本存在SPEL注入漏洞,目前官方已经发布了3.2.3版本修复了这个漏洞。

spring cloud function 最新3.2.3 版本 trick


Spring Coud Function 官方在最新版本3.2.3 已经修复了之前的commit为dc5128b 的SPEL注入漏洞,具体代码改动

spring cloud function 最新3.2.3 版本 trick

可以看到重载了functionFromExpression方法,通过判断isViaHeader 执行不同的处理过程,如果为真,就用SimpleEvaluationContext处理,否则才用StandardEvaluationContext 处理

spring cloud function 最新3.2.3 版本 trick


在取Header头中的spring.cloud.function.routing-expression是调用了functionFromExpression(StringroutingExpression, Objectinput, booleanisViaHeader),但是从配置文件中取这个字段的时候还是调用的functionFromExpression(StringroutingExpression, Objectinput)这个方法就是造成SPEL解析命令执行漏洞的关键。

spring cloud function 最新3.2.3 版本 trick


因此理论上只要能够控制functionProperties.getRoutingExpression() 的值应该也能够触发这个漏洞。

进一步看到functionProperties类中的getRoutingExpression()方法

spring cloud function 最新3.2.3 版本 trick


到这里就非常清晰了,因此只要在配置文件中添加

spring.cloud.function.definition=functionRouter

spring.cloud.function.routingExpression=T(java.lang.Runtime).getRuntime().exec("calc")


本次还是用Spring-Cloud-Function SPEL 注入漏洞的一点想法 中的环境,需要将

spring-cloud-starter-function-web 版本改成最新3.2.3版本

spring cloud function 最新3.2.3 版本 trick


访问不存在的路径就可以触发

spring cloud function 最新3.2.3 版本 trick

访问存在的路径反而无法执行命令

spring cloud function 最新3.2.3 版本 trick

原文始发于微信公众号(风藤安全):spring cloud function 最新3.2.3 版本 trick

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月1日00:24:22
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   spring cloud function 最新3.2.3 版本 trickhttps://cn-sec.com/archives/860562.html

发表评论

匿名网友 填写信息