一、免责声明
本帖旨在于技术交流,请勿用于任何不当用途!由此而引起的一切不良后果均与本人无关!
二、项目简介
项目名:mldong
gitee: https://gitee.com/mldong/mldong.git
该项目是一个自研开源工作流引擎,已经连续数周拿下Gitee热门项目榜首。
三、漏洞分析
1.锁定危险函数eval()
com/mldong/modules/wf/engine/model/DecisionModel.java:28
根据以往经验,eval()等方法通常涉及注入问题,但实际情况需要进一步确认。
2.eval()函数分析
/hutool/hutool-all/5.8.4/hutool-all-5.8.4.jar!/cn/hutool/extra/expression/ExpressionUtil.class:20
通过代码跟踪发现,eval方法是根据ExpressionEngine接口实现得来的,然而最终是由哪个表达式解析组件去实现却并不确定。可能是SPEL,也可能是MVEL或者其它。
我们发现该方法来自hutool组件,接下来我们先对hutool进行简单了解,这样才有利于我们更好的理解代码。
3.hutool简介
Hutool是一个Java工具类库,从图中可以知道第10个模块extra是一个可拓展模块,而我们的eval()方法正是来自这个模块。难道这个方法