CVE-2023-27524 Apache Superset Auth Bypass|附检测工具

news2024/10/7 8:00:27

漏洞描述

Apache Superset是一个开源数据可视化和探索工具。Apache Superset 版本(包括 2.0.1)中的会话验证攻击。没有根据安装说明更改默认配置的SECRET_KEY的安装允许攻击者验证和访问未经授权的资源。这不会影响更改了SECRET_KEY配置默认值的Superset管理员。

漏洞影响

受影响版本
Apache Superset <= 2.0.1
不受影响版本
Apache Superset >= 2.1.0

CVSS 评分
在这里插入图片描述

漏洞复现

在网络应用中session被称为“会话控制”,Session对象存储特定用户会话所需的属性及配置信息。简单来说session就是浏览器与服务器交互的门禁,通过session可以验证访问者的身份信息,大多数的session是保存在服务器端的,但是也有少部分保存在客户端的session,比如下面要说的flask框架。
Apache Superset是基于python中的flask web框架编写的,flask是一个python轻量级web框架,它的session存储在客户端的cookie字段中。为了防止session篡改,flask进行了如下的处理(代码存放在flask模块中sessions.py文件中):

"""The default session interface that stores sessions in signed cookies
through the :mod:`itsdangerous` module.
"""

#: the salt that should be applied on top of the secret key for the
#: signing of cookie based sessions.
salt = "cookie-session"
#: the hash function to use for the signature. The default is sha1
digest_method = staticmethod(hashlib.sha1)
#: the name of the itsdangerous supported key derivation. The default
#: is hmac.
key_derivation = "hmac"
#: A python serializer for the payload. The default is a compact
#: JSON derived serializer with support for some extra Python types
#: such as datetime objects or tuples.
serializer = session_json_serializer
session_class = SecureCookieSession

def get_signing_serializer(self, app):
if not app.secret_key:
return None
signer_kwargs = dict(
key_derivation=self.key_derivation, digest_method=self.digest_method
)
return URLSafeTimedSerializer(
app.secret_key,
salt=self.salt,
serializer=self.serializer,
signer_kwargs=signer_kwargs,
)
……
……

seesion通过序列化对键以及键值进行进行序列化,通过hmacsha1进行签名,最终生成一串如下字符串:

eyJjc3JmX3Rva2VuIjoiNzY2ZGY1ZDJlNDAyYjg2NWY1ZmM4NjBlYTBkMjUzY2Y3YzE2YjIwNiIsImxvY2FsZSI6ImVuIn0.ZFXM4g.t0nkAofl_yo0bvR2ObbFVWpW5FE

