文章总结: 本文分析了SmartBi后台存在的远程代码执行漏洞,影响版本为Smartbi≤11.0.99471.25193。通过代码审计发现MetricsModelForVModule类中的checkExpression方法使用ScriptEngineManager执行用户输入的JavaScript代码,存在安全风险。文章提供了环境搭建步骤和漏洞复现方法,并指出该漏洞可导致命令执行。 综合评分: 72 文章分类: 漏洞分析,代码审计,WEB安全,应用安全,安全工具
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等)编写的代码。
public Boolean checkExpression(String nameExpression) {
StateHolder.toSmartbiX();
ScriptEngineManagerengineManager=newScriptEngineManager();
ScriptEngineengine= engineManager.getEngineByName("js");
try {
nameExpression = nameExpression.replaceAll("\\[[\\u4e00-\\u9fa5_ a-zA-Z0-9.]*\\]", "(6)");
engine.eval(nameExpression);
} catch (ScriptException e) {
return Boolean.valueOf(false);
}
return Boolean.valueOf(true);
}
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后台远程代码执行漏洞简单分析》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论