0x1
由于漏洞接口为/data/sys-common/treexml.tmpl,推测接口进入的uri为/data/sys-common/treexml,需要在源码中进行定位该接口的处理流程
对源码jar文件进行反编译,并定位到接口所在位置的源码,分析如下:
在datacontroller类中找到/data/sys-common/该接口相关处理逻辑,如下图所示
在164行定位到具体treexml流程如下:
代码逻辑为从http请求包中获取s_bean,并判断是否为空,为空则输出“参数s_bean不能为空!”,接着通过s_bean参数的值获取具体的类,此处的类为RuleFormulaValidate,调用其的getDataList方法,并将请求体的内容作为参数传递
0x2
定位到具体类RuleFormulaValidate的getDataList方法
发现获取了请求包中的script参数,并创建了RuleEngineParser类,使用其parseValueScript方法对script参数进行处理。
0x3
跟进RuleEngineParser的parseValueScript方法,如下
对传递进来的script参数进行一系列处理(删除空格等等),最终把script参数内容作为java代码通过eval函数去执行,最终导致rce。
0x4
蓝凌之前也报了一个漏洞也是和这个类似都是公式编辑器导致的,不过那个是通过ssrf那个漏洞去越权调用的。
后续蓝凌对公式编辑器这个功能添加了黑名单。