通过’.'隔开的3段内容,第一段其实就是base64 encode后的内容,但去掉了填充用的等号,若decode失败,自己需要补上1-3个等号补全。中间内容为时间戳,在flask中时间戳若超过31天则视为无效。最后一段则是安全签名,将sessiondata,时间戳,和flask的secretkey通过sha1运算的结果。服务端每次收到cookie后,会将cookie中前两段取出和secretkey做sha1运算,若结果与cookie第三段不一致则视为无效。
Session生成的具体流程为:json->zlib->base64后的源字符串.时间戳.hmac签名信息。
该漏洞的本质是SECRET_KEY的泄露。Flask-unsign工具可以爆破会话中的session是否是由弱签名SECRET_KEY加密生成的。
在这里插入图片描述
在这里插入图片描述
该漏洞作者在2021年就在Superset配置指南
(https://superset.apache.org/docs/installation/configuring-superset/)中发现了默认的SECRET_KEY:
\x02\x01thisismyscretkey\x01\x02\e\y\y\h,现在已经换成了YOUR_OWN_RANDOM_GENERATED_SECRET_KEY。
在这里插入图片描述
更多key:
在这里插入图片描述
在这里插入图片描述
收集了一下(有更多欢迎留言补充):

\x02\x01thisismyscretkey\x01\x02\\e\\y\\y\\h(version < 1.4.1)
CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET(version >= 1.4.1)
thisISaSECRET_1234(deployment template)
YOUR_OWN_RANDOM_GENERATED_SECRET_KEY(documentation)
TEST_NON_DEV_SECRET(docker compose)
CHANGE_ME_SECRET_KEY

可以将上述key添加到flask-unsign字典中进行爆破使用,位置(执行flask-unsign-wordlist.exe命令可查看):

D:\python39\lib\site-packages\flask_unsign_wordlist\wordlists\all.txt

攻击者可以利用爆破出来的key伪造一个user_id值设置为1的会话cookie,以管理员身份登录。在浏览器的本地存储中设置伪造的会话 cookie 并刷新页面允许攻击者以管理员身份访问应用程序。SQL Lab接口允许攻击者对连接的数据库运行任意SQL语句。根据数据库用户权限,攻击者可以查询、修改和删除数据库中的任何数据,以及在数据库服务器上执行远程代码。
在这里插入图片描述
在这里插入图片描述
也可以使用生成的session访问/api/v1/database/1来验证漏洞是否存在。
在这里插入图片描述
在这里插入图片描述

漏洞修复

官方升级

目前官方已发布安全版本修复此漏洞,建议受影响的用户及时升级防护:
https://downloads.apache.org/superset/

其他防护措施

若用户无法对产品进行升级,可参考以下链接,通过修改SECRET_KEY的默认值来规避该漏洞:
https://superset.apache.org/docs/installation/configuring-superset/#secret_key-rotation

文中所涉及到的检测工具关注vx公众号401SecNote后台回复 CVE-2023-27524 获取。

在这里插入图片描述
注:文章所涉及的技术内容仅供参考,利用本文所提供的信息造成的直接或间接后果和损失,均由使用者自行承担。本文所提供的工具仅用于学习,禁止用于其他非法用途!使用该工具造成的一切后果均由使用者自行承担。如涉及侵权请联系后台进行删除。

参考链接:
https://blog.csdn.net/weixin_44140395/article/details/120602953
https://blog.csdn.net/weixin_41790086/article/details/107554397
https://www.horizon3.ai/cve-2023-27524-insecure-default-configuration-in-apache-superset-leads-to-remote-code-execution/
https://github.com/projectdiscovery/nuclei-templates/pull/7125/commits/9e38e8cffb068786bb87d5629cb468960968ff81
http://blog.nsfocus.net/apache-supersetcve-2023-27524/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/502429.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA快速开发框架 一键生成表单模板代码

从计算机诞生开始&#xff0c;虽然编程的形式随着硬件及软件的不断进步而不停迭代&#xff0c;但是从事计算机技术行业的人员始终与编写代码的任务紧密联系在一起。因此如何提高软件开发的效率和质量&#xff0c;一直是软件工程领域的重要问题之一。 这一方面是由于在不同软件…

MQ(面试问题简析)学习笔记

文章目录 1. 为什么使用消息队列2. 消息队列有什么优缺点3. Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点&#xff1f;4. 如何保证消息队列的高可用4.1 RabbitMQ 的高可用性4.2 Kafka 的高可用性 5. 如何保证消息不被重复消费&#xff08;如何保证消息消费的幂等性&#…

1、Cloudsim和Workflowsim仿真环境下载

1、WorkflowSim的下载和安装 workflowsim下载地址 2、Cloudsim的下载和安装 cloudsim官网 cloudsim4.0安装包地址 2、Cloudsim如何工作 Cloudsim如何工作&#xff1f;原版内容 cloudsim配置 下面这是CloudsimExamples1的代码&#xff1a; package org.cloudbus.…

论文导读 | 大语言模型上的精调策略

随着预训练语言模型规模的快速增长&#xff0c;在下游任务上精调模型的成本也随之快速增加。这种成本主要体现在两方面上&#xff1a;一&#xff0c;计算开销。以大语言模型作为基座&#xff0c;精调的显存占用和时间成本都成倍增加。随着模型规模扩大到10B以上&#xff0c;几乎…

SpringBoot启用web模拟测试(一)

添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.5.10</version> </dependency> 模拟端口 虚拟请求测试 Slf4j RestController RequestMappin…

java后端面试大全,java后端面试宝典

JAVA_LEARNING_CONTENT JAVA后端面试大全&#xff0c;java后端面试宝典 一个分布式锁的解决方案&#xff0c;另一个是分布式事务的解决方案 -2 flink 链接&#xff1a;flink参考文章 -1 linux of view 参考链接&#xff1a; linux常见面试题 linux查看占用cup最高的10个进…

机电设备故障ar远程维修软件缩短生产线中断时间

电机属于工业生产中的关键设备之一&#xff0c;处于长期运转阶段&#xff0c;因此电机容易出现故障&#xff0c;极易增加企业生产成本&#xff0c;影响生产计划。引进AR远程维修技术效果显著。 AR远程维修技术是一种将虚拟信息与实际场景相结合的技术。当电机出现故障时&#x…

基于AT89C51单片机的交通灯设计与仿真

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/87763760?spm1001.2014.3001.5503 源码获取 主要内容&#xff1a; 设计一个能够控制十二盏交通信号灯的模拟系统,:利用单片机的定时器定时&#xff0c;令十字路口…

云原生-kubesphere容器平台

https://www.yuque.com/leifengyang/oncloud/gz1sls 多租户&#xff1a;可以用户自定义注册进来&#xff0c;可以给用户分配一些集群操作权限&#xff0c;来操作集群 多集群&#xff1a;有生产环境的k8s集群和测试环境的k8s集群。这多个集群都是需要管理的&#xff0c;可以安装…

Error: (‘IM002‘, ‘[IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序‘)

这是使用pypyodbc访问access数据库时常见的一个错误。 大致可以分为以下几个原因&#xff1a; 1.驱动程序不全&#xff1b; 2.你的驱动源名称错误&#xff1b; 3.python位数与驱动位数不同&#xff0c;这也可以粗暴的归类为原因1. 那么如何解决&#xff1f; 找到对应的驱…

ce人造指针

人造指针 找出什么访问 重开会改变edi 记录传入的edi 视图 内存区域ctrlr 可读可写 在0079B000前找空的 可以用只读 fullaccess(00xxxxxx,4)有可能处于保护&#xff0c;不起效果 在申请地址造指针 全局用 registersymbol() unregistersymbol(mana_ecx) ceaa od …

谷歌云 | 授权用户访问您在 Cloud Run 上的私有工作负载的 3 种新方法

【本文由 Cloud Ace 云一整理】 越来越多的组织正在Cloud Run上构建应用程序&#xff0c;这是一个完全托管的计算平台&#xff0c;可让您在 Google 的基础架构之上运行容器化应用程序。想想 Web 应用程序、实时仪表板、API、微服务、批量数据处理、测试和监控工具、数据科学推…

【ADS867x】双极输入范围 14 位 500kSPS 4/8 通道、单电源 SAR ADC

器件特性 具有集成模拟前端的 14 位模数转换器 (ADC)具有自动和手动扫描功能的 4 通道、8 通道多路复用器通道独立可编程输入&#xff1a; 10.24V、5.12V、2.56V、1.28V、0.64V10.24V、5.12V、2.56V、1.28V 5V 模拟电源&#xff1a;1.65V 到 5V I/O 电源恒定的阻性输入阻抗&am…

Android Dialog之DialogFragment详解与使用

一、介绍 在Android开发过程中&#xff0c;经常会有弹窗业务&#xff0c;在正常的弹窗业务中&#xff0c;常用到的是Dialog&#xff0c;Dialog的原理也是通过将view&#xff0c;添加到Dialog中。Dialog自身是一个独立的窗口&#xff0c;和Activity一样&#xff0c;有自己的wind…

C++面试题

试题一 请问如下函数调用了什么构造函数和析构函数&#xff0c;以及调用的顺序是什么&#xff1f; 如果 fun函数里写成 return s1 s2 有什么变化&#xff1f; string fun(strings1, string s2) {string tmp s1 s2;return tmp; } int main() {string s fun(s1, s2);retur…

AI来势汹汹,这份「生存计划」请查收!

AIGC即人工智能生产内容&#xff0c;最近可太火了&#xff0c;但是火了这么久&#xff0c;有些人都没明白到底为什么火&#xff1f;甚至不明所以觉得“AI替代XX”&#xff0c;小编认为没必要焦虑&#xff0c;一起来看一下吧。 AI工具们一日千张图、3小时写一本书、2分钟构建一个…

论文导读 | 大语言模型中应用到的强化学习算法

摘要 在最近取得广泛关注的大规模语言模型&#xff08;LLM&#xff09;应用强化学习&#xff08;RL&#xff09;进行与人类行为的对齐&#xff0c;进而可以充分理解和回答人的指令&#xff0c;这一结果展现了强化学习在大规模NLP的丰富应用前景。本文介绍了LLM中应用到的RL技术…

《NFT区块链进阶指南一》Remix部署Solidity ERC721合约(NFT合约)到Etherscan

文章目录 一、部署合约1.1 无构造参数合约部署1.2 有构造参数合约部署 二、合约详情三、部署提示 本篇为NFT区块链高级部分&#xff0c;在阅读之前需了解&#xff1a;Remix、Metamask、Etherscan、Solidity、Openzeppelin、ERC721合约 一、部署合约 1.1 无构造参数合约部署 智…

maven入门学习

简介 maven是基于ant升级的&#xff0c;apache的自动化构建工具、项目管理工具 Maven – Welcome to Apache Maven maven使用pom.xml进行配置 maven项目可以更方便的实现导jar包、拆分项目 idea默认集成了maven 下载安装 下载maven&#xff0c;在官网&#xff08;Maven –…

如何设计电商SPU与SKU表以及相关的表?

一、先了解SPU及SKU的相关概念&#xff1a; 我们在开发电商项目时&#xff0c;必须首先要了解两个概念&#xff0c;SPU与SKU是什么&#xff1f;这也是设计一个好的电商系统的必要前提。商系统实现了什么功能&#xff0c;大数情况下都是和商品模块相关联的。因此商品模块本身的…