SmartBi后台远程代码执行漏洞简单分析

admin 2026-05-23 04:46:34 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文分析了SmartBi后台存在的远程代码执行漏洞,影响版本为Smartbi≤11.0.99471.25193。通过代码审计发现MetricsModelForVModule类中的checkExpression方法使用ScriptEngineManager执行用户输入的JavaScript代码,存在安全风险。文章提供了环境搭建步骤和漏洞复现方法,并指出该漏洞可导致命令执行。 综合评分: 72 文章分类: 漏洞分析,代码审计,WEB安全,应用安全,安全工具


cover_image

SmartBi后台远程代码执行漏洞简单分析

原创

莫大130 莫大130

安全逐梦人

2026年5月22日 07:17 云南

在小说阅读器读本章

去阅读

简单复现一下SmartBi漏洞

影响版本Smartbi <= 11.0.99471.25193

环境搭建

需要的环境

  • • 源代码一套(最后给出源码)
  • • sqlserver 2016

源码文件结构

运行tomcat\bin\startup.cmd ,环境就会启动,第一次运行会要求填入sqlserve数据库账户密码

代码分析

分析jar

搜索jar中存在的关键字 MetricsModelForVModule 和 checkExpression ,Smartbi-SmartbixSmartbi.jar 中发现该类。

使用jd-gui反编译Smartbi-SmartbixSmartbi.jar

分析触发漏洞点

checkExpression 方法 使用了 ScriptEngineManager类 ,ScriptEngine 是一个标准的API(定义在 javax.script 包中),它允许Java程序在运行时嵌入、解析和执行用其他脚本语言(如JavaScript, Python, Ruby等)编写的代码。

&nbsp;&nbsp;public&nbsp;Boolean&nbsp;checkExpression(String nameExpression)&nbsp;{
&nbsp; &nbsp; StateHolder.toSmartbiX();
&nbsp; &nbsp;&nbsp;ScriptEngineManagerengineManager=newScriptEngineManager();
&nbsp; &nbsp;&nbsp;ScriptEngineengine=&nbsp;engineManager.getEngineByName("js");
&nbsp; &nbsp;&nbsp;try&nbsp;{
&nbsp; &nbsp; &nbsp; nameExpression = nameExpression.replaceAll("\\[[\\u4e00-\\u9fa5_ a-zA-Z0-9.]*\\]",&nbsp;"(6)");
&nbsp; &nbsp; &nbsp; engine.eval(nameExpression);
&nbsp; &nbsp; }&nbsp;catch&nbsp;(ScriptException e) {
&nbsp; &nbsp; &nbsp;&nbsp;return&nbsp;Boolean.valueOf(false);
&nbsp; &nbsp; }
&nbsp; &nbsp;&nbsp;return&nbsp;Boolean.valueOf(true);
&nbsp; }

ScriptEngine.eval() 函数是一个极其危险的函数,会导致命令执行漏洞。

漏洞复现

后台回复: 20250827

参考

  • • https://mp.weixin.qq.com/s/aIyGt5OKlYCL-NPfd0G2Jw?scene=1&click_id=24
  • • https://mrxn.net/jswz/smartbi-authcation-bypass-rce.html

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:安全逐梦人 莫大130 莫大130《SmartBi后台远程代码执行漏洞简单分析》

评论:0   参与:  0