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

渗透技巧 3年前 (2022) admin
850 0 0

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


前面公众号已经给小伙伴们分享过一个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表达式注入漏洞分析与复现

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...