【最新漏洞预警】CVE-2021-45029 Apache ShenYu Groovy&SpEL表达式注入漏洞分析与复现

admin 2022年3月2日09:04:57评论1 views字数 1584阅读5分16秒阅读模式

关注公众号回复“漏洞”获取研究环境或工具

前面公众号已经给小伙伴们分享过一个Apache ShenYu认证绕过漏洞CVE-2021-37580:

CVE-2021-37580

QCyber,公众号:且听安全【最新漏洞预警】CVE-2021-37580 Apache ShenYu 管理员认证绕过漏洞分析
漏洞信息

ShenYu(原名 Soul)是一款高性能,响应式的网关,同时也是应用于所有微服务场景的,可扩展、高性能、响应式的 API 网关解决方案。

Apache官方漏洞通报:

【最新漏洞预警】CVE-2021-45029 Apache ShenYu Groovy&SpEL表达式注入漏洞分析与复现

Apache ShenYu v2.4.0和v2.4.1版本存在Groovy&SpEL表达式注入漏洞。

环境搭建

参考

https://www.bookstack.cn/read/apache-shenyu-2.4.0-zh/d05c2399aa8f5fff.md

采用本地部署的方式。拉取漏洞版本导入idea,maven自动完成依赖项下载安装。工程目录结构如下:

【最新漏洞预警】CVE-2021-45029 Apache ShenYu Groovy&SpEL表达式注入漏洞分析与复现

提供web服务的接口包括2个,分别是`shenyu-admin`和`shenyu-bootstrap`。`shenyu-admin`是后台程序,默认端口是`9095`:

【最新漏洞预警】CVE-2021-45029 Apache ShenYu Groovy&SpEL表达式注入漏洞分析与复现

`shenyu-bootstrap`服务默认端口是`9195`:

【最新漏洞预警】CVE-2021-45029 Apache ShenYu Groovy&SpEL表达式注入漏洞分析与复现

漏洞分析

通过对比分析,发现新版本直接删除了`Groovy`和`SpEL`插件。我们以`SpEL`插件为例,首先定位`SpEL`解析点`org.springframework.expression.spel.standard.SpelExpressionParser`的父类`TemplateAwareExpressionParser`,查看表达式解析函数`parseExpression`被调用情况:

【最新漏洞预警】CVE-2021-45029 Apache ShenYu Groovy&SpEL表达式注入漏洞分析与复现

大部分调用都是用于进行Test测试,最终定位一个潜在调用点位于`org.apache.shenyu.plugin.base.AbstractShenyuPlugin#execute`函数:

【最新漏洞预警】CVE-2021-45029 Apache ShenYu Groovy&SpEL表达式注入漏洞分析与复现

`AbstractShenyuPlugin`是插件的基类。在测试过程中,当我们访问`shenyu-bootstrap`服务(端口为`9195`)时,程序必然会进入`AbstractShenyuPlugin#execute`函数,通过调试发现,在遍历插件过程中默认情况下只有`context_path`和`divide`这2个插件经过`obtainPluginData`函数处理后返回非空,并且进入`if`条件,而要进入潜在触发点`matchSelector`还必须保证插件存在`Selector`配置。

我们首先需要在`shenyu-admin`服务(端口为`9095`)中进行插件的配置。我们这里选择对插件`divide`添加`Selector`:

【最新漏洞预警】CVE-2021-45029 Apache ShenYu Groovy&SpEL表达式注入漏洞分析与复现

【最新漏洞预警】CVE-2021-45029 Apache ShenYu Groovy&SpEL表达式注入漏洞分析与复现

回顾前面的调用栈截图,因为需要经过`AndMatchStrategy#match`处理,所以上面的`matchType`配置为`and`。

接下来重启`shenyu-bootstrap`服务,并构造如下请求:

/new%20java.lang.ProcessBuilder%28%22calc%22%29.start%28%29

顺利进入断点:

【最新漏洞预警】CVE-2021-45029 Apache ShenYu Groovy&SpEL表达式注入漏洞分析与复现

往下走进入`SpEL`表达式注入漏洞触发点:

【最新漏洞预警】CVE-2021-45029 Apache ShenYu Groovy&SpEL表达式注入漏洞分析与复现

实现RCE:

【最新漏洞预警】CVE-2021-45029 Apache ShenYu Groovy&SpEL表达式注入漏洞分析与复现

小结

配置`Groovy`插件同样可以触发RCE,这里不再赘述,有兴趣的小伙伴可以自行研究。同时,结合CVE-2021-37580管理员认证绕过漏洞,可以达到匿名RCE的效果。

由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。

点关注,不迷路!

【最新漏洞预警】CVE-2021-45029 Apache ShenYu Groovy&SpEL表达式注入漏洞分析与复现

关注公众号回复“漏洞”获取研究环境或工具

原文始发于微信公众号(且听安全):【最新漏洞预警】CVE-2021-45029 Apache ShenYu Groovy&SpEL表达式注入漏洞分析与复现

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月2日09:04:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【最新漏洞预警】CVE-2021-45029 Apache ShenYu Groovy&SpEL表达式注入漏洞分析与复现http://cn-sec.com/archives/810283.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息