官方通告最近修复了一个未授权漏洞
https://www.smartbi.com.cn/patchinfo
查看解密后的漏洞补丁:通过 RejectRMIPatchRule 拦截了 /vision/IndexServlet 接口下的getSystemConfigService 等方法

在 web.xml 中查找 /vision/IndexServlet 对应的类

IndexServlet 在 init() 时通过 registerServices() 把 IndexService.getInstance() 注册到 Map<String, AbstractIndexService> services,doPost 接收 className/methodName/params 三个参数后用反射在注册的服务上调用任意 public 方法。
smartbi.index.IndexServlet

直接看补丁中的 getSystemConfigService 代码:getSystemConfigService 是个普通的 getter,被 Spring 注入 ISystemConfigService 实例后,序列化时连带它持有的整套 systemConfigs Map 一并吐出。
smartbi.config.ISystemConfigService
根据上述可构造请求:

上述请求泄露的敏感信息有哪个能够被进一步利用?比如获取后台权限(后台注入点多,有权限就能RCE)
在使用 token 登录的代码逻辑中,会使用 parseToken 解出信息,然后调用 loginByToken 判断是否通过校验
smartbi.usermanager.servlet.TokenloginServlet#service
跟进 parseToken,可以看到用的就是上述泄露的 SYSTEM_SECRETKEY
smartbi.usermanager.servlet.TokenloginServlet#parseToken
而在 loginByToken 中只会校验用户名和 timestamp
smartbi.usermanager.servlet.TokenloginServlet#loginByToken
因此只需要解密 SYSTEM_SECRETKEY 就能伪造管理员 token ,后台RCE不再赘述